»ö« | perl6-projects.org/ | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 17 June 2009.
amoc rakudo: module A { method foo { .say } }; A.new; # null pmc at wrong code 00:31
p6eval rakudo 0e0671: OUTPUT«Null PMC access in getprop()␤in Main (/tmp/IqyHLjRYoI:2)␤»
amoc rakudo: module A { ... } # module NYI ? 00:33
p6eval rakudo 0e0671: OUTPUT«Can't return outside a routine␤in Main (/tmp/CixkB6wUt7:2)␤»
last So, if one wanted to track down why t/01-sanity/07-isa.t is failing with "Method 'succ' not found for invocant of class 'Block'", where would one start looking? 01:06
skids well, first you check rt for already filed bugs. 01:07
last skids: I believe I filed one for it, in fact. 01:09
last www.nntp.perl.org/group/perl.perl6....g4367.html 01:11
I don't see any responses to it, other than my two followups with additional information.
skids well, my build is somewhat custom at the moment, have you asked anyone with a different arch to see if that test is failing for them? 01:13
last I haven't. (Though it also fails for me on x86_64 Linux.) 01:14
skids probably a test that was sacrificed for a feature, then. 01:15
(and will be refixed later)
skids tries to figure out what the deal is with $*IN from the commandline 01:16
last Really? I'd always assumed the "make test" tests were core tests and failures there equated to a broken build.
skids I'm not entirely sure of that. 01:17
But I wouldn't be the one to ask.
skids well, I hand run those tests and they seem to work for me outside prove. 01:20
Unfortunately I think right now my hacking may have broken the test harness, so someone else will need to check. 01:21
lichtkind_ .get returns lines or an iterator? 01:28
last I can verify I get the bug when I run that test on its own, for what it's worth.
skids .get returns the result of an iteration. For file, a line, by default. 01:29
lichtkind_ skids true but what is called iterator :) 01:37
last (Hmmm... all tests pass on my 32-bit Linux box.) 01:40
skids lichtkind_: maybe rephrase the question? 01:50
lichtkind skids: does .lines method return an iterator? 01:51
skids I think the array returned by .lines might be lazy, if that is what you are asking. 01:52
lichtkind skids: yes but people who talked here in #perl 6 used the word iterator which confused me :) 01:53
skids see s07. 01:54
skids lines would likely return the equivalent of @a <== do while (!$f.eof) { $f.get } 01:55
lichtkind skids: i dont see it in svn.pugscode.org/pugs/docs/Perl6/Sp...rators.pod 01:57
skids For what definition of "it"?
skids wonders why S32 says $f.lines[^5] wouldn't be lazy. 01:58
rakudo: my $f = open("/tmp/dict"); $f.get.say; $f.get.say;
p6eval rakudo 0e0671: OUTPUT«operation not permitted in safe mode␤in Main (lib/Safe.pm:25)␤»
skids rakudo: my $f = open("/usr/share/dict/american-english", :rw(Bool::False)); $f.get.say; $f.get.say; 02:01
p6eval rakudo 0e0671: OUTPUT«operation not permitted in safe mode␤in Main (lib/Safe.pm:25)␤»
lichtkind skids: thanks but its not so important have to solve proofreading now :) 02:02
skids hrm, well, what I wanted to demonstrate is that the first .get seems not to actually get.
And, secondly, .get chokes when it gets down to Asunción 02:05
"Malformed UTF-8 string"
lichtkind skids: thanks but i know how they work, i was unshure how thats called :) 02:07
skids no, that's not what I expected to happen, couple of bugs I think.
eternaleye rakudo: my slurpy( *@args ) { }; say &slurpy.count 02:12
p6eval rakudo 0e0671: OUTPUT«Malformed declaration at line 2, near "slurpy( *@"␤in Main (src/gen_setting.pm:0)␤» 02:13
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.count
p6eval rakudo 0e0671: OUTPUT«0␤»
eternaleye Don't I feel dumb!
skids heh. Well that "my" becomes reflex, to be sure :-) 02:14
Just have to train the reflex :-)
eternaleye moritz_: re implementing infix:<...>; what are slurpy generators specced to do? Your sorta-working function would call them with no arguments (if it didn't get weird in the range spec), which doesn't seem very dwimmy to me 02:15
TimToady: See ^^^ for a spec question 02:17
lichtkind good nicht 02:20
night
TimToady eternaleye: I think slurpy should get all the existing values 03:06
zzz & 03:10
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.^methods 03:13
p6eval rakudo 0e0671: OUTPUT«␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.HOW.methods 03:14
p6eval rakudo 0e0671: OUTPUT«too few arguments passed (1) - 3 params expected␤in Main (src/gen_setting.pm:3225)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.WHAT
p6eval rakudo 0e0671: OUTPUT«Sub()␤»
eternaleye rakudo: say Sub.methods.join( " " ); 03:15
p6eval rakudo 0e0671: OUTPUT«Method 'methods' not found for invocant of class ''␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.arity 03:17
p6eval rakudo 0e0671: OUTPUT«0␤»
KyleHa Does that 'bot have any protection against "say 'flood' while 1" ? 03:20
eternaleye KyleHa: It timelimits stuff, and newlines are turned into '␤' symbols rather than sending multiple IRC lines 03:21
KyleHa *nod*
Tene rakudo: say 'flood' while 1
p6eval rakudo 0e0671: 03:21
..OUTPUT«flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤flood␤…
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods
p6eval rakudo 0e0671:
..OUTPUT«!add_param!set_default_param_type!add_implicit_self!make_parameters_rwparamsperlcanisadoes111keyskv21values11111srand1rootsunpolar111111111trans2111111111reverse1111rand11111111111112111111clonedefinedhashitemiteratorprintsaytrueArrayHashIteratorScalarStrblessBUILDBUILDALLCREATEnew…
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods.join( " " ) 03:22
p6eval rakudo 0e0671: OUTPUT«!add_param !set_default_param_type !add_implicit_self !make_parameters_rw params perl can isa does 1 1 1 keys kv 2 1 values 1 1 1 1 1 srand 1 roots unpolar 1 1 1 1 1 1 1 1 1 trans 2 1 1 1 1 1 1 1 1 1 reverse 1 1 1 1 rand 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 clone defined
..hash it…
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods.grep( { $_ !~~ /^\d+$/ } ).join( " " )
p6eval rakudo 0e0671: OUTPUT«Can't set self from this type␤in regex PGE::Grammar::_block74 (/tmp/LPVgfCr3SZ:2)␤called from method Any::grep (/tmp/LPVgfCr3SZ:2)␤called from Main (/tmp/LPVgfCr3SZ:2)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods.grep( { $_ !~~ /\d+/ } ).join( " " ) 03:23
p6eval rakudo 0e0671: OUTPUT«Can't set self from this type␤in regex PGE::Grammar::_block74 (/tmp/hOveSo7goi:2)␤called from method Any::grep (/tmp/hOveSo7goi:2)␤called from Main (/tmp/hOveSo7goi:2)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say grep &slurpy.signature.^methods: { $_ !~~ /\d+/ } 03:24
p6eval rakudo 0e0671: OUTPUT«positional inside named args at position 3␤in Main (src/gen_setting.pm:3225)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods.grep( { $^a !~~ /^\d+$/ } ).join( " " )
p6eval rakudo 0e0671: OUTPUT«!add_param !set_default_param_type !add_implicit_self !make_parameters_rw params perl can isa does keys kv values srand roots unpolar trans reverse rand clone defined hash item iterator print say true Array Hash Iterator Scalar Str bless BUILD BUILDALL CREATE new PARROT
..REJECTS !S…
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.^methods.grep( { $^a !~~ /^\d+$/ } ).reverse.join( " " ) 03:25
p6eval rakudo 0e0671: OUTPUT«WALK !.= !.^ !MANY_DISPATCH_HELPER !.+ !.* !.? !rebox !cloneattr WHICH WHERE WHENCE !STORE REJECTS PARROT new CREATE BUILDALL BUILD bless Str Scalar Iterator Hash Array true say print iterator item hash defined clone rand reverse trans unpolar roots srand values kv keys does
..isa …
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature
p6eval rakudo 0e0671: OUTPUT«Signature()<0xb688b808>␤» 03:26
KyleHa These are methods that the slurpy sub implicitly has available?
eternaleye KyleHa: $object.^methods returns a list of methods that object supports. So I'm getting a list of the methods that the sub's _signature_ supports 03:27
KyleHa So...methods that have a slurpy signature? 03:28
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.hash.perl
p6eval rakudo 0e0671: OUTPUT«Odd number of elements found where hash expected␤in Main (/tmp/1Ene3NaOL6:2)␤»
eternaleye KyleHa: You can get the signature of any sub with the .signature method
I'm trying to figure out a way to programmatically recognize slurpy subs so that moritz_++'s infix:<...> operator can handle them correctly 03:29
KyleHa The .signature method seems to return a signature object.
eternaleye KyleHa: Indeed
KyleHa Oh, I see.
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.Array.perl
p6eval rakudo 0e0671: OUTPUT«[:(Any *@args)]␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.kv.perl 03:30
p6eval rakudo 0e0671: OUTPUT«[0, :(Any *@args)]␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.[0].WHAT
p6eval rakudo 0e0671: OUTPUT«Method 'postcircumfix:[ ]' not found for invocant of class 'Signature'␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.perl
p6eval rakudo 0e0671: OUTPUT«:(Any *@args)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.Iterator.[0].perl 03:31
p6eval rakudo 0e0671: OUTPUT«:(Any *@args)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.Iterator.[1].perl
p6eval rakudo 0e0671: OUTPUT«set_pmc_keyed() not implemented in class 'Iterator'␤in Main (/tmp/00txsSJtWI:2)␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.Iterator.[0].WHAT 03:32
p6eval rakudo 0e0671: OUTPUT«Signature()␤»
eternaleye phenny: ask TimToady is there a specced way to find the nature (slurpy, named, etc) of the individual parameters in a Signature object? EVery single method in .^methods that I've tried just hands me back the whole signature, rather than something identifiable programmatically. The only solution I can see is to manually write a grammar to parse the .perl of the signature, which is decidedly icky. 03:34
phenny eternaleye: I'll pass that on when TimToady is around.
eternaleye oh wait 03:41
rakudo: sub slurpy( *@args ) { }; say &slurpy.signature.params.perl
p6eval rakudo 0e0671: OUTPUT«["named" => 0, "slurpy" => 1, "name" => "\@args", "multi_invocant" => 1, "nom_type" => Any, "type" => Any, "cons_type" => undef]␤»
eternaleye phenny: tell TimToady nevermind, I seem to have simply overlooked the .params method. I think I may need new glasses. 03:42
phenny eternaleye: I'll pass that on when TimToady is around.
eternaleye rakudo: sub slurpy( *@args ) { }; say "yes" if &slurpy.signature.params.<slurpy> > 0 03:46
p6eval rakudo 0e0671: OUTPUT«sh: ./perl6: No such file or directory␤»
eternaleye rakudo: sub slurpy( *@args ) { }; say "yes" if &slurpy.signature.params.<slurpy> > 0 03:47
p6eval rakudo 0e0671: OUTPUT«sh: ./perl6: No such file or directory␤»
eternaleye grr
rakudo: sub slurpy( *@args ) { }; say "yes" if &slurpy.signature.params.<slurpy> > 0 03:48
p6eval rakudo 0e0671: OUTPUT«yes␤»
eternaleye moritz_: re infix:<...>, TimToady++ says that slurpy generators should get all previously generated values. This could probably be done by checking if &generator.signature.params.<slurpy> > 0 03:50
pmichaud I suspect one could also check if &sub.count is Inf 04:00
eternaleye pmichaud: .count returns 0 on slurpies. Is this a rakudobug? 04:16
rakudo: sub slurpy( *@args ) { }; say &slurpy.count 04:17
p6eval rakudo 0e0671: OUTPUT«0␤»
pmichaud eternaleye: yes, it could be considered a bug. But it's also unspecced, so it's not a bug :-)
eternaleye pmichaud: If it returned Inf, moritz_++'s operator would DTRT
pmichaud having a sub with a .count of Inf is (afaik) speculative at the moment 04:18
also, it's not clear how to reliably return Inf in Parrot.
eternaleye rakudo: my @list = ( 1, 2, 3, 4, 5 ); say @list[*-Inf..*].join( ", " ) 04:19
p6eval rakudo 0e0671: ( no output )
eternaleye ^^ I gues moritz_'s operator wouldn't DTRT after all :( 04:20
pmichaud oh, I'm not sure that *-Inf works there
I'm pretty sure it doesn't.
We're still having to figure out how to get ranges to work properly. 04:21
eternaleye pmichaud: That's what his implementation did. $c = &gen.count; gen(|@arr[*-$c..*])
pmichaud sure.
But I know that rakudo already gets ..* wrong. 04:22
eternaleye So it still might be more robust to directly check for slurpies in the signature
pmichaud and it wouldn't surprise me if rakudo also didn't understand *-Inf..
pmichaud at any rate, I'm planning to work on ticket closures and small bugfixes for tomorrow's Rakudo day, so feel free to submit the .count == Inf one :-) 04:24
eternaleye buubot: spack Signature object
buubot Couldn't match input.
eternaleye buubot: spack Signature
buubot Couldn't match input.
eternaleye pmichaud: Since you seem to be up, and you know the specs pretty darn well, I'll ask you this: If i have a sub foo( *%bar *@baz ) {...}; how can I specify both via feed? %qux ==> foo <== @corge ? 05:00
s/r \*@/r, *@/
pmichaud I'm not up-to-speed on the feed ops yet, sorry. 05:01
eternaleye Okay 05:02
moritz_ rakudo: sub a(*@x) { }; say &a.count 06:36
p6eval rakudo 0e0671: OUTPUT«0␤»
moritz_ that's... confusing. 06:37
moritz_ maybe a slurpy param should return a * 06:38
and ($a, *@b) *+1
pugs_svn r27214 | azawawi++ | [S:H:P6] version is 0.64 with included STD.pm that allows whitespacey 06:50
r27214 | azawawi++ | [S:H:P6] forms in rand(N) and [-1]
pugs_svn r27215 | azawawi++ | [S:H:P6] a better symbol table that identifies keywords/roles/grammars/classes/variables. No scope yet. 07:46
pugs_svn r27216 | azawawi++ | [S:H:P6] our/my keywords into the symbol table... 07:52
Matt-W o/ #perl6 08:21
pmurias rakudo: say \(1,2,3).elems 08:21
p6eval rakudo 0e0671: OUTPUT«3␤»
pmurias rakudo: say \(a=>1).elems
p6eval rakudo 0e0671: OUTPUT«1␤»
pmurias rakudo: say \(a=>1,2,3).elems
p6eval rakudo 0e0671: OUTPUT«3␤»
pmurias the Capture.elems returns the number of named arguments + positionals? 08:22
Matt-W looks like it
Whether it's supposed to or not, I don't know
moritz_ we need much better specs for Capture 08:24
pmurias say (\(1,2,3)).perl
rakudo: say (\(1,2,3)).perl 08:25
p6eval rakudo 0e0671: OUTPUT«[1, 2, 3]␤»
pmurias ah
moritz_ rakudo: say (\(1,2,a => 5)).perl
p6eval rakudo 0e0671: OUTPUT«[1, 2, "a" => 5]␤»
pmurias moritz_: we need much better specs for most of the CORE roles
moritz_ ie it just constructs a list
pmurias: aye
Matt-W reminds himself that a Capture is not the same as a Signature 08:29
pmurias it's the exact oposite 08:30
pugs_svn r27217 | azawawi++ | [S:H:P6] Beautify symbol table output
azawawi hi 08:30
azawawi moritz_: ping 08:33
Su-Shee good morning 08:33
moritz_ azawawi: pong. 08:35
Matt-W pmurias: I'm not sure I'd say they're opposites... but they are different. I think. I need to read up on it again. 08:35
pugs_svn r27218 | azawawi++ | [S:H:P6] Handle package declarations and add 'grammar' as keyword... 08:36
azawawi moritz_: an update on S:H:P6 output, gist.github.com/135751 08:37
moritz_ azawawi: that seems to be a bit more than a syntax hilighter 08:38
azawawi moritz_: exactly... for refactoring... 08:39
pugs_svn r27219 | azawawi++ | [S:H:P6] started to borrow from perl6.vim keyword classes... 08:50
azawawi moritz_: I noticed that in perl6.vim p6Module includes subset and enum; in std these are type_declarators not package_declarators 08:53
pmurias Matt-W: a signature receives a capture 08:56
moritz_ azawawi: does perl6.vim have a separate category for type declarators? 08:57
pugs_svn r27220 | azawawi++ | [S:H:P6] a wider table and supports slang and module package_declarators
Matt-W pmurias: Could it be considered to describe the structure of a capture it might want to receive?
moritz_ aye 08:58
azawawi moritz_: As i far as i have seen, no.
literal it might 09:03
what exactly is a type declarator? my, our, let, temp? 09:04
rgs C-minded people would call that a storage class
moritz_ no, these declare variables, not types
basically module, class etc. all define types 09:05
and enum and subset define types, but not package
literal I grouped a few of those under the "p6Module" syntax group
moritz_ but for syntax hilighting I don't think there's much use distinguishing them
literal namely: module, class, role, package, enum, grammar, slang, subset
azawawi literal: subset, enum => type_declarator 09:06
literal ok
pmurias Matt-W: yes 09:11
pugs_svn r27221 | pmurias++ | [re-smop] added Capture.named_count 09:12
r27221 | pmurias++ | positionals can be passed through named parameters
r27221 | pmurias++ | excess named arguments are not accepted
pmurias moritz_: should i add ok(1) to 02-test-pm/1-basic.t? 09:33
moritz_ pmurias: I don't care for that directory for now 09:35
I have no idea how much up-to-date it is
pmurias do the tests for Test.pm live somewhere else now? 09:36
moritz_ there's no one official Test.pm, and it's not test officially either
lunch &
pugs_svn r27222 | pmurias++ | [re-smop] named parameters are not required by default 09:46
r27222 | pmurias++ | Signature handles all parameters in a generalised way
r27223 | pmurias++ | [re-smop] update t/signature.t 09:47
pugs_svn r27224 | pmurias++ | [ere-smo] added &is to Test.pm 10:08
r27224 | pmurias++ | copied over the part of test-pm/1-basic.t that already works
pugs_svn r27225 | pmurias++ | [re-smop] nameless parameters don't have the .variable and .name 11:04
r27225 | pmurias++ | attributes set, added S06-signature/positional.t to TESTS as it passes
r27226 | pmurias++ | [re-smop] updated .gitignore
moritz_ literal: grok changes should now be reported in here - please test it! 11:17
Infinoid Oh, the suspense :) 11:18
viklund Is it possible to create match-objects (in rakudo)? 11:28
moritz_ only by matching, I think
maybe with Match.new, but so far I haven't figured out what arguments to pass to it 11:29
viklund hmm, would be nice if it was possible to do in some other way
moritz_ aye
viklund I guess it's possible to write PIR for it...
moritz_ then Match.perl would also be able to emit working Perl 6 code 11:30
viklund yes
masak 399 tickets! 11:59
moritz_ and today is pmichaud++'s bug squashing day? 12:00
masak yeah.
kinda puts the pressure on finding that last bug, no?
moritz_ www.braincells.com/perl/index.cgi?i...13315|1981 I like the term "darkmongers" ;-)
masak the world is probably full of darkmongers. 12:04
moritz_ phenny, ask alester could you please give me enough privileges to delete spam comments on rakudo.org? (or clean it up yourself, if you have too much time ;-)
phenny moritz_: I'll pass that on when alester is around.
masak hugs phenny 12:05
last So, still trying to (slowly) track down why the 07-isa test fails on my Mac and 64-bit Linux platforms, I just ran valgrind while running some of the test scripts. Appears that the parrot GC is throwing up lots of uninitialized value errors (including "conditional depends on"). Is this expected? 12:09
masak in some instances, yes.
parts of it are due to unimplemented features, I think. 12:10
last Okay, I won't bother reporting that as a bug, then. 12:13
masak dang. :)
pmurias pmurias.livejournal.com/ # newest blog post 12:20
masak pmurias++ 12:21
moritz_ pmurias: would you consider adding your blog the ironman (ironman.enlightenedperl.org/) and perlsphere.net aggregators? 12:22
more exposure would be great, IMHO 12:23
and in both cases it's just sending a short a email
moritz_ mildew: say 1, 2 12:43
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
..at…
masak lichtkind: you keep referring to 'double colons' in your post use.perl.org/~perl6doc/journal/39171 -- but I see only single colons all the way. are you sure you mean 'double'? 12:44
TimToady stirs in his den 12:55
phenny TimToady: 03:34Z <eternaleye> ask TimToady is there a specced way to find the nature (slurpy, named, etc) of the individual parameters in a Signature object? EVery single method in .^methods that I've tried just hands me back the whole signature, rather than something identifiable programmatically. The only solution I can see is to manually write a grammar to parse the .perl of the signature, which is decidedly icky.
TimToady: 03:42Z <eternaleye> tell TimToady nevermind, I seem to have simply overlooked the .params method. I think I may need new glasses.
TimToady I suspect that .arity and .count are misnamed and/or misdesigned 12:56
but shower and breakfast first... &
pmurias moritz_: the build-smop.sh is likely not doing it's magic properly - i'm checking it out 12:58
masak std: [+] ; 13:08
p6eval std 27226: OUTPUT«##### PARSE FAILED #####␤Unable to parse array composer; couldn't find final ']' at /tmp/LHmhR7PPrC line 1:␤------> [+] ;␤ expecting any of:␤ noun␤ prefix or meta-prefix␤FAILED 00:02 37m␤»
pmurias mildew: say 1 13:11
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
..at…
pmurias mildew: say 1
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
..at…
pugs_svn r27227 | pmurias++ | [evalbot] fixed path to mildew 13:14
pmurias evalbot control restart
pmurias mildew: say 1 13:14
p6eval mildew: OUTPUT«1␤»
pmurias mildew: say 1,2
p6eval mildew: OUTPUT«12␤» 13:15
moritz_ www.sdtimes.com/link/33566
azawawi hi 13:17
mildew: say "who are u?"; 13:19
mildew: 1;
azawawi std: 1; 13:20
p6eval mildew: OUTPUT«who are u?␤»
mildew: ( no output )
std 27227: OUTPUT«ok 00:02 35m␤»
azawawi mildew: 1;
hmmm evalbot takes its time
p6eval mildew: ( no output )
moritz_ it's a weak machine, and mildew isn't optimized for speed 13:21
azawawi std: 1 13:22
p6eval std 27227: OUTPUT«ok 00:02 35m␤»
azawawi mildew: 1 == 1 ? 1 : 2;
p6eval mildew: OUTPUT«##### PARSE FAILED #####␤Obsolete use of ?: for the conditional operator; in Perl 6 please use ??!! instead at /tmp/RCYcwpUGKj line 1:␤------> 1 == 1 ? 1 : 2;␤»
azawawi ah std inside
lichtkind moritz_: conspiracy 13:26
masak makes theremin sounds 13:26
azawawi mildew: rand(10); 13:27
mildew: rand( 10);
mildew: rand(10 );
mildew: rand( 10 );
[bjoern] I take it rakudo does not support :keepall yet, what other options are there to make a grammar, match it against a string, and print out the parse tree in some form?
p6eval mildew: OUTPUT«Could not find variable &rand in the lexical scope.␤» 13:28
azawawi mildew:
masak [bjoern]: that's the million-dollar question right now.
[bjoern]: there's .chunks, which moritz_ seems to be championing now and then.
[bjoern]: then there's .perl on Match objects, with some known bugs.
azawawi mildew: module Foo::Bar { }; module Bar { }; 13:29
masak [bjoern]: I've yet to successfully traverse a tree of Match objects.
p6eval mildew: ( no output )
[bjoern] That sounds unpromising
masak [bjoern]: by all means, try a few things.
I might have missed something obvious.
moritz_ well, I managed to break up a parse tree into a flat stream of tokens 13:30
azawawi mildew: module Foo::Bar { }; module Bar { };
p6eval mildew: ( no output )
moritz_ but you're better off if you construct your data structures from action methods directly, instead of first building the parse tree and then traversing it
azawawi mildew: module Bar { }; module Bar { }; 13:31
mildew: package A; package B;
p6eval mildew: ( no output )
mildew: OUTPUT«##### PARSE FAILED #####␤Malformed "package" declaration␤Unable to parse package definition at /tmp/CjTsGOnL6f line 1:␤------> package A; package B;␤ expecting any of:␤ trait␤ whitespace␤»
azawawi pmurias: so mildew has the latest std inside. pmurias++. Very nice. 13:32
[bjoern] Well I am a bit more interested in playing with Rules to learn them, and getting a parse tree would make inspecting results that much easier; I care little about building my own data structures 13:33
masak [bjoern]: then .perl is for you.
moritz_ aye, IMHO that's still very helpful 13:34
pmurias azawawi: actually the std parser in mildew is rather oldish
masak rakudo: 'foo' ~~ /foo/; say $/.perl
p6eval rakudo 0e0671: OUTPUT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast => "foo",␤ Str => "foo",␤ from => 0,␤ to => 3,␤)␤»
[bjoern] Okay I'll try a few things with .perl then
azawawi pmurias: how old?
pmurias checking... 13:36
moritz_ it looks much nicer on a normal terminal, with line breaks and indentation
pmurias azawawi: 2009-03-31 13:38
azawawi: viv's output was changing a lot right then so i took a snapshot (i think it was brokenish at some point) and it was good enough till now 13:41
TimToady std: package; package;
p6eval std 27227: OUTPUT«Undeclared routine:␤ package used at 1 1 ␤ok 00:02 35m␤»
TimToady std: package A; package B; 13:42
p6eval std 27227: OUTPUT«##### PARSE FAILED #####␤Too late for semicolon form of package definition at /tmp/QRZHg8JYai line 1:␤------> package A; package B;␤ expecting any of:␤ trait␤ whitespace␤FAILED 00:02 35m␤»
TimToady before you get too carried away inventing symbol tables, STD is pretty close to being able to emit those with proper scoping
and then CORE.pad will be autogenerated from CORE.pm 13:44
pmurias TimToady: that was aimed at azawawi's project?
TimToady mostly :)
pmurias TimToady: would it be worth switching mildew to the newest STD? 13:45
TimToady pretty soon 13:46
TimToady actually, CORE.pad would then probably turn into CORE.yaml or some such 13:51
TimToady but at the moment I'm still chasing the [+] bug 13:52
it's driving me insane(r) 13:53
masak so it turns out '[+]' was a statement after all. that's actually quite funny. 13:55
rakudo: [+]
p6eval rakudo 0e0671: OUTPUT«Syntax error at line 2, near "[+]"␤in Main (src/gen_setting.pm:0)␤»
masak submits rakudobug
TimToady it should parse just like 'print'
masak yes! \o/
[bjoern] If I have something like grammar Test { regex A { a }; regex B { <A> }; regex C { <Test::A> } ... }; why is the capture in B named "A" and not "Test::A" (as it would be in C)? If they are invoked via /<Test::B>/ you get the prefix in the outermost capture but not in the others.
moritz_
.oO( maybe we should register insaner.org as a domain for a perl 6 blog aggegator/rater like digg :-)
13:56
std: print
p6eval std 27227: OUTPUT«ok 00:02 35m␤»
moritz_ TimToady: shouldn't bare 'print' be a syntax error?
TimToady a semantic error, but not a syntax error
masak moritz_: I really like that idea.
TimToady and in fact [*] should return 1 13:57
moritz_ TimToady: then S16 or S32 or so is out of date
rakudo: print
p6eval rakudo 0e0671: OUTPUT«print requires an argument at line 2, near ""␤in Main (src/gen_setting.pm:2416)␤»
moritz_ [bjoern]: generally the capture is named the same way as the rule you're calling
if you call it as Test::B, then it's Test::B 13:58
if you mean B, say B
when you have multiple inheritance of two grammars, are tokens of the same name resolved by matching an alternation of them? 13:59
masak ...and, if so, is that specced? are there spectests? 14:00
moritz_ I don't think I've read about grammar mi
pmurias rakudo: say; 14:02
p6eval rakudo 0e0671: OUTPUT«say requires an argument at line 2, near ";"␤in Main (src/gen_setting.pm:2416)␤»
pmurias rakudo: say 1,2;
p6eval rakudo 0e0671: OUTPUT«12␤»
pmurias why does say require an argument?
moritz_ because it's specced that way :-)
to warn those who still think it defaults to $_
[bjoern] My question was more like, why is it better to name the captures after the references rather than their resolved names; how the subrules are invoked strikes me more as an implementation detail, and if one were to traverse the match object using the names, you would have to depend on an implementation detail. 14:03
moritz_ [bjoern]: when you see a regex, you don't see the resolved names, so you'd have to think harder to know what the name of the capture is 14:04
it forces you to do the job that your compiler is supposed to do
huf is the logo really a butterfly? *really*? 14:05
masak huf: really. 14:06
moritz_ ;-)
TimToady a call to <subrule> resolves like any other method, unless it's a category, in which case it does LTM across all subrule:sym variants
we want to brainwash the 3-year-old girls into becoming programmers someday
but that's one tough butterfly 14:07
3-meter wingspan
huf i'm kinda trying to teach my sister perl5
TimToady larval form was a camel
huf havent progressed far yet
Su-Shee probably more effient but other methods to get more women into computing. ;))
TimToady show her the butterfly, and hope for the butterfly effect
sbp dinofly
TimToady www.cafepress.com/cp/moredetails.as...8&pr=F 14:08
moritz_ whoa
I need that as a T-Shirt
Su-Shee make it two. :) 14:09
masak nice font.
TimToady www.cafepress.com/rakudo.391291260
PerlJam what happens if Camelia is really in a pupal stage now (with a really large chrysalis that includes us and the rest of the world)? 14:10
Su-Shee hm, my perl memorabilia are all perl5 still..
TimToady well, I think Camelia actually is still about to hatch out of her chrysalis
she's been in there a long time 14:11
moritz_ hm, that page has an option to show prices in EUR, but it doesn't work :(
TimToady masak: thanks, Geneva and I picked it together
masak it works for this. looks like a programming language talking. 14:12
PerlJam TimToady: Really? From my perspective she's only gotten through the first 90%. It's that second 90% that's a doozy.
TimToady I think we're well into the second 90%
masak I don't know what you people are mumbling about. to me, Perl 6 is already out there. I use it every day.
TimToady I'm just hoping there isn't a 3rd 90% 14:13
sbp .gcs dinofly dynamofly
phenny dinofly (3,750), dynamofly (16)
sbp wait. dinopter would be perfect 14:14
3ft wingspan... terrible wing. perfect
[bjoern] So let's say I make a Regexp::Common-like package to parse ... URLs; users would include my module and do, say, "example.org" ~~ /<Grammar::URI::http>/; there would be a subrule, say, "host" which initially I define as part of my package;
Later someone makes a Grammar::URI::Generic package which also defines a "host" rule; I update Grammar::URI::http to reference <Grammar::URI::Generic::host> instead of my own.
It seems users of my module would then get a capture named Grammar::URI::Generic::host and not "host", for the host component, so this change in my Grammar::URI::http module may break other people's code. Do I have that right?
PerlJam Maybe I should recalibrate, but while perl6 is "out there", it's only out there for early adopters. ergo it still feels to me, like we've got a good chunk of the second 90% to go. 14:15
moritz_ Su-Shee: which size?
TimToady masak: yes, we looked at maybe 200 fonts that Geneva has collected; that was the most computery looking font that didn't look outdated or overused, and made the S's stand out correctly 14:15
Su-Shee moritz_: M - but I'd like it in black. :) 14:16
moritz_ Su-Shee: you're in Germany?
TimToady unfortunately, I don't remmeber the name of the font offhand
Su-Shee moritz_: yes. 14:17
TimToady maybe pmichaud remembers
PerlJam [bjoern]: perhaps think of rules more like subroutines. How is the analgous problem solved there?
TimToady they're really methods, not subroutines
the invocant always represents the current language+matchstate 14:18
PerlJam well, no matter how you think of them, there's 7 ways to solve the problem :)
moritz_ Su-Shee: well, I don't see an option to order it in black - am I missing something? or do we have to convince TimToady/pmichaud of creating a black version?
[bjoern]: you can always alias the rules 14:19
so if you want to change it from <host> to <Foo::host>, you actually change it to <host=Foo::host>
[bjoern] Well if the fact that I initially had <host> in my grammar is part of the public interface, I would have to alias "host" and Grammar::URI::Generic::host of course
moritz_ thus preserving the interface 14:19
the <alias=rulename> syntax is very convenient for that.
TimToady for Cafe Press we'd probably have to arrange to have a subtle border around it, though Camelia herself works as an icon on a black background, since the color fills out most of where the wings are
PerlJam wonders what Camelia looks like color-inverted 14:20
TimToady well, we could always claim that she can change here wing colors at will 14:22
the original Camelia didn't have black wings, in fact
[bjoern] (the subroutine analogy was not very helpful, if I had sub host { ... } I would change it to sub host { generic::host ... } which would not affect the caller, but changing rule host { ... } to rule host { <generic::host> } would, I think) 14:23
But I guess for now I'll just accept that rule references are in essence public api, then
(the details of those references, that is)
PerlJam [bjoern]: you have the option to capture or not on <generic::host> (i.e., make that part of the interface or not) 14:25
TimToady for the original camelia see wall.org/~larry/cameliagreen.pdf 14:27
[bjoern] (The difficulty is more realizing that it makes a difference whether you reference Grammar::Rule as <Rule> or <Grammar::Rule> than with dealing with the consequences, I think) 14:28
moritz_ since you test your code, you notice that pretty quickly ;-)
TimToady the fact that Grammar::Rule was called is more in the province of the action routine that automatically fires off when that method reduces 14:29
moritz_ I think the real difficulty will be to appropriately document the order of captures etc. without having to show the whole source code 14:30
PerlJam "order of captures"? 14:30
moritz_ that's maybe the wrong term
more like, which captures are optional, contain arrays under what condition etc. 14:31
[bjoern] the structure of the parse tree
moritz_ right
TimToady "contain arrays" is generally lexically determined by * or by <foo> <foo>
PerlJam ah. yes, that might be a tad difficult ... if we didn't have Perl there to help us ;-)
TimToady: it's that <foo>? one that always gets me though.
(you'd think I'd learn, but apparently I have a blind spot there or something) 14:32
TimToady it's more consistent this way, at least in how the thing is stated: any quantifier...
PerlJam yes, I agree. It still trips me up.
TimToady I wonder to what extent we can make an array of one element delegate Matchness to that element 14:34
moritz_ please not by stuffing more behaviour into Array
TimToady it already does ~@a and /@a/ correctly, I think
sbp hmm. the closest I can come to cameliagreen.pdf (top) in unicode is: «􏿽xE2􏿽x98􏿽xBA􏿽xCC􏿽x8E􏿽xCD􏿽x88􏿽xC2􏿽xBB 14:35
if there are combining double quotes above and below, I cannot find them
TimToady where does the trip-up actually show up in symptoms? Usually in trying to call a method that is defined on Capture/Match but not on Array
PerlJam right 14:36
TimToady sbp: that image cheats, actually
masak I've done the following error a few times in the past year: `for $match<submatch> -> $match` -- $match<submatch> turns out not to exist -- I get one iteration over Failure. 14:38
sbp whoops, and I didn't notice the wings were obviously the other way around. »􏿽xE2􏿽x98􏿽xBA􏿽xCC􏿽x8E􏿽xCD􏿽x88􏿽xC2􏿽xAB
TimToady and that certainly doesn't render in any terminal that screws up overstriking, as most of them do
sbp won't attempt to do (bottom) in unicode... :-)
moritz_ masak: that's a rakudobug
masak: because it shouldn't stuff undef into it, but Nil 14:39
sbp even Firefox and Safari don't render multiple combiners properly
masak moritz_: ah, that's good news.
moritz_ masak: so the for-loop should simply iterate 0 times, afaict
masak aye.
TimToady in my experience xterm does the best at overstriking currently, which is funny 14:43
there's some kind of inverse relationship between glitz and functionality 14:44
moritz_ IME xterm doesn't care about bidi properties 14:45
don't know if that's a good thing
Su-Shee "terminal" works fine for unicode, input methods and bidi. 14:47
TimToady and kterm really screws it up 14:49
it turns the above into 損財彩ヘ束
it's probably interpreting utf-8 as utf-16 or some such 14:50
masak encodings are hard! 14:50
TimToady or maybe it's assuming I'm Japanese... 14:51
moritz_ at least encodings appear to be hard
TimToady oh, wait, kterm is kanji term, not kde, duh 14:53
Su-Shee konsole is KDE's term. 14:54
viklund \O/ 14:54
|
[bjoern] is <[\x[20ac] .. \x[20ff]]> the best (brief, readable) syntax for a unicode character range if you do not want to specify the characters literally?
Su-Shee [bjoern]: specific ranges have human readable names, don't know wether or not they are already know to perl6. 14:55
masak viklund: for some reason, you reminded me of this: bash.org/?4281
[bjoern] entirely user defined ranges
moritz_ yes 14:56
[bjoern] thanks
viklund :)
TimToady looks like konsole throws away the overstrikes
shouldn't need the square brackets, in theory 14:57
the inner ones, that is
moritz_ rakudo: say ?(chr(:16<20bb>) ~~ / <[ \x20ac .. \x20ff ]> /) 14:58
p6eval rakudo 0e0671: OUTPUT«1␤»
moritz_ s/theory/theory and practise/ # ;-)
pmichaud Good morning, #perl6
moritz_ oh hai pmichaud
TimToady howdy doody 14:59
viklund ...
TimToady eek, I'm starting to sound like Dan again :)
masak helo pm
pmichaud ehlo masak :-)
masak :)
pmichaud: 400 tickets! :)
pmichaud masak: not for long! :) 15:00
viklund masak: have you found that bug yet?
masak viklund: yup.
viklund ahh, nice
TimToady pmichaud: are you checked out of your hostel yet? you can dump luggage here...
masak viklund: [+] oughta parse as a statement.
viklund oh
moritz_ ;-)
masak viklund: quote amusing after yesternight's discussion :)
TimToady but I haven't made STD parse it right yet... 15:00
viklund quite?
masak quite, even. thanks. 15:01
viklund then, yes
masak quote amusing: "amusing"
TimToady I think I need to teach EXPR to allow a nulltermish after a prefix op
moritz_ std: ~
TimToady the other listops actually cheat and parse as terms
p6eval std 27227: OUTPUT«##### PARSE FAILED #####␤Can't understand next input--giving up at /tmp/WRJcpVPhIO line 1:␤------> ␤ expecting noun␤FAILED 00:02 37m␤» 15:02
masak TimToady: so [+] is a prefix op, but it still works like a listop?
TimToady supposed to
masak so some prefix ops are listops, and some are not?
TimToady most are not listops
depending on how you define "most"
PerlJam std: [+]
p6eval std 27227: OUTPUT«##### PARSE FAILED #####␤Unable to parse array composer; couldn't find final ']' at /tmp/oEJyvBE6bv line 1:␤------> ␤ expecting noun␤FAILED 00:02 37m␤» 15:03
TimToady fails over to array composer parser
unlike ~
PerlJam That seems like a failure of LTM to me since it's interpreting that as an array composer.
TimToady reduce operators are the one of two places in the grammar that rely on backtracking
PerlJam ah 15:04
TimToady originally I tried to shoehorn reduce into LTM, but got exponential explosion in the LTM tables
viklund ouch
TimToady [>>[XR>>+=<<]<<] 15:05
not to mention
[>>[XR>>+=<<]<<]<<
pmichaud TimToady: (1) Where's "here"? 15:06
TimToady so nowadays the different meta-bits are parsed as separate tokens, and if we can parse to the ] as an infix without spaces, it's assumed to be a reduce, not an array composer 15:07
resnik 580
pmichaud TimToady: (2) I'm actually departing tomorrow. Tonight my wife arrives and we're taking a trip from there.
(so I'm still in my hotel until tomorrow morning)
TimToady oh, I thought you were leaving tonight
okay
maybe it was two other people
anyway, you're welcome to hang out here 15:08
I haven't looked down the hall to see if there are any other hackathoners in the lounge
maybe I'll wander down there now 15:09
[bjoern] What's wrong with regex LWSP { (<WSP> | <CRLF> <WSP>){0,1} }; ? Rakudo gives me "Statement not terminated properly"
TimToady std: regex LWSP { (<WSP> | <CRLF> <WSP>){0,1} };
p6eval std 27227: OUTPUT«ok 00:03 38m␤»
TimToady heh
well, quantifier syntax is ** 0..1 now 15:10
pmichaud I think I misled you last night in my phrasing :-)
TimToady I'm easily misled
pmichaud I'm currently in the university center common area, but the wireless has been spotty. Seems okay now. 15:10
TimToady and rakudo only catches it because it doesn't implement closures yet
been rock solid here
[bjoern] Ah, I grepped S05 for the syntax, and didn't see the m:P5// in the example... 15:11
pmichaud If people start to congregate in a lounge somewhere I'll move there.
TimToady checking... & 15:11
pmichaud rakudo: say "hello" ~~ / \w ** {3..4} / 15:12
p6eval rakudo 0e0671: OUTPUT«hell␤»
pmichaud (it recognizes closure syntax when the closure contains a constant range :-)
moritz_ aka "it cheats"
pmichaud aka "it cheats", yes. 15:13
TimToady nobody in the 5th floor lounge yet...
could be off in one of the rooms though
pmichaud there are quite a few in uc lounge (outside of "Entropy") at the moment
TimToady are there plugs out there? 15:14
pmichaud yes 15:14
TimToady well, maybe I'll wander down then 15:15
TimToady unless everyone else decides to wander up, but there's more coffee down there :) 15:15
pmichaud I also heard there's some hackathoning on 3rd floor resnik
yes, more coffee. also not quite as cramped.
TimToady I'll wander down then 15:16
[bjoern] Okay, now I have a working grammar; It's automatically generated with lots of redundant white space, bad indentation, etc.; any way to pretty print the code? 15:20
moritz_ I know none 15:20
moritz_ std: $*FOO 15:21
p6eval std 27227: OUTPUT«ok 00:02 36m␤»
[bjoern] lisppaste3: url? 15:26
lisppaste3 To use the lisppaste bot, visit paste.lisp.org/new/perl6 and enter your paste.
[bjoern] pasted "Quick and dirty RFC 3986 (URI) grammar" at paste.lisp.org/display/82493 15:27
moritz_ [bjoern]: nice. Would you consider setting that up as a git repo, for example? 15:28
dalek kudo: c7ff050 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 405 files, 11548 passing, 4 failing

   S12-enums/basic.rakudo 27 - short name of the enum without parenthesis is an enum
   S32-num/rand.t aborted 3 test(s)
viklund another URI.pm?
oh well...
moritz_ is the other one closely modeled after that RFC? 15:29
PerlJam viklund: strength through diversity :)
viklund looks like this is the biggest one so far
I don't think so
moritz_ it can be simplified
for example ** 0..* is simply *
[bjoern] I could add a ABNF->Perl6 conversion script to the examples for search.cpan.org/dist/Parse-ABNF/ 15:30
moritz_ [bjoern]: that would be nice
PerlJam a perl6 version would be nice too
viklund ihrd has a URI on github
[bjoern] Parse::ABNF has an example script that converts to XML, I just wrote an XSLT that turns the XML into what I've pasted...
viklund I don't know anything about it though 15:31
I guess it's derivative of the November URI grammar he made
github.com/ihrd/uri/
it seems he tried to model it after the RFC 15:32
PerlJam: yes, timtwtdi 15:33
TimToady viv -6 could be turned into a pretty printer relatively easily
viklund oops, forgot an 'o'
good work [bjoern]!
pmichaud rt.perl.org/rt3 only shows 398 tickets. :-|
but yes, my other query shows 400. 15:34
moritz_ yes, I've rejected one and closed one
pmichaud ah. 15:34
Matt-W Does Rakudo yet have the facilities in place for me to programatically generate subroutines and insert them into the symbol table? 16:01
moritz_ with eval, yes 16:02
rakudo: my &a := sub { say "foo" }; a() 16:03
p6eval rakudo c7ff05: OUTPUT«foo␤»
moritz_ or like that ;-)
Matt-W that'll do nicely :)
I think
moritz_ I don't know if variable names work without eval
pmichaud moritz_: how do you mean? Seems like they should work. 16:06
Matt-W What about if I want to give it a name I'm constructing on the spot...
moritz_ pmichaud: I mean if you have a variable $a holding the name of the subroutine you want to install
Matt-W yes that :)
moritz_ pmichaud: exit; still doesn't work on the repl, for me 16:07
[bjoern] [...] is the new (?:...) while (...) is still (...) in rules? 16:11
Matt-W yes
Matt-W rakudo: my $a = "foo"; my &($a) = sub { say "foo"; }; foo(); 16:15
p6eval rakudo c7ff05: OUTPUT«Malformed declaration at line 2, near "&($a) = su"␤in Main (src/gen_setting.pm:0)␤»
Matt-W rakudo: my $a = "foo"; my &::($a) = sub { say "foo"; }; foo();
p6eval rakudo c7ff05: OUTPUT«Malformed declaration at line 2, near "&::($a) = "␤in Main (src/gen_setting.pm:0)␤»
Matt-W awww
As far as I can see, that should work
rakudo: my $a = "foo"; my $::($a) = "hello"; $foo.say; 16:17
p6eval rakudo c7ff05: OUTPUT«Malformed declaration at line 2, near "$::($a) = "␤in Main (src/gen_setting.pm:0)␤»
Matt-W guess it's just not supported yet
pmichaud we don't do namespace interpolation yet, sorry.
Matt-W sniffles
pmichaud I hadn't even thought about lvalued namespace symbols, though :-( 16:18
Matt-W People will be wanting that 16:19
People other than me, that is
moritz_ Matt-W: what do you need it for right now?
Matt-W moritz_: I want a module to generate a bunch of similar-but-different subroutines based on a list of things 16:20
Matt-W moritz_: at this stage I would accept being able to do it for methods of a class (in fact that might turn out to be preferable, but I need to experiment with actually using stuff to decide that) 16:22
[bjoern] Is it possible to adment previously defined rules in a grammar, ala, grammar Test { rule foo { foo1 }; rule foo { foo2 } } where Test::foo = foo1 | foo2? (ABNF grammars may use ... foo = foo1 ... foo /= foo2 ... to this effect; it would be nice to avoid merging them into a single rule) 16:22
moritz_ Matt-W: you could emulate that with an attribute and handles 16:23
Matt-W: the 'handles' can use a hash or a closure to dispatch
Matt-W hmm
moritz_ [bjoern]: I don't quite understand what you want... if foo is always an alternation of foo1 and foo2, you can use categories (though not yet implement in Perl 6) 16:24
for most other kind of mutations you can use inheritance 16:25
s/Perl 6/Rakudo/
[bjoern] Putting it differently, I'd want to write grammar Test { rule foo { foo1 | foo2 } } as grammar Test { rule foo { foo1 } ... rule foo { foo2 } } with whatever sugar necessary. 16:28
TimToady you can't add symbols to the lexical pad at run time, but you can say:
std: my sub foo { say "hi" }; my &bar := &::('&foo'); bar()
[bjoern] In RELAX NG you could do something like <define name='foo'>foo1</define> ... <define name='foo' combine='choice'>foo2</define>. In ABNF foo = foo1 ... foo /= foo2 ... as above
p6eval std 27227: OUTPUT«ok 00:04 49m␤»
TimToady (not supported by rakudo yet though)
Matt-W you can't? oh. 16:29
TimToady MY shuts down at the end of compiling that block
moritz_ [bjoern]: what does /= mean? 16:29
TimToady it's only modifyable while it's aliased to COMPILING 16:30
[bjoern] A = B ... A /= C is the same as A = B / C
Matt-W what about other places, like class methods?
moritz_ what is / ?
[bjoern] alternation
moritz_ ah.
well, you can always subclass you grammar, and define token A { <B> | <C> } 16:31
in the child class
[bjoern] I take it the short answer is that there is currently no way to write it like that, I have to collect all the definitions first, and then merge them before converting them to a perl6 grammar 16:33
pmichaud [bjoern]: you're looking for protoregexes 16:35
Matt-W TimToady: I can't add to the lexical pad at runtime, can I add symbols at the package level? 16:36
pmichaud protoregexes allow multiple definitions to be combined into a single rule name
[bjoern] so something like grammar { proto regex foo { foo1 }; proto regex foo { foo2 }; } ? 16:37
pmichaud close
it follows the categories item that moritz mentioned a little earlier 16:38
TimToady Matt-W: sure, but routines won't be visible to multi dispatch if they're in a package
pmichaud I don't recall the exact syntax at the moment (because Rakudo hasn't implemented them yet)
moritz_ [bjoern]: svn.pugscode.org/pugs/src/perl6/STD.pm contains examples
[bjoern] Thanks, I guess I will come back to that later. 16:39
Matt-W TimToady: but it's okay if they're not multis?
pmichaud [bjoern]: it'd be something like
proto rule foo { }
proto rule foo:a { <A> }
proto rule foo:b { <B> }
er 16:40
change those last two "proto" to "multi"
moritz_ with "proto" only in the first line
pmichaud: multi is not necessary if there's a proto
pmichaud right.
as I said, I haven't written a bunch of these yet :-)
moritz_ pmichaud: would you benefit from a bunch of LTM and tie-breaking tests? 16:41
pmichaud I don't understand the question, sorry. 16:42
oh, you mean tests in the suite
yes. 16:43
that would be helpful. But I'm still a few weeks from that point.
(although I do see light at the end of the tunnel there)
pugs_svn r27228 | azawawi++ | [S:H:P6] sym table has methods/routines along with p6Parameters... 16:46
Matt-W plays games with .wrap 16:53
pmichaud rakudo: say Nil.new.perl; 16:55
p6eval rakudo c7ff05: OUTPUT«undef␤»
pmichaud ...what should that be? 16:56
moritz_ Nil
oh wait
rakudo: () ~~ undef
p6eval rakudo c7ff05: ( no output )
moritz_ rakudo: say () ~~ undef
p6eval rakudo c7ff05: OUTPUT«1␤»
moritz_ pmichaud: () should work
pmichaud rakudo: say (42 if 0).perl; 16:58
p6eval rakudo c7ff05: OUTPUT«[]␤»
pmichaud rakudo: say ().perl; 16:59
p6eval rakudo c7ff05: OUTPUT«undef␤»
moritz_ let's say I have token a { a+ ::: b* } and token b { \w+ } 17:05
and then I match against <a>|<b>
does the LTM involve a+ and \w+?
pmichaud yes.
moritz_ ok, thanks 17:06
pugs_svn r27229 | azawawi++ | [S:H:P6] more scoping and support for method calls 17:08
Matt-W rakudo: class A { method a { } }; &A.a.wrap( -> { say "foo"; } ); A.a(); 17:11
p6eval rakudo c7ff05: OUTPUT«Method 'wrap' not found for invocant of class 'List'␤»
moritz_ Matt-W: A::a
Matt-W rakudo: class A { method a { } }; &A::a.wrap( -> { say "foo"; } ); A.a();
p6eval rakudo c7ff05: OUTPUT«foo␤»
Matt-W moritz_: thanks
of course, I was calling it
silly me
viklund_ is it possible to create an instance of a class if I have the name of that class as a string? 17:15
moritz_ sure, with eval
viklund_ ;) 17:16
pugs_svn r27230 | moritz++ | [t/spec] a few more LTM tests, including tie-breaking and LTM stopper 17:19
moritz_ man, constructing LTM tests requires quite some head-wrapping
pugs_svn r27231 | moritz++ | [t/spec] fudge ltm tests a bit 17:21
moritz_ review appreciated, of course
Matt-W rakudo: role R { method r { 'r'.say; } }; my &a := sub { 'a'.say; }; &a does R; a(); &a.r(); 17:24
p6eval rakudo c7ff05: OUTPUT«a␤r␤»
Matt-W I love Perl 6
rindolf Hi all. 17:24
What should I do about the rakudo failures I got? 17:25
moritz_ report them via [email@hidden.address] 17:25
woah, LTM is a scary thing. 17:26
pugs_svn r27232 | moritz++ | [t/spec] implicit <.ws> stops LTM
Matt-W rakudo: role R { method r { say "r"; } }; class C { method c { }; &c := method { } but R; }; &C::c.r() 17:27
p6eval rakudo c7ff05: OUTPUT«r␤»
Matt-W ^ is there a more elegant way to do that?
moritz_ wtf? ;-) 17:29
Matt-W composing a role into the method object :P
moritz_ rakudo: role R { method r { say "r"; } }; class C { method c { }; &c does R }; &C::c.r()
p6eval rakudo c7ff05: OUTPUT«Attempt to use rebless_subclass where the new class was not a subclass␤in Main (/tmp/3IMducolDJ:2)␤» 17:30
Matt-W moritz_: that's as close as I could get, and I also caused a null pmc access somewhere, I should probably bug that as we shouldn't be doing that even for wrong code 17:33
pugs_svn r27233 | azawawi++ | [S:H:P6] identifies p6FlowControl keywords... 17:34
Matt-W rakudo: class C { method c { }; method d { }; }; C.^methods.perl.say; 17:41
p6eval rakudo c7ff05: OUTPUT«[{ ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ...
..}, { …
Matt-W oh
foolish
trying to print out code objects
must mean it's time for dinner
moritz_ rakudo: class C { method c { }; method d { }; }; say C^methods.map: *.name
p6eval rakudo c7ff05: OUTPUT«Could not find non-existent sub methods␤»
moritz_ rakudo: class C { method c { }; method d { }; }; say C.^methods.map: *.name 17:42
p6eval rakudo c7ff05:
..OUTPUT«cdcanisadoesComplexelemsendkeyskvpicksortvaluesabsintlogpolarsqrtsrandtruncaterootsunpolarcharschomp:d:e:findexmatchrindexsubstrtranssubstevalfilefirstgrepjoinmapmaxminpairsreducereverseceilingchrcisfloorrandround!to-radians!from-radiansbytescapitalizechopfmtlclcfirstordp5chompp5ch…
moritz_ rakudo: class C { method c { }; method d { }; }; say C.^methods.map(*.name).join(', ')
p6eval rakudo c7ff05: OUTPUT«c, d, can, isa, does, Complex, elems, end, keys, kv, pick, sort, values, abs, int, log, polar, sqrt, srand, truncate, roots, unpolar, chars, chomp, :d, :e, :f, index, match, rindex, substr, trans, subst, evalfile, first, grep, join, map, max, min, pairs, reduce, reverse,
..ceiling, c…
Matt-W moritz_: that's more like what I was looking for :)
PerlJam moritz_++ 17:46
Matt-W argh
PerlJam though, I'd throw a sort in there.
Matt-W can't remember what the thing for a slurpy list parameter is
PerlJam Matt-W: sub foo (*@slurp) { } 17:47
Matt-W PerlJam: thanks!
PerlJam perl is a crazy cool language these days. 17:47
rakudo: class C {}; C.^methods.map(*.name).sort.join(',').say; 17:48
p6eval rakudo c7ff05: OUTPUT«sh: ./perl6: No such file or directory␤»
PerlJam aww...
that code is awesome though
pugs_svn r27234 | azawawi++ | [S:H:P6] no more p5 emitter code 17:49
Matt-W oh dear 17:50
I'm getting an error that just says
rtype not set
in Main (src/gen_setting.pm:3225)
Matt-W not the most helpful error ever seen 17:53
Matt-W -> food
(I'll worry about it later)
pugs_svn r27235 | azawawi++ | [S:H:P6] symbol table is now called token table; removed the p6 prefix from types 18:03
r27236 | azawawi++ | [S:H:P6] emit_color => emit_token 18:06
[bjoern] I want to put literal text into a regex, what's the syntax that requires the least amount of escaping (and what needs to be escaped)? 18:16
moritz_ '...'
TimToady 'some literal text'
moritz_ only needs escaping of ' and \
[bjoern] Okay. What's the meaning of <'...'>? 18:17
pugs_svn r27237 | azawawi++ | [S:H:P6] cleanup.. 18:18
TimToady std: /<'...'>/
p6eval std 27236: OUTPUT«##### PARSE FAILED #####␤Unrecognized regex assertion at /tmp/gFzpLBfFvZ line 1:␤------> /<'...'>/␤ expecting any of:␤ assertion␤ name␤FAILED 00:03 36m␤»
TimToady no meaning :) 18:19
if you have something that says <'...'> it's very obsolete
[bjoern] rakudo: grammar Name { regex rulename { <ALPHA> (<ALPHA> | <DIGIT> | <'-'>) ** 0..* }; }; 18:20
p6eval rakudo c7ff05: OUTPUT«Unable to parse block; couldn't find final '}' at line 2, near ") ** 0..* "␤in Main (src/gen_setting.pm:0)␤»
viklund_ std: class T is also { }
moritz_ the error message isn't that good
p6eval std 27237: OUTPUT«ok 00:02 35m␤»
[bjoern] there is no :ignoreasciicase that only treats A..Z = a..z and is otherwise entirely code point sensitive? 18:23
moritz_ [bjoern]: no
but you can use :i in lexical scopes, maybe that helps you 18:24
[bjoern] if i can specify the rules for :i in the scope it might... 18:25
PerlJam [bjoern]: you can probably lexically override the meaning of :i in Perl 6, but I don't think anyone has implemented it yet. 18:26
[bjoern] rakudo: say "'A' | 'B' | 'C' | 'D' | 'E' | 'F'".lc 18:27
p6eval rakudo c7ff05: OUTPUT«'a' | 'b' | 'c' | 'd' | 'e' | 'f'␤»
pugs_svn r27238 | azawawi++ | [S:H:P6] sub keyword..more cleanup... 18:34
Tene um... I thought 'is also' was deprecated in favor of 'augment'... 18:47
PerlJam Tene: true, just not implemented anywhere (except perhaps STD.pm) 18:48
std: augment Int { }
p6eval std 27238: OUTPUT«##### PARSE FAILED #####␤Malformed augment at /tmp/DpTFlw3rex line 1:␤------> augment Int { }␤ expecting any of:␤ multi_declarator␤ typename␤FAILED 00:02 36m␤»
PerlJam std: augment class Int { }
p6eval std 27238: OUTPUT«ok 00:02 35m␤»
PerlJam std: class Int is also { } 18:49
p6eval std 27238: OUTPUT«ok 00:02 35m␤»
PerlJam std: class Int is foobar { }
p6eval std 27238: OUTPUT«ok 00:02 35m␤»
PerlJam okay, makes sense. :)
Matt-W goes back to his 'rtype not set' error 18:50
TimToady STD doesn't know one trait from another 18:56
they're all just \w+ to it
PerlJam yeah, I figured that out :)
what semantics does STD pay attention to? 18:57
It has to know about name declarations ... anything else?
TimToady well, it knows about parameter zones 18:58
last Is there a Perl 6ish way to get the unique members of a list? (I mean, I can dump it as the keys of a hash and then extract them again, but that feels awkward.) 19:05
Tene last: is it okay if they're sorted? 19:06
last Tene: since my next step is to sort them, yup. 19:07
moritz_ rakudo: say <a b c a c d>.uniq.perl
p6eval rakudo c7ff05: OUTPUT«["a", "b", "c", "d"]␤»
Tene ... nm. :)
moritz_ don't know for sure if it's specced, though 19:08
last Beauty! Thanks. 19:10
last rakudo: uniq(map { ($_ * $_) % 256 }, 1..128).join(" ").say 19:11
p6eval rakudo c7ff05: OUTPUT«1 4 9 16 25 36 49 64 81 100 121 144 169 196 225 0 33 68 105 185 228 17 113 164 217 73 132 193 65 201 89 241 145 57 233 161 97 41 249 209 177 153 137 129␤» 19:12
last That's harkening back to the cheap square detection discussion from yesterday. :)
Tene rakudo: my @uniq = gather { for <a b b b c c d> { take $_ unless state $last eq $_; $last = $_ } }; say @uniq.perl 19:14
p6eval rakudo c7ff05: OUTPUT«Use of uninitialized value␤["a", "b", "c", "d"]␤»
Tene IWBNI there was a way to do a post-assign.
$x++ vs ++$x
dalek kudo: e0a9d86 | pmichaud++ | perl6.pir:
Allow operator definitions in settings (resolves RT #66826).
19:32
kudo: c6b283f | pmichaud++ | :
Merge branch 'master' of [email@hidden.address]
lichtkind_ moritz_: in case you wondere euler ha updatelatency 19:47
moritz_ doesn't understand anything 19:48
lichtkind_ there were just 2 chars missing :)
Matt-W argh
lichtkind_ >moritz_: in case you wonder (because my last msg) euler had an update latency
Matt-W there are so many weird things around trying to mix roles into method objects that I don't quite know where to begin 19:49
including things that break differently if you're doing a one-liner or reading from a file with linebreaks in it...
lichtkind_ is busy straighten tables of special vars
pugs_svn r27239 | moritz++ | [t/spec] fix/fudge series operator tests 19:51
dalek kudo: 62094c1 | moritz++ | (2 files):
implement (eager) series operator
19:55
kudo: d03148d | moritz++ | t/spectest.data:
test series operator
Matt-W std: role R { }; sub a { }; &a does R; 19:56
p6eval std 27239: OUTPUT«ok 00:03 48m␤»
pmichaud www.sdtimes.com/link/33566 20:10
moritz_ pmichaud: you're late ;-)
pmichaud apparently so. 20:11
Easy to be late -- too busy hacking. :-)
Matt-W hi pmichaud
any idea what 'rtype not set' means?
it seems to be coming from somewhere inside PCT 20:12
pmichaud it means a binding is failing. 20:13
Matt-W aaah
that would make sense
pmichaud Rakudo and PCT have difficulty with certain binding operations.
Matt-W what was odd is that it doesn't seem to happen if yo uconvert the code to a one-liner. I filed a bug about that. 20:14
pmichaud what bug #?
Matt-W #66966
pmichaud that looks pretty odd. At any rate, I'm not sure that &a := method { ... }; should work there. 20:16
Matt-W Well that's a possibility too, but I felt it should at least fail consistently if it's on one line or many
pmichaud agreed there.
I suspect the second is failing a parse or something. 20:17
well, I need to go pick up my wife from the airport. bbiaw
Matt-W Go safely!
pmichaud will do. :-)
Matt-W you can't get squashed until you've fixed all the bugs :P
moritz_ whoa, 'make spectest' is a big mess for me 20:29
8 failures or so
viklund_ std: sub a { ... } 20:37
p6eval std 27239: OUTPUT«ok 00:02 36m␤»
viklund_ std class A { ... }
std: class A { ... }
p6eval std 27239: OUTPUT«ok 00:02 35m␤»
viklund_ rakudo: class A { ... }
p6eval rakudo c6b283: OUTPUT«Can't return outside a routine␤in Main (/tmp/FOR1XZBHqx:2)␤» 20:38
viklund_ bug?
moritz_ well, NYI
viklund_ rakudo: sub a { ... }
p6eval rakudo c6b283: ( no output )
viklund_ that's implemented (I think)
rakudo: sub a { ... }; a() 20:39
p6eval rakudo c6b283: ( no output )
viklund_ rakudo: sub a { ... }; a(); say "Tjo"
p6eval rakudo c6b283: OUTPUT«Tjo␤»
moritz_ ... (as a term) is a thing that fail()s
apparently fail()ing at class building time isn't handled yet
viklund_ right, that's an earlier step 20:40
lichtkind extended and reformated special vars 21:06
pugs_svn r27240 | lwall++ | [STD] fix for [+] without arguments 21:13
[bjoern] I don't suppose there is some debugging aid to figure out why a string won't match a grammar-based regex yet? 21:14
moritz_ [bjoern]: by installing action methods with say() statements you can find out how far it got 21:15
but there are no real tools for it right now
[bjoern] Ah, okay, will read up on that then
moritz_ [bjoern]: svn.pugscode.org/pugs/t/spec/S05-gr...on-stubs.t contains some examles 21:16
[bjoern] There is some ambiguity, if i recall correctly, in the white space handling in the ABNF grammar in RFC 5234, or some oddity that interacts poorly with backtracking, so my automatic conversion of the grammar fails pretty consistently...
PerlJam std : [+] 21:20
moritz_ std: [+]
p6eval std 27240: OUTPUT«##### PARSE FAILED #####␤Unable to parse array composer; couldn't find final ']' at /tmp/KRQNt2i7tF line 1:␤------> ␤ expecting noun␤FAILED 00:02 37m␤»
moritz_ p6eval is picky about whitespaces ;-)
PerlJam oops, that's moritz_
er, *thanks*
Apparently giving blood affects my ability to type more than usual 21:21
moritz_ not sure if the revision reporting works well with the 'make snap' thing that me and TimToady worked out
PerlJam It looks the same as it did before the fix to me, so I'd guess there's a caching problem somewhere 21:22
(or the fix wasn't a fix or I'm missing something)
Matt-W PerlJam: how much blood did they take?? 21:23
PerlJam 610 milligrams if I read the digital readout correctly.
Matt-W that's not very much 21:24
unless they replaced it with brandy :)
PerlJam (It was up-side down and a little bit away from me and in blocky glaring red LED letters)
Matt-W are you sure it wasn't 610 millilitres?
PerlJam that sounds better but the readout looked like mgs to me. maybe that's something else. 21:25
Matt-W maybe they have a special unit just for blood
PerlJam well, 610 whatever units then :)
moritz_ std: [+] 21:27
p6eval std 27240: OUTPUT«ok 00:02 36m␤»
PerlJam moritz_: did you run something or know the timing of some cron job or what? 21:28
moritz_ PerlJam: I ran something
PerlJam (or just figured that "make snap" hadn't finished?)
ah.
viklund_ should a key get instantiated if I do this %s<a> ~~ :e ? 21:30
or is that a rakudo bug?
[bjoern] So if I set up a action method TOP and pass the object via :action to .parse, shouldn't that always get called if there is some match? 21:31
moritz_ it should, but rakudo currently requires a {*} token at the end of token TOP for that 21:32
viklund_ hmm
moritz_ viklund_: rakudobug (known)
viklund_ nvm
I always check before I submit ;) 21:33
~~ didn't work anyway though
dalek kudo: 7187b9f | moritz++ | docs/ChangeLog:
[docs] update ChangeLog
kudo: 9e9c3cc | moritz++ | src/setting/Operators.pm:
oops, forgot to add Operators.pm
viklund_ rakudo: my %s="a" => 1, "b" => 2; say %s<a> ~~ :e
p6eval rakudo c6b283: OUTPUT«sh: ./perl6: No such file or directory␤»
PerlJam viklund_: are you saying that rakudo autovivifies that key and it shouldn't? 21:34
viklund_ yes
[bjoern] Hmm I get 21:35
viklund_ plus it doesn't run the :e test ;)
[bjoern] No applicable methods.
in method ABNF::Actions::TOP (abnf.p6:5)
called from regex ABNF::TOP (abnf.p6:10)
called from Main (abnf.p6:168)
moritz_ pmichaud: see last commit, the infix:<...> works, but the infix:<eqv> still dies with "Null PMC access in find_method()"
[bjoern] If I add the {*} to the end
moritz_ what's the signature of the TOP method?
and what do you do in that method?
[bjoern] I tried with having both multi method TOP($/) and multi method TOP($match) and just method TOP($/) 21:36
perhaps multi method TOP($match, $tag) ... trying
moritz_ could you nopaste an example?
[bjoern] with multi method TOP($match, $tag) I get Null PMC access in invoke() ... 21:37
Will try to minify an example...
pugs_svn r27241 | moritz++ | [src/perl6] not current svn revision in 'make snap'
[bjoern] lisppaste3: url? 21:38
lisppaste3 To use the lisppaste bot, visit paste.lisp.org/new/perl6 and enter your paste.
[bjoern] pasted "This dies with Null PMC access in invoke() (but using the single argument forms for the TOP method works)" at paste.lisp.org/display/82518 21:40
moritz_ [bjoern]: anyway, the error message is wrong - could you submit that as a bug to [email@hidden.address] please? 21:41
TimToady which error message, "No such file or directory"?
that message is correct 21:42
moritz_ no, "Null PMC access in invoke()"
TimToady in a sense...
ah
[bjoern] If you give me a proper subject line?
TimToady since :e is testing file "1"
moritz_ [bjoern]: "action methods with too many parameters die with Null PMC Access" 21:43
[bjoern] done 21:44
viklund_ ? 21:45
moritz_ thank you
viklund_: bug report submitted
pugs_svn r27242 | lwall++ | [CORE] generate EXPORT::DEFAULT entries from export tags like a real compiler would
viklund_ nice 21:46
moritz_ std: 1 21:47
p6eval std 27242: OUTPUT«ok 00:02 35m␤»
moritz_ reports the wrong revision :(
[bjoern] would probably have refused had submitting a bug report involved using Trac or Bugzilla... :-) 21:48
moritz_ I kinda hate trac too 21:48
for parrot's trac you first have to create an account
[bjoern] I've been through that already... 21:49
pugs_svn r27243 | moritz++ | [evalbot] report svn revisions for STD.pm correctly, hopefully 21:51
viklund_ std: [+] 21:53
p6eval std 27241: OUTPUT«ok 00:02 36m␤»
TimToady how often does std get a new snapshot? 21:54
moritz_ 0-59/18 * * * * is the cronjob entrie 21:56
TimToady: there's something with LTM I don't quite understand... when there's an action method associated with a token, it's always executed when it finished matching... does that limit LTM? 22:01
TimToady you mean does it have side effects that last beyond backtracking? 22:02
moritz_ or is that action method called after the LTM step, so it already knows which path will win?
pmichaud /msg TimToady Paula's flight is delayed by 40 mins.
oops
TimToady ok :)
not hungry yet 22:03
pmichaud okay, good.
moritz_ TimToady: I mean it's a closure, and thus by defintion is not declarative
pmichaud I already have the car however, so should be direct-ish.
TimToady it doesn't count those 22:04
so I don't think LTM is adversely affected
moritz_ ok, thanks 22:05
TimToady though {*} it counts
pmichaud does an explicit {*} affect LTM?
okay.
:-)
that matches my expectations.
TimToady viv doesn't use *any* of the {*} stubs; just throws 'em away
it's all running off the implicit actions
pmichaud moritz_: (eqv) Note that eqv semantics are supposed to be match === semantics. 22:13
So I suspect it should be defined in terms of ===
(for the immutable types) 22:14
I'm not sure why the null find_method shows up. It's very likely/possible that actions.pm is somehow depending on the availability of 'eqv' -- if so, then we need a non-setting version. 22:15
moritz_ pmichaud: ok
pmichaud (about to lose battery here)
moritz_ I don't think it does, since we didn't have an eqv before
pmichaud okay, makes sense. The operator definitions are a bit sensitive to load sequence. 22:16
yes, if we didn't have an eqv before, then that's probably not the cause. (but we should still get our eqv to follow s03 :-) 22:17
moritz_ sure 22:17
pmichaud hmmpf 22:18
maybe i'm not losing battery as soon as I thought
system gave me a warning alert, but it shows 42 minutes left :-)
moritz_ I'm not quite sure I understand what S03 says about eqv 22:20
Tene pmichaud: cat /proc/acpi/battery/BAT0/{info,state} 22:21
dalek kudo: 6c43f93 | moritz++ | src/setting/Operators.pm:
make eqv rely on infx:<===> more
22:21
pmichaud present rate: 990 mA 22:22
remaining capacity: 603 mAh
moritz_ rakudo: say 603/990*60
p6eval rakudo 9e9c3c: OUTPUT«36.5454545454545␤»
Tene present rate: 20987 mW
remaining capacity: 46960 mWh
viklund_ how do I call a method in the super class? 22:27
nextsame? 22:28
viklund_ yep 22:29
moritz_ note that this might also pick a different multi in the same class, if there is one 22:30
viklund_ can I force the super some how? 22:31
moritz_ I'm sure you can, but I don't know how
viklund_ ;)
rakudo: class A { method a(*@A) { say "a {@A.perl}" } }; class B is A { method a(*@A) {nextwith("A STRANGE ARG", |@A)} }; B.new.a("MORE STUFF");
p6eval rakudo 9e9c3c: OUTPUT«a ["MORE STUFF"]␤» 22:32
viklund_ why don't I get "A STRANGE ARG" before "MORE STUFF" here?
ahh, it's become self... 22:33
kind of strange
moritz_ rakudo: class A { multi method x($) { say "A::x" } }; class B is A { multi method x($) { say "B::x(Any)" }; multi method x(Int $a) { say "B::x(Int)"; nextsame; } }; B.new.x(3)
p6eval rakudo 9e9c3c: OUTPUT«B::x(Int)␤B::x(Any)␤»
moritz_ rakudo: class A { multi method x($) { say "A::x" } }; class B is A { multi method x($) { say "B::x(Any)"; nextsame }; multi method x(Int $a) { say "B::x(Int)"; nextsame; } }; B.new.x(3) 22:34
p6eval rakudo 9e9c3c: OUTPUT«B::x(Int)␤B::x(Any)␤A::x␤»
pmichaud afk for a while 22:34
viklund_ rakudo: class A { method a(*@A) { say "A self={self.perl} arg={@A.perl}" } }; class B is A { method a(*@A) {nextwith("A STRANGE ARG", |@A)} }; B.new.a("MORE STUFF");
p6eval rakudo 9e9c3c: OUTPUT«A self="A STRANGE ARG" arg=["MORE STUFF"]␤»
viklund_ self becomes the string...
MMD bug?
moritz_ I think so, yes 22:35
viklund_ the workaround is easy though
moritz_ still worth submitting (hint, hint ;-) 22:36
viklund_ alright
viklund_ wanders of to gmail
viklund_ submitted. 22:43
moritz_ great
moritz_ submits himself to bed
viklund_ sounds like a good idea 22:44
sjohnson Quick p5 question: anyone know the TimToady-approved way to reset the $" variable? 23:32
instead of doing a hack like... my $old = $" ; $" = ', '; stuff(); $" = $old; 23:36
lichtkind_ :sigspace means whitespace is ignored?
jevin sjohnson: local + a block? 23:37
perldoc.perl.org/perlsub.html#Tempo...ia-local() 23:38
skids realizes "rolling hash best seed" is not a google query that is going to result in anything to do with modular arithmetic. 23:55