Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-02-15

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:05 Khisanth joined #perl6
00:08 drbean joined #perl6
00:08 patspam joined #perl6
00:26 colomon joined #perl6
00:37 p6eval joined #perl6
00:37 diakopter oh
00:37 diakopter oops.
00:37 diakopter I broke p6eval.  it's fixed now.
00:37 diakopter pmichaud: p6eval fixed
00:38 diakopter rakudo: say .say
00:38 p6eval rakudo 6d4078: OUTPUT«Mu()␤1␤»
00:39 diakopter rakudo: say say
00:39 p6eval rakudo 6d4078: OUTPUT«␤1␤»
00:39 diakopter rakudo: say.say
00:39 p6eval rakudo 6d4078: OUTPUT«␤1␤»
00:39 diakopter std: say.say
00:39 p6eval std 29727: OUTPUT«Potential difficulties:␤  Unsupported use of bare 'say'; in Perl 6 please use .say if you want to say $_, or use an explicit argument at /tmp/oFRomtswGF line 1:␤------> [32msay[33m⏏[31m.say[0m␤ok 00:01 107m␤»
00:41 jnthn Heh, need to put that check back in. :-)
00:41 jnthn diakopter++ # fixing up p6eval
00:42 jnthn Oh, I see it's just a warning rather than an error though.
00:47 diakopter jnthn: you're awake late
00:48 jnthn diakopter: I got sick a couple of days ago, and it messed up my sleep schedule. :-/
00:49 jnthn Thus I unplannedly slept until 2ish today...and despite knowing I should be heading to sleep now am annoyingly untired.
00:55 snarkyboojum joined #perl6
01:02 colomon jnthn: you definitely should not be less tired than I am, time-zone-wise.
01:07 colomon This minmax.t is more trouble than it is worth.  :()
01:07 colomon *:)
01:13 colomon rakudo: say abs "-10"
01:13 p6eval rakudo 6d4078: OUTPUT«Method 'Num' not found for invocant of class 'Perl6Str'␤current instr.: 'perl6;Any;abs' pc 251814 (src/gen/core.pir:16824)␤»
01:22 maerline joined #perl6
01:22 maerline joined #perl6
01:22 maerline left #perl6
01:23 shockwave joined #perl6
01:23 shockwave Is Rakudo implemented in Parrot's PIR language?
01:23 jaldhar joined #perl6
01:27 colomon shockwave: yes
01:27 colomon Well, mostly there's an additional layer in there, called NQP (Not Quite Perl).
01:29 jnthn shockwave: A chunk of it is written directly in PIR, however large parts are not - writing an entire compiler in an assembly language would be a frurstrating exercise. :-)
01:30 jnthn Rakudo is a mixture of NQP (a subset of Perl 6, including an implementation of Perl 6 regexes, which we use for parsing), Perl 6 itself (we compile a first stage, and use it to compile a bunch of the built-in classes and functions) along with some PIR and C that implement primitives and act as "glue" between the rest and the VM.
01:32 colomon jnthn: Just got "A method named 'min' already exists in class 'Range'. It may have been supplied by a role."
01:32 jnthn Oh?
01:32 jnthn Curious.
01:32 colomon It's actually supplied by "has $.min".  I had thought I could use multi to get another min method as well.
01:32 colomon ?
01:32 jnthn No, 'fraid not.
01:33 jnthn But you shouldn't have to.
01:33 colomon Here's the test in question:
01:33 jnthn If you write a method min() { ... } then the $.min should not bother generating a method automatically.
01:33 shockwave Thanks for the answer, guys.
01:33 colomon (-10..10).min: { abs $^a <=> abs $^b })
01:33 jnthn shockwave: Welcome. :-)
01:33 shockwave left #perl6
01:34 jnthn rakudo: (-10..10).min: { abs $^a <=> abs $^b })
01:34 p6eval rakudo 6d4078: OUTPUT«Confused at line 11, near ")"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
01:34 colomon oh, so my min method should override the auto-generated min method from has $.min ?
01:34 jnthn rakudo: ((-10..10).min: { abs $^a <=> abs $^b }).say
01:34 p6eval rakudo 6d4078: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'perl6;Attribute;accessor_helper_ro' pc 3204 (src/gen/Attribute.pir:400)␤»
01:34 jnthn colomon: It should cause a min method not to be auto-generated, akshually.
01:35 jnthn colomon: If it's trying to generate both, that's a bug.
01:35 colomon seems like we have a bug, then.
01:35 colomon :)
01:35 jnthn Yeah, sounds like it.
01:35 * jnthn is sure he wrote the code that checked there was no method declared already... :-/
01:35 jnthn colomon: File an RT and/or bug me tomorrow. I'm gonna go sleep in a moment.
01:36 jnthn And don't fancy twiddling with the metamodel at 2:30am. :-)
01:36 colomon okay.  good night!
01:36 jnthn night o/
01:42 _jaldhar joined #perl6
01:47 dalek rakudo/master: 5383a13 | (Solomon Foster)++ | src/core/Any-list.pm:
01:47 dalek rakudo/master: Protos for sub versions of min and max.
01:47 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/5383a13d39480a2b4375df38a9b4da3b73703010
01:47 dalek rakudo/master: 542bfa5 | (Solomon Foster)++ | src/core/Str.pm:
01:47 dalek rakudo/master: Cheat version of Str.Num.
01:47 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/542bfa5084f3210fc26d8d57660009ebc6535b8b
01:47 dalek rakudo/master: ee93de4 | (Solomon Foster)++ | src/core/Any-num.pm:
01:47 dalek rakudo/master: We were getting an infinite loop in Any.abs, I think possibly because .Num was returning a float instead of a Num.  Work around that by calling the pir abs function directly on the value returned from self.Num.
01:47 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/ee93de464efe057bb2279b36a35de20bdc4b5133
01:50 colomon jnthn: still awake?
01:58 nihiliad joined #perl6
02:05 pugs_svn r29728 | colomon++ | [t/spec] Skip tests which test for things which are not spec'd and (IMO) not likely to be spec'd the way the tests currently are set up.
02:14 z3ndrag0n joined #perl6
02:27 drbean joined #perl6
02:28 colomon joined #perl6
02:33 colomon rakudo: sin(asin(0.5))
02:33 dalek rakudo/master: 2eb5f98 | (Solomon Foster)++ | src/core/Any-list.pm:
02:33 p6eval rakudo ee93de: OUTPUT«too many positional arguments: 2 passed, 1 expected␤current instr.: 'sin' pc 222680 (src/gen/core.pir:4909)␤»
02:33 dalek rakudo/master: Add simple-minded version of uniq.
02:33 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/2eb5f98f7e2784aebb3fb502a204d99271a73544
02:33 z3ndrag0n_ joined #perl6
02:35 colomon rakudo: 0.5.asin.sin
02:35 p6eval rakudo ee93de:  ( no output )
02:36 colomon rakudo: 0.5.asin('degrees').sin('degrees')
02:36 p6eval rakudo ee93de:  ( no output )
02:37 z3ndrag0n joined #perl6
02:38 colomon rakudo: sin(asin(0.5, 'degrees'), 'degrees');
02:38 p6eval rakudo ee93de:  ( no output )
02:44 dalek rakudo/master: 07e96ba | (Solomon Foster)++ | t/spectest.data:
02:44 dalek rakudo/master: Turn on uniq.t.
02:44 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/07e96bac1b1e78519b59deb682112796c19035a1
02:46 arlinius joined #perl6
02:54 tjc joined #perl6
02:59 nihiliad joined #perl6
02:59 s1n continuing the conversation from earlier about @/$ flattening...
03:00 s1n the last example i posted (my @b = <a b c>; say $b;) does not compute with me
03:00 s1n why would @b and $b be any different? i thought we got rid of context
03:01 dukeleto joined #perl6
03:01 dukeleto howdy
03:02 pugs_svn r29729 | colomon++ | [t/spec] Refudge power.t a tad.
03:03 colomon rakudo: say pi.WHAT
03:04 p6eval rakudo 07e96b: OUTPUT«Num()␤»
03:04 colomon rakudo: say i.WHAT
03:04 p6eval rakudo 07e96b: OUTPUT«Could not find non-existent sub &i␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
03:04 colomon rakudo: say e.WHAT
03:04 p6eval rakudo 07e96b: OUTPUT«Num()␤»
03:07 dalek rakudo/master: 3d02e7c | (Solomon Foster)++ | src/core/Complex.pm:
03:07 dalek rakudo/master: More Complex versions of infix:<**>.
03:07 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/3d02e7cc977f1394280181fb6425721a76f60056
03:07 dalek rakudo/master: cf0cfea | (Solomon Foster)++ | t/spectest.data:
03:07 dalek rakudo/master: Turn on power.t.
03:07 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/cf0cfea08beeb337a5370fe89edcddcb3cc2941f
03:17 pugs_svn r29730 | colomon++ | [t/spec] Move capitalize tests from uc.t to capitalize.t.
03:20 nihiliad joined #perl6
03:23 pugs_svn r29731 | colomon++ | [t/spec] Unfudge test that now passes.
03:25 pugs_svn r29732 | colomon++ | [t/spec] Fudge todo tests.
03:33 LionMadeOfLions joined #perl6
03:33 colomon jnthn, pmichaud: looking at subst with a Code replacement -- if I have a Match object, how do I evaluate the Code with the Match object as $/ ?
03:33 colomon Trying to figure out how I can code s:g/(\w+)/{ucfirst $1}/ (from the spec) up with what we've got now....
03:34 snarkyboojum joined #perl6
03:34 colomon afk # bedtime
03:36 dalek rakudo/master: 70667a0 | (Solomon Foster)++ | t/spectest.data:
03:36 dalek rakudo/master: Turn on lc.t, uc.t, and e.t.
03:36 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/70667a0a992606b8c409329e7c9443ca4627d24c
03:49 ihrd joined #perl6
03:54 gfx joined #perl6
04:00 quester joined #perl6
04:13 synth joined #perl6
04:24 ihrd joined #perl6
04:27 ihrd left #perl6
04:37 lue ...hello?
04:48 lue hello... hellooo?
05:12 lue echo echo echo
05:14 diakopter hi
05:20 sjohnson i /op diakopter  colomon
05:20 sjohnson oops
05:25 cjk101010 joined #perl6
05:26 patspam joined #perl6
05:38 vamped joined #perl6
06:32 am0c joined #perl6
06:32 k23z__ joined #perl6
06:33 scp1 joined #perl6
06:33 scp1 :)
06:48 mberends joined #perl6
06:52 mberends colomon++ # 4051 (24.7% of 16418) pass, 0 fail
07:03 uniejo joined #perl6
07:06 kaare joined #perl6
07:07 Su-Shee joined #perl6
07:08 Su-Shee good morning
07:08 quester left #perl6
07:20 scp1 morning
07:27 viklund joined #perl6
07:59 iblechbot joined #perl6
08:11 clausi joined #perl6
08:17 meppl joined #perl6
08:18 mssm joined #perl6
08:24 mathw Morning
08:28 masak joined #perl6
08:28 masak good morning, #perl6!
08:29 diakopter masak: MORN
08:29 masak :)
08:30 diakopter rakudo: my byte $a
08:30 p6eval rakudo 70667a: OUTPUT«Malformed my at line 11, near "byte $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
08:30 diakopter rakudo: my Byte $a
08:30 p6eval rakudo 70667a: OUTPUT«In "my" declaration, typename Byte must be predeclared (or marked as declarative with :: prefix) at line 11, near " $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
08:30 k23z__ joined #perl6
08:31 diakopter masak: rakudo recognizes only uppercase identifiers as typenames?
08:31 masak diakopter: I just arrived. I don't even understand the question :)
08:32 diakopter rakudo: my ::byte $a
08:32 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
08:32 diakopter rakudo: my ::Byte $a
08:32 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
08:32 masak diakopter: but 'byte' has never worked in Rakudo so far, so why should it now?
08:32 diakopter I'm referring to the parser.
08:32 masak I think I can rakudobug those.
08:32 diakopter it gave different results for Byte vs byte
08:32 masak rakudo: my ::a $a
08:32 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
08:32 diakopter it didn't recognize my byte $a
08:32 masak diakopter: yes. I don't know why.
08:33 masak diakopter: I'm not familiar with the quirks of this new thing they replaced alpha with :)
08:33 masak yet.
08:33 * masak submits rakuodbug
08:34 mathw Everything suddenly livens up when masak appears!
08:34 mathw Saluton!
08:34 * diakopter snivels
08:35 diakopter (sorry, I read "livens" and thought "I should snivel")
08:35 masak hugme: hug diakopter
08:35 * hugme hugs diakopter; masak++
08:36 masak hm -- people get karma for hugging now? :)
08:36 masak I thought hugging was its own reward.
08:39 * mathw hugs masak
08:39 masak \o/
08:40 p6eval joined #perl6
08:41 diakopter rakudo: $*me = 3; say $*me.WHAT
08:41 p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
08:41 diakopter o
08:42 diakopter Junction.pir ?
08:42 Schwern joined #perl6
08:42 diakopter zomg
08:42 diakopter curiouser and curiouser
08:44 masak Junction.pir might simply be the last file loaded into Rakudo.
08:44 masak rakudo: my $*x
08:44 p6eval rakudo 70667a:  ( no output )
08:44 masak rakudo: my $*x = 42
08:44 p6eval rakudo 70667a:  ( no output )
08:45 masak rakudo: my $*x = 42; say $*x.WHAT
08:45 p6eval rakudo 70667a: OUTPUT«Int()␤»
08:45 masak rakudo: $*x = 42; say $*x.WHAT
08:45 p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
08:45 * masak submits rakudobug
08:47 masak rakudo: $*x = 42
08:47 p6eval rakudo 70667a: OUTPUT«Cannot assign to readonly value␤current instr.: '&infix:<=>' pc 15648 (src/builtins/Junction.pir:169)␤»
08:49 diakopter rakudo: say $*me.WHAT
08:49 p6eval rakudo 70667a: OUTPUT«Failure()␤»
08:50 diakopter masak: pinch me, I must be dreaming.
08:51 masak diakopter: how so?
08:51 diakopter rakudo: say 1.*WHAT
08:51 p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
08:51 diakopter rakudo: say 1*.WHAT
08:51 p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
08:52 masak o.O
08:52 masak stop producing weird things! :)
08:52 masak I can't keep up.
08:53 diakopter I don't know what those are supposed to mean, but I think pmichaudry and TimToadstool and jnthnthnthn mentioned iterators at least once in the past few weeks. ;)
08:53 masak ISTR that too :)
08:53 diakopter std: say 1 * .WHAT
08:53 p6eval std 29732: OUTPUT«ok 00:01 106m␤»
08:54 masak diakopter: by the way, what's with the name-calling? is it your way of expressing affection? :P
08:54 diakopter rakudo: say * * .WHAT
08:54 p6eval rakudo 70667a: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
08:55 masak I believe sjohnson has attempted the same at times, with varying results.
08:55 diakopter oh, just, I didn't meant to namecall; just... warping names.  probably I shouldn't.
08:55 masak up to you, I guess.
08:55 * diakopter won't
08:56 masak now, about that 1.*WHAT thing...
08:56 masak rakudo: say 42.WHAT
08:56 p6eval rakudo 70667a: OUTPUT«Int()␤»
08:56 masak rakudo: say 42.?WHAT
08:56 p6eval rakudo 70667a: OUTPUT«Int()␤»
08:56 masak rakudo: say 42.+WHAT
08:56 p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
08:56 moritz_ good morning
08:56 masak moritz_: o/
08:57 moritz_ rakudo: say 42.*WHAT
08:57 p6eval rakudo 70667a: OUTPUT«get_iter() not implemented in class 'Sub'␤current instr.: '!dispatch_.*' pc 530 (src/glue/dispatch.pir:167)␤»
08:57 masak ok, so it's the "call all methods" thing.
08:57 diakopter moritz_: rakudo swapped to new git clone on p6eval, and "use Safe" emulation tweaked a bit.
08:57 masak it's broken.
08:57 masak what's interesting is that .? isn't broken. :)
08:57 masak I think it should be, if correctly implemented.
08:59 moritz_ diakopter: did you also remove ng: from p6eval?
08:59 diakopter no, but I disabled its cron
09:00 diakopter oh, and removed its parrot (oops!)
09:00 diakopter hee
09:00 diakopter ng: oops
09:00 p6eval ng 33bf19: OUTPUT«Could not find non-existent sub &oops␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:00 diakopter oh
09:00 diakopter maybe not
09:00 diakopter hmm, I wonder whose parrot I stole
09:01 diakopter rakudo: trahend
09:01 p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &trahend␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:01 diakopter rakudo: &trahend
09:01 p6eval rakudo 70667a: OUTPUT«Symbol '&trahend' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)␤»
09:01 pugs_svn r29733 | moritz++ | disable ng: target
09:01 * moritz_ forgot [evalbot] in the commit message
09:03 masak moritz_: quick! do a force push with the correct commit! :)
09:09 diakopter rakudo: say &1
09:09 p6eval rakudo 70667a: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class ''␤current instr.: '!postcircumfix:<[ ]>' pc 10607 (src/builtins/Iterator.pir:25)␤»
09:09 frettled That one was slightly less than awesome.
09:10 diakopter </sarcasm><sarcasm>
09:10 moritz_ rakudo: say "at least some things work"
09:10 p6eval rakudo 70667a: OUTPUT«at least some things work␤»
09:10 frettled diakopter: What, new sarcasm in the coming? :D
09:10 diakopter :U
09:11 * masak submits rakudobug
09:11 * diakopter happy to have figured out my sprixelbug
09:11 diakopter celebrating with rakudofuzzing
09:11 frettled The masakbot needs op.
09:12 masak frettled: classical rookie mistake :P
09:12 * masak does the Mickey-Mouse-Sorcerer's-Apprentice thing with the waves
09:13 masak mwhahaha haa!
09:13 * frettled edges away nervously.
09:13 diakopter rakudo: say |0
09:13 p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &prefix:<|>␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:14 masak speaking of that, I really like the face of Smith when he has consumed the Oracle. it's madness and euphoria combined, somehow.
09:14 masak the kind that only an unstoppable virus suddenly endowed with omniscience can muster.
09:14 moritz_ evalbot control restart
09:14 p6eval joined #perl6
09:15 diakopter rakudo: say (4|0).WHAT
09:15 p6eval rakudo 70667a: OUTPUT«Junction()␤»
09:15 diakopter rakudo: say (4|0)
09:15 p6eval rakudo 70667a:  ( no output )
09:15 nbrown joined #perl6
09:16 diakopter rakudo: say 00.WHAT
09:16 p6eval rakudo 70667a: OUTPUT«Int()␤»
09:16 diakopter std: say 00.WHAT
09:16 p6eval std 29732: OUTPUT«Potential difficulties:␤  Leading 0 does not indicate octal in Perl 6 at /tmp/qodLVZOrkv line 1:␤------> [32msay 00[33m⏏[31m.WHAT[0m␤ok 00:01 105m␤»
09:17 frettled masak: http://www.acc.umu.se/~maswan/AgentElrond/
09:17 diakopter rakudo: say 0..WHAT
09:17 p6eval rakudo 70667a: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'WHAT' pc 216565 (src/gen/core.pir:0)␤»
09:17 mathw I'm not sure I like that 'helpful' warning
09:18 diakopter masak: see the last ^
09:18 mathw 'Redundant leading 0 in numeric literal' might be more fun :)
09:18 masak frettled: heh :)
09:19 * masak submits rakudobug for 0..WHAT
09:19 masak diakopter: what's happening there? how does it parse?
09:19 frettled masak: it's the wrong text, but the right concept
09:19 frettled The original was awesome.
09:19 frettled rakudo: say .WHAT
09:19 p6eval rakudo 70667a: OUTPUT«Mu()␤»
09:19 frettled Mu \o/
09:20 diakopter masak: "so what? who cares?" <voice of SNL guy imitating lady on The View>
09:20 masak :)
09:20 masak diakopter: this goes in the report, you know :P
09:21 diakopter hrm.  infractions**=infractions
09:21 masak :)
09:21 diakopter rakudo: my $i**=$i;
09:21 p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
09:22 masak that might actually be the right behaviour.
09:23 diakopter seems unsurprising if it is (I agree).
09:24 diakopter rakudo: my $a=1e5; --$a while $a; say 'finished'
09:24 p6eval rakudo 70667a: OUTPUT«finished␤»
09:24 diakopter rakudo: my $a=1e4; --$a while $a; say 'finished'
09:24 p6eval rakudo 70667a: OUTPUT«finished␤»
09:24 diakopter rakudo: my $a=1e6; --$a while $a; say 'finished'
09:25 p6eval rakudo 70667a:  ( no output )
09:25 diakopter 1 million decrements takes more than 15s
09:26 TimToady but see S03:3801, which claims it should be 1
09:26 moritz_ new gcc versions would throw out that loop completely (with -O2)
09:26 moritz_ rakudo: my $i**=$i; say $i
09:26 p6eval rakudo 70667a: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
09:27 diakopter rakudo: my Int $a=1000000; --$a while $a; say 'finished'
09:27 p6eval rakudo 70667a:  ( no output )
09:27 diakopter moritz_: yeah, in a language that's optimizable :P
09:27 moritz_ currently type constraints make the code less efficient in rakudo
09:27 moritz_ diakopter: aye
09:28 diakopter oh
09:28 diakopter rakudo: my Int $a=100000; --$a while $a; say 'finished'
09:28 p6eval rakudo 70667a: OUTPUT«finished␤»
09:28 diakopter yeah, it did better with the literal Num
09:31 diakopter rakudo: say (7^^7).WHAT
09:31 * masak submits rakudobug based on what TimToady said
09:31 p6eval rakudo 70667a: OUTPUT«Method 'WHAT' not found for invocant of class 'Undef'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:31 * masak submits rakudobug
09:32 bacek joined #perl6
09:32 diakopter rakudo: say (7^^^^^^7).WHAT
09:32 p6eval rakudo 70667a: OUTPUT«Method 'WHAT' not found for invocant of class 'Undef'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:32 diakopter o_O
09:33 diakopter std: say (7^^^^^^7).WHAT
09:33 p6eval std 29733: OUTPUT«[31m===[0mSORRY![31m===[0m␤Preceding context expects a term, but found infix ^^ instead at /tmp/8KnrsfoSCn line 1:␤------> [32msay (7^^^^[33m⏏[31m^^7).WHAT[0m␤FAILED 00:01 106m␤»
09:33 masak it parses.
09:33 diakopter not in std
09:34 masak oh wait. you're right.
09:34 * masak submits rakudobug
09:35 jnthn oh morning
09:35 jnthn .oO( omg, I'm awake and it actually still *is* morning. )
09:35 masak jnthn: it's started.
09:35 jnthn omfg
09:35 * jnthn runs away to the comfort of his coffee machine
09:36 diakopter moritz_: p6eval seems much more responsive... (both std and rakudo)
09:36 masak hugme: hug p6eval
09:36 * hugme hugs p6eval
09:37 masak #perl6 seems much more responsive, come to think of it :)
09:37 moritz_ that too
09:40 masak rakudo: undef.WHAT
09:40 p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &undef␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:40 masak rakudo: Undef.WHAT
09:40 p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &Undef␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:41 jnthn There Is No Undef.
09:41 frettled This is not the spoon you're looking for.
09:42 avuserow joined #perl6
09:42 masak jnthn: just checking, because (7^^7).WHAT apparently tried to call .WHAT on Undef. :)
09:42 mathw :o
09:42 mathw that seems like a strange thing to do
09:42 mathw naughty rakudo
09:43 moritz_ masak: Undef is a parrot class leaking through
09:43 diakopter std: my %r = 4; say ::%%r
09:43 p6eval std 29733: OUTPUT«ok 00:01 107m␤»
09:43 diakopter rakudo: my %r = 4; say ::%%r
09:43 p6eval rakudo 70667a: OUTPUT«Confused at line 11, near "say ::%%r"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
09:44 diakopter I don't know whether that's a rakudobug, stdbug, both, or neither.
09:44 TimToady std: :: % %r
09:44 p6eval std 29733: OUTPUT«Potential difficulties:␤  Variable %r is not predeclared at /tmp/BecvEU8Bg6 line 1:␤------> [32m:: % %r[33m⏏[31m<EOL>[0m␤ok 00:01 106m␤»
09:44 diakopter rakudobug, then
09:44 * masak submits it
09:45 masak rakudo: 7^^^^^^7
09:45 p6eval rakudo 70667a:  ( no output )
09:46 masak moritz_: yes. I guessed as much in the rakudobug RT ticket.
09:47 masak moritz_: wonder why 7^^7 produces it.
09:47 diakopter rakudo: if 1 { &die 4 }
09:47 p6eval rakudo 70667a: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
09:47 pugs_svn r29734 | lwall++ | [STD] add WHAT etc. to list of functions that require an argument
09:47 masak diakopter: two terms in a row?
09:48 masak std: &die 4
09:48 TimToady std: if 1 { &die 4 }
09:48 p6eval std 29733: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/zb5arA2H0s line 1:␤------> [32m&die [33m⏏[31m4[0m␤    expecting any of:␤ bracketed infix␤  infix or meta-infix␤      statement modifier loop␤FAILED 00:01 126m␤»
09:48 p6eval std 29733: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/XkZNKvj04l line 1:␤------> [32mif 1 { &die [33m⏏[31m4 }[0m␤    expecting any of:␤        bracketed infix␤  infix or meta-infix␤      statement modifier loop␤FAILED 00:01 126m␤»
09:48 diakopter ahah
09:48 moritz_ and I thougth that ng was supposed to bring us awesome error messages, comparable with those of STD.pm
09:49 TimToady as soon as ng can run STD, sure :)
09:50 * masak submits LTA error message rakudobug
09:50 * masak has a feeling we can go on like this all day
09:51 diakopter std: if 1 { say(;) }
09:51 p6eval std 29733: OUTPUT«ok 00:01 105m␤»
09:51 diakopter rakudo: if 1 { say(;) }
09:51 p6eval rakudo 70667a: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
09:52 diakopter (or all night)
09:52 * TimToady has the feeling he cannot go on like this all night, or he will produce an LTA error message
09:52 mathw masakbot is at full functionality :)
09:53 masak keep 'em coming.
09:54 diakopter std: say Int()
09:54 p6eval std 29733: OUTPUT«ok 00:01 105m␤»
09:54 diakopter rakudo: say Int()
09:54 p6eval rakudo 70667a: OUTPUT«Could not find non-existent sub &Int␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
09:55 * masak submits rakudobug
09:55 diakopter sprixel: say Int()
09:55 p6eval sprixel 29734: OUTPUT«NYI: term__S_identifier␤»
09:55 diakopter hee
09:55 masak the fact that STD parses that one doesn't mean it should produce anything sensible, though.
09:56 masak are .() calls with empty param lists made on type values defined by the spec?
09:56 diakopter once upon a time..
09:56 masak I know .perl produces them, so they oughta be...
09:56 moritz_ not perl
09:56 moritz_ stringification
09:56 moritz_ rakudo: say Int.perl
09:56 p6eval rakudo 70667a: OUTPUT«Int␤»
09:57 masak right. thanks.
09:57 moritz_ rakudo: say ~Int
09:57 p6eval rakudo 70667a: OUTPUT«Int()␤»
09:57 masak does that mean that 'Int()' isn't necessarily meaningful Perl 6 code?
09:57 moritz_ aye
09:58 diakopter stdbug then?
09:58 masak no, it definitely parses.
09:58 masak nothing wrong with it as such.
09:58 diakopter no,
09:58 masak it's like 42[5].
09:59 masak it parses, but it doesn't mean anything sensible in Standard Perl 6.
09:59 diakopter it should parse only if Int were a subname, or it would fail.
09:59 TimToady well, it's coercing Nil
09:59 frettled Nil will not be coerced! :)
09:59 diakopter std: say Boo()
09:59 p6eval std 29734: OUTPUT«Undeclared name:␤      'Boo' used at line 1␤ok 00:01 105m␤»
09:59 TimToady my Int $x = Nil;  # specced to make Int
09:59 diakopter std: class Boo { }; say Boo()
09:59 p6eval std 29734: OUTPUT«ok 00:01 105m␤»
10:00 TimToady so I suspect .() should just be identity on a type
10:00 masak noted in the rakudobug. thanks.
10:01 diakopter std: class Boo { }; say Boo....()
10:01 p6eval std 29734: OUTPUT«ok 00:01 106m␤»
10:02 TimToady std: say 1......()
10:02 p6eval std 29734: OUTPUT«ok 00:01 106m␤»
10:03 diakopter rakudo: class Boo { method new() { } }; say Boo.new
10:03 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:04 masak rakudo: class Boo {}; say Boo.new
10:04 p6eval rakudo 70667a:  ( no output )
10:04 * masak submits rakuodbug
10:04 diakopter rakuod: blimey
10:05 masak rakudo: class Boo { method foo() { } }; say Boo.foo
10:05 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:06 diakopter rakudo: class Boo { method new() { 1; } }; say Boo.new.WHAT
10:06 p6eval rakudo 70667a: OUTPUT«Int()␤»
10:06 masak oh.
10:06 masak rakudo: sub foo() {}; say foo
10:06 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:07 masak the Null PMC access isn't from having a method, it's from the return value.
10:07 diakopter seems so
10:07 * masak modifies the rakudobug
10:08 diakopter rakudo: class Boo { method invoke() { say 444; } }; say Boo.new.()
10:08 p6eval rakudo 70667a: OUTPUT«invoke() not implemented in class 'Boo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:08 diakopter does it need a different signature?
10:08 diakopter (if so, the error should clarify as such)
10:08 moritz_ invoke() is also a parrotism
10:09 moritz_ class Boo { method postcircumfix:<[]>() { say 444; } }; Boo.new.()
10:09 moritz_ rakudo: class Boo { method postcircumfix:<[]>() { say 444; } }; Boo.new.()
10:09 p6eval rakudo 70667a: OUTPUT«invoke() not implemented in class 'Boo'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
10:10 diakopter rakudo: class Boo does Snorkable { };
10:11 p6eval rakudo 70667a: OUTPUT«Null PMC access in type()␤current instr.: 'perl6;Boo;!class_init_11' pc 351 (EVAL_1:158)␤»
10:11 * masak submits
10:11 masak diakopter++ # Snorkable
10:12 masak sounds like a concept out of the Mumin mythology :)
10:12 masak rakudo: class Boo does 42 { };
10:12 p6eval rakudo 70667a: OUTPUT«Malformed package declaration at line 11, near "does 42 { "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
10:12 masak rakudo: my $a; class Boo does $a { };
10:12 p6eval rakudo 70667a: OUTPUT«Malformed package declaration at line 11, near "does $a { "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
10:13 masak rakudo: class Boo does Boo { };
10:13 p6eval rakudo 70667a: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Boo'␤current instr.: 'perl6;ClassHOW;add_composable' pc 3686 (src/metamodel/ClassHOW.pir:159)␤»
10:13 * masak submits rakuodbug
10:13 masak std: class Boo does Boo { };
10:13 p6eval std 29734: OUTPUT«ok 00:01 105m␤»
10:13 masak that's cik :)
10:13 masak s/cik/sick/
10:13 diakopter rakudo: class _'_'_ { method new() { _'_'_ } }; say _'_'_.new.WHAT
10:14 p6eval rakudo 70667a: OUTPUT«_'_'_()␤»
10:14 diakopter (no bug, just cute)
10:14 masak :)
10:15 nbrown joined #perl6
10:15 TimToady zzz &
10:16 diakopter std: class class is class { }
10:16 p6eval std 29734: OUTPUT«ok 00:01 105m␤»
10:16 diakopter rakudo: class class is class { }
10:16 p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'␤current instr.: 'perl6;class;!class_init_11' pc 351 (EVAL_1:158)␤»
10:17 diakopter ^z &
10:17 masak rakudo: class A is A {}
10:17 p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'␤current instr.: 'perl6;A;!class_init_11' pc 351 (EVAL_1:158)␤»
10:17 jnthn Well, at least we kinda get that one right...
10:17 masak rakudo: class A {}; class B is A {}
10:17 p6eval rakudo 70667a:  ( no output )
10:17 * masak submits LTA rakudobug
10:17 jnthn Though we probably want a fallback trait_mod:is
10:18 TimToady class A is A should find the name A already introduced as a type
10:19 frettled It should return a Rand type.
10:19 jnthn TimToady: I was referring to the "is class" one.
10:19 TimToady same thing
10:19 jnthn Nope.
10:20 jnthn There's no type "class"
10:20 jnthn So it ges translated to a :class pair.
10:20 TimToady there is after you've said 'clas clas'
10:20 jnthn oh
10:20 jnthn meh.
10:21 TimToady sorry, bad connection -> bad typing
10:21 moritz_ the key is to type locally :-) (yes, I know...)
10:21 * jnthn very much hopes there will be the same enthusiasm to go through RT and clear up the fixed tickets.
10:21 TimToady I should sleep locally...
10:21 TimToady zzz & # really
10:22 jnthn o/
10:22 masak jnthn: I hope so too! :)
10:23 IllvilJa joined #perl6
10:27 masak after 15 rakudobugs, a lull seems to have set in.
10:27 masak diakopter++ # masak+diakoter make a good mech
10:28 jnthn masak: fwiw, I'll probably not look at RT while there's So Many Spectests in spectest.data left to unfudge. So you can take your time to fill it up. :-)
10:28 jnthn s/unfudge/uncomment/
10:28 masak jnthn: understandable.
10:29 masak jnthn: and I suspect my focus will gradually shift to getting the Ecosystem up and running again.
10:29 * masak tries to run Druid, and see what falls out
10:30 snarkyboojum joined #perl6
10:34 masak Druid currently fails 10 lines into the code, on a statement-modifying for loop. the feature I didn't manage to add a couple of days ago.
10:34 * masak .oO( I bet jnthn or pmichaud can do it easily )
10:36 UjinT34 joined #perl6
10:44 masak std: say
10:44 p6eval std 29734: OUTPUT«Potential difficulties:␤  Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/zX2BGwQhfN line 1:␤------> [32msay[33m⏏[31m<EOL>[0m␤ok 00:01 107m␤»
10:44 masak rakudo: say
10:44 p6eval rakudo 70667a: OUTPUT«␤»
10:44 * masak submits rakudobug
10:45 masak std: print
10:45 p6eval std 29734: OUTPUT«Potential difficulties:␤  Unsupported use of bare 'print'; in Perl 6 please use .print if you meant $_, or use an explicit invocant or argument at /tmp/tzCoyo7j1e line 1:␤------> [32mprint[33m⏏[31m<EOL>[0m␤ok 00:01 105m␤»
10:45 masak rakudo: print
10:45 p6eval rakudo 70667a:  ( no output )
10:50 masak rakudo: (class { method foo() { say "OH HAI" } }).foo
10:50 p6eval rakudo 70667a: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3418 (src/gen/Attribute.pir:473)␤»
10:50 masak locally, that gives me a failed assertion, too.
10:50 * masak submits rakudobug
10:51 k23z__ joined #perl6
10:52 masak rakudo: (class {}).foo
10:52 p6eval rakudo 70667a: OUTPUT«Invalid namespace key in set_pmc_keyed␤current instr.: 'perl6;ClassHOW;new' pc 3418 (src/gen/Attribute.pir:473)␤»
10:56 masak rakudo: my $a = 0 but True
10:56 p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<does>'␤current instr.: 'infix:<but>' pc 214077 (src/gen/core.pir:2169)␤»
10:56 * masak submits rakudobug
10:57 masak rakudo: 0 but True
10:57 p6eval rakudo 70667a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<does>'␤current instr.: 'infix:<but>' pc 214077 (src/gen/core.pir:2169)␤»
10:58 jnthn masak: You're mostly running into known NYI.
10:59 mikehh_ joined #perl6
10:59 masak jnthn: hm. guess I am. most of those will likely have spectests.
11:00 jferrero joined #perl6
11:00 masak nevertheless, from my point of view, they're regressions.
11:01 snarkyboojum_ joined #perl6
11:03 jnthn oh, sure, you can file them.
11:04 masak \o/
11:04 jnthn As I said, I just hope you or others will be willing to help clear out the RT queue.
11:04 jnthn Once a bunch are fixed up.
11:05 masak I'll try. it would probably be good for my Rakudo knowledge to jump into the implementation fray early on.
11:13 moritz_ note that say() and print() being disallowed can be detected at run time
11:14 moritz_ (without arguments, that is)
11:17 masak aren't 'say()' and 'print()' allowed?
11:18 masak and what's the remarkable thing about 'can be detected at run time'? did you mean 'compile time'?
11:19 moritz_ I mean it's as easy as multi say (*@args) { die "say without parameters disallowed" if @args == 0; ... }
11:19 moritz_ std: say()
11:19 p6eval std 29734: OUTPUT«ok 00:01 107m␤»
11:19 moritz_ hm
11:19 moritz_ maybe I'm wrong
11:19 moritz_ ng: say 1
11:20 jnthn I thought it was compile time check.
11:21 masak moritz_: yes, for once I think you are. 'say;' is disallowed, 'say();' is allowed.
11:22 * moritz_ dreads the "empty say not allowed" error message for say + syntax error later on
11:25 masak moritz_: why is that something to dread? the bare say is only a warning.
11:26 moritz_ masak: because the old rakudo did it that way
11:26 pmurias joined #perl6
11:26 masak I'm not following.
11:27 moritz_ in auld rakudo, when you wrote 'say 3 4'
11:27 moritz_ it didn't say "two terms in a row"
11:27 moritz_ but "bare say not allowed at ... "
11:27 masak std: say 3 4
11:27 p6eval std 29734: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/0ZSLm3DtpG line 1:␤------> [32msay 3 [33m⏏[31m4[0m␤    expecting any of:␤        bracketed infix␤  infix or meta-infix␤      statement modifier loop␤FAILED 00:01 107m␤»
11:27 masak moritz_: strangely enough, I've never run into that one.
11:27 moritz_ masak: I have, many tiimes
11:28 masak moritz_: I sometimes ran into the `for 1,2,3, { block }` typo.
11:29 moritz_ std: for 1,2,3, { block }
11:29 p6eval std 29734: OUTPUT«[31m===[0mSORRY![31m===[0m␤Expression needs parens to avoid gobbling block at /tmp/xYkkiexVHu line 1:␤------> [32mfor [33m⏏[31m1,2,3, { block }[0m␤Missing block (apparently gobbled by expression) at /tmp/xYkkiexVHu line 1 (EOF):␤------> [32mfor 1,2,3, { block
11:29 p6eval ..}[33m⏏[31m<…
11:31 payload joined #perl6
11:33 pausenclown joined #perl6
11:35 drbean joined #perl6
11:38 pausenclown oh dear. i was toying around with the grammexes as in the calendar example and wondered how to handle delimited strings.
11:40 pausenclown and had a look in the std.pm to see if i could cargo cult something from that
11:40 masak 'delimited strings'? aren't all strings delimited?
11:40 pausenclown *overload*
11:40 * masak flaunts his ignorance
11:41 pausenclown something like "foo" or bar or [%baz%], masak.
11:42 masak that looks like three examples of very different entities.
11:42 pausenclown somethings weird with my keyboard layout
11:42 pausenclown i meant 'bar'
11:42 masak ok.
11:43 masak so you're basically talking about string literals.
11:43 moritz_ STD.pm might be a bit... too much with its approach
11:43 masak yes, those are not entirely trivial to parse.
11:43 masak consider just calling into Rakudo's own Perl 6 rule for parsing string literals.
11:44 masak alpha: say "Can I call you like this?"
11:44 masak moritz_: I see a need sometimes for doing evals on the old Rakudo branch.
11:45 masak at least until ng-now-master reaches its full potential.
11:45 moritz_ but usually you can just do \' [ <-[']> | \\ \' ]*    \'
11:45 moritz_ similar to what you'd do in Perl 5
11:50 pausenclown yeah but in a perl book i read online they had a syntax like token { "[" ~ "]" restoftoken }. when i try that rakudo croaks. not implemented or deprecated or sillymedumb?
11:53 moritz_ it worked last I looked
11:53 moritz_ (and yes, goal matching is much nicer for that)
11:53 moritz_ rakudo: say '"abc"' ~~ / \" ~ \"
11:53 p6eval rakudo 70667a: OUTPUT«Confused at line 11, near "say '\"abc\""␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
11:53 moritz_ rakudo: say '"abc"' ~~ / \" ~ \" \w+ /
11:53 p6eval rakudo 70667a: OUTPUT«"abc"␤»
11:54 moritz_ matches
11:54 pausenclown can you point me at a detailed documentation for this?
11:54 moritz_ rakudo: say '"abc' ~~ / \" ~ \" \w+ /
11:54 p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
11:54 moritz_ that bails out, as it should
11:54 moritz_ pausenclown: S05
11:54 moritz_ http://perlcabal.org/syn/S05.html#New_metacharacters to be more specific
11:55 pausenclown cool ty.
11:56 pausenclown do you know about already made popular grammars? like Grammar::Html or Grammar::TT? Is there a namespace for this?
11:57 moritz_ I've written a JSON grammar in JSON::Tiny
11:57 moritz_ http://github.com/moritz/json/
11:59 bluescreen joined #perl6
11:59 pausenclown that was actually the example in the book i mentioned. when i copy and pasted it didnt work. ill try the repository
12:01 pausenclown i just wonder if JSON::Tiny::Grammar shouldnt be Grammar::JSON
12:02 moritz_ there are also examples for XML, URIs and so on
12:02 moritz_ in other github repos
12:03 moritz_ http://github.com/masak/proto/blob/master/projects.list lists know modules; some of them have (or contain) grammars
12:03 moritz_ pausenclown: not Grammar::JSON - you also don't name things Class::Foo just because Foo is a class
12:04 moritz_ and grammars are (sadly) rather tightly tied to the class that uses them
12:05 pausenclown why? you can tie entirely different action classes to a single grammar.
12:05 moritz_ yes, but the structure of the captures is very specific to a single grammar
12:06 moritz_ what I mean is that you can't easily replace the grammar with another grammar that parses the same text, but works differently
12:06 moritz_ for a given action class
12:07 moritz_ lunch&
12:11 snarkyboojum joined #perl6
12:11 pausenclown the last line goes a little over my scope and maybe im xy. what do you think would be a good namespace for grammars for popular formats. like *ml, json, tt, etc. ?
12:12 k23z__ joined #perl6
12:16 pausenclown rakudo: say '"a\"c' ~~ / \" ~ \" \w+ /
12:16 p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
12:17 pausenclown rakudo: say '"a\"c"' ~~ / \" ~ \" \w+ /
12:17 p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
12:18 jnthn rakudo: / \" ~ \" \w+ /
12:18 p6eval rakudo 70667a:  ( no output )
12:18 jnthn rakudo: say '"ac"' ~~ / \" ~ \" \w+ /
12:18 p6eval rakudo 70667a: OUTPUT«"ac"␤»
12:18 jnthn rakudo: say '"a\"c"' ~~ / \" ~ \" [\w+ | '\\"'] /
12:18 p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
12:19 jnthn rakudo: say '"a\"c"' ~~ / \" ~ \" [\w+ | '\\"']+ /
12:19 p6eval rakudo 70667a: OUTPUT«"a\"c"␤»
12:19 jnthn :-)
12:20 pausenclown rakudo: say '"a\\\"c"' ~~ / \" ~ \" [\w+ | '\\"']+ /
12:20 p6eval rakudo 70667a: OUTPUT«Unable to parse _block46, couldn't find final \" at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1664 (ext/nqp-rx/src/stage0/Regex-s0.pir:907)␤»
12:20 pausenclown boom
12:21 jnthn well, yeah, you gotta write a grammar to parse what you want to parse :-P
12:22 jnthn rakudo: say '"a\\\"c"' ~~ / \" ~ \" [\w+ | \\.]+ /
12:22 p6eval rakudo 70667a: OUTPUT«"a\\"␤»
12:22 pausenclown an arbitrary string delimited be double quotes
12:22 pausenclown escapes allowd
12:25 mberends .oO( rakudobug speleology task: run perl6advent examples on new master )
12:25 jnthn Hmm...that last one I wrote didn't do it. :-/
12:26 * jnthn is a tad confused why
12:26 jnthn oh, I see
12:26 jnthn rakudo: say '"a\\\"c"'
12:26 p6eval rakudo 70667a: OUTPUT«"a\\"c"␤»
12:26 jnthn rakudo: say '"a\\\\"c"'
12:26 p6eval rakudo 70667a: OUTPUT«"a\\"c"␤»
12:26 jnthn rakudo: say '"a\\\\"c"'  ~~ / \" ~ \" [\w+ | \\.]+ /
12:26 p6eval rakudo 70667a: OUTPUT«"a\\"␤»
12:27 jnthn oh gah
12:27 jnthn Anyway, I think that regex is about rightish.
12:29 jnthn rakudo: say '"a\\\\\\"c"'  ~~ / \" ~ \" [\w+ | \\.]+ /
12:29 p6eval rakudo 70667a: OUTPUT«"a\\\"c"␤»
12:29 jnthn Trouble is the single quotes are doing stuff wiht the \\ too :-)
12:30 jnthn That was the example i was trying to write
12:30 * jnthn has lunch now, brain might start working again...
12:49 takadonet morning all
12:49 masak takadonet: \o
12:51 takadonet OMG Ng is in the master branch!
12:51 lichtkind joined #perl6
12:51 masak I for one welcome our new ng master.
12:51 takadonet indeed brb restarting mahcine
12:52 lichtkind masak: hej
12:52 jnthn s/\./ with many bug reports\./ # ;-)
12:52 masak lichtkind: moin
12:52 lichtkind haha
12:52 jnthn At least with the new STD-ish grammar in place implementing s/// may not be so far off. :-)
12:52 masak jnthn: you do realize my behaviour is perfectly explainable by a ridiculously pent-up need to submit bugs, right? :)
12:53 jnthn masak: Sure. Doesn't mean I can't tease about it. :-P
12:53 masak jnthn: of course. :)
12:53 jnthn I'm kinda surprised it's only 15. :-)
12:54 * masak has smoke coming out of ears
12:54 jnthn rakudo: "ab" ~~ /a { say 42 } b/; say $/; # some things work that didn't before too :-)
12:54 p6eval rakudo 70667a: OUTPUT«42␤ab␤»
12:54 masak wow!
12:54 jnthn See. It's not all new bugs. :-)
12:55 jnthn rakudo: "ab" ~~ /:my $x = 42; a { say $x } b/; say $/;
12:55 p6eval rakudo 70667a: OUTPUT«42␤ab␤»
12:55 * masak needs to put back his dropped jaw with his hand
12:55 jnthn rakudo: sub foo() { say $*x; }; "ab" ~~ /:my $*x = 42; a { foo() } b/; say $/;
12:55 p6eval rakudo 70667a: OUTPUT«42␤ab␤»
12:55 lichtkind mberends: wake?
12:56 masak jnthn: that's really cool.
12:56 jnthn pmichaud++ for those
12:56 jnthn masak: We're using those in Grammar.pm :-)
12:56 masak \o/
12:58 jnthn Contextuals make a lot of things nicer when parsing Perl 6 and building AST. :-)
12:58 jnthn $*SCOPE alone has made life a load better.
12:59 jnthn Anyways, gonna go wander around for an hour with a friend who has come to visit the city.
12:59 * jnthn bbl
12:59 kraih_sri joined #perl6
13:04 orafu joined #perl6
13:06 colomon joined #perl6
13:09 takadonet joined #perl6
13:16 * mathw reads some backlog and has to painstakingly reassembled his head, which exploded with delight
13:17 masak making people's heads explode with delight is the business of #perl6 :)
13:18 mathw It's a good business
13:18 mathw Now please to be making grammars work sufficiently for building Form.pm :)
13:39 pmichaud good morning, #perl6
13:40 masak and a good morning to you, pmichaud.
13:41 * pmichaud reads backscroll
13:41 colomon \o
13:43 pmichaud (from backscroll) -- no, nqp doesn't use pge under the hood.  It used pge long enough to get it bootstrapped, but since then nqp is parsed using nqp.
13:44 scp1 So... does perl6 rule enough for me to actually try and get parrot running? :)
13:45 masak scp1: Rakudo is in an interesting superposition of 'rule' and 'suck'. YMMV.
13:46 pmichaud it 'rules' because Perl 6 is so awesome.  it 'sucks' because there are still some significant bugs/pieces missing
13:47 mathw But they will come. This feels like a big milestone.
13:47 mathw Even though it's a regression in terms of tests passing.
13:47 scp1 It seems very interesting. I guess this have been asked before, but in that state is perl6 right now? When should it be fully released, is there some schedule or something?
13:47 scp1 s/that/what/
13:48 moritz_ scp1: there's a shedule for a usable release: Q2 (likely April) this year
13:48 masak scp1: I think the 'fully released' question is strange, if you don't mind me saying it.
13:48 scp1 oh really, awesome
13:48 moritz_ scp1: but no  schdeule for a language freeze or feature complete compiler yet
13:48 masak scp1: what you should ask yourself is what needs you have, and how they interact with Rakudo-now and Rakudo-soon.
13:48 masak myself, I have a need to try fun things with Perl 6. Rakudo is certainly ready for that. :)
13:49 moritz_ (if you're confused, Rakudo is a Perl 6 compiler)
13:49 scp1 My current needs is still learning perl5, but I think there's place for perl6 too :)
13:49 scp1 yeah, I know
13:49 masak I have next to no need to see a 'full release' of Rakudo. I hardly know what that means.
13:50 scp1 Started late with perl, december last year, but since it's the most beutiful thing ever created I doubt perl6 will be any less sexier
13:51 mathw If you think Perl 5 is the most beautiful thing ever created, Perl 6 is going to make your head explode with sheer joy.
13:52 scp1 :D
13:52 colomon afk # skiing!
13:53 masak scp1: want the tour? I can show you some things on the p6eval bot.
13:53 masak rakudo: say "take the tour! " x 2
13:53 p6eval rakudo 70667a: OUTPUT«take the tour! take the tour! ␤»
13:53 mathw Personally, I'll consider Perl 6 'ready' when there's a compiler release which supports all the features I want every day and produces code which runs acceptably fast.
13:53 mathw 'Finished' is an alien concept. There are just steps along the road.
13:53 scp1 masak, oh nice... that works in perl5 too though :)
13:54 mathw scp1: he hasn't really started yet
13:54 masak scp1: true. I'm just warming up :)
13:54 masak mathw: I think that's a reasonable requirement. my point, to the extent I have one, is that 'finishing' will be a gradual thing any way, different for different people.
13:54 masak moritz_: could I have an 'alpha' target? puhleeze?
13:55 masak I don't really trust this new engine :P
13:55 moritz_ masak: alpha target? what are you talking about?
13:55 masak moritz_: p6eval access to the old branch 'alpha'.
13:55 mathw he wants p6eval to let you run against rakudo/alpha
13:56 moritz_ is that the old master?
13:56 masak yes.
13:56 masak moritz_: how am I supposed to demo Rakudo to scp1 on a branch that's hardly capable of doing abacus-like things?
13:56 scp1 ;o
13:56 masak scp1: (we just switched underpinnings. stand by while we calibrate your reality.)
13:57 moritz_ masak: please remind me again in a week... need to prepare at least two presentations, so likely ENOTUIT before that
13:57 scp1 hehe allright
13:57 masak diakopter: ping
13:58 moritz_ masak: but I guess I could give you access to server, if you want to take matters into your own hands
13:58 moritz_ (hope that's fine with diakopter who runs the server)
13:58 masak moritz_: sure.
13:58 masak oh well. this works, I tried locally:
13:58 masak rakudo: multi sub foo(Int $a) { say "AN INT" }; multi sub foo(Str $a) { say "A STRING" }; foo(42); foo("OH HAI")
13:58 p6eval rakudo 70667a: OUTPUT«AN INT␤A STRING␤»
13:58 masak scp1: see what's happening there?
13:59 scp1 oh, types...
13:59 masak yes :)
13:59 masak actually, I should start by doing this:
13:59 masak rakudo: sub foo(Str $a) {}; foo(42)
13:59 p6eval rakudo 70667a: OUTPUT«Nominal type check failed for parameter '$a'; expected Str but got Int instead␤current instr.: 'foo' pc 177 (EVAL_1:75)␤»
13:59 masak rakudo: sub foo(Str $a) { say $a }; foo("OH HAI")
13:59 p6eval rakudo 70667a: OUTPUT«OH HAI␤»
13:59 masak parameter type checking.
13:59 scp1 wow, nice
14:00 masak yes :)
14:00 scp1 uhm, I can not find any perl6 package in my distro...
14:00 scp1 community/parrot 2.0.0-1  standalone virtual machine that can be used to execute bytecode compiled dynamic languages
14:00 scp1 this babe?
14:01 scp1 and rakudo.
14:01 masak that's the VM.
14:01 scp1 yeah, I need both?
14:01 masak that and rakudo should suffice.
14:01 masak yes.
14:01 athenot joined #perl6
14:01 scp1 allright
14:01 masak just the VM doesn't give you Perl 6.
14:01 scp1 heh allright
14:01 masak compare JVM and Java.
14:05 mathw Perl 6 doesn't have one single implementation like Perl 5 does. Perl 6 is a specification, and Rakudo is one of the compilers which implements it.
14:06 masak that said, with all due respect to all implementors of the other implementations, Rakudo is the word that comes to mind when associating freely on "Perl 6" and "implementation" :)
14:07 mathw Yes, it's definitely the furthest along
14:07 cognominal there is a difference so. Java sucks while the JVM are ok. Here, Perl 6 is great while the implementations are immature.  :)
14:07 scp1 Talking types, isn't it legal anymore to use i.e my $str = 'string'; ?
14:07 mathw And it's the one that runs on Parrot, which was always the initial plan
14:07 mathw scp1: yes
14:07 pmurias joined #perl6
14:07 mathw you're free to not use types if you don't want to
14:07 scp1 ah allright
14:07 masak 'gradual typing'.
14:08 mathw underneath, the type system's still in action but your variables can be unconstrained
14:08 cognominal this is not to say there are not great languages on top of the JVM
14:08 masak there's an implicit 'Any' type added to such a container.
14:08 mathw my Str $a; # can only assign Str and Str-derivatives to it
14:08 mathw my $a; # can assign anything
14:08 scp1 yeah, okay, nice... reading about it
14:08 mathw So you can choose how much static type checking you want
14:08 mathw Personally I tend to go for as much as possible, but I'm a Haskell programmer
14:09 scp1 What?
14:09 scp1 Are there more languages then perl?
14:09 moritz_ lots; and you tend to need many more when you work on a real-world project
14:09 moritz_ like SQL for example
14:10 mathw urgh
14:10 mathw I'm not so fond of SQL
14:10 mathw And it's well-known in here how I feel about Java :)
14:10 bluescreen joined #perl6
14:11 masak suck it up. :) it's a sign of professionalism to be able to write good code in a language you dislike.
14:11 Su-Shee it's a sign of good research if you never have to. ;)
14:11 pmurias moritz_: after i read Database in Depth from READTHEM i stoped liking SQL ;)
14:12 takadonet hard to avoid not writing javascript...
14:12 masak Su-Shee: :)
14:12 mathw My manager is aware of my feelings about Java, and also aware that I'm a better C++ programmer, so he tends to let me just do C++ work :)
14:12 masak takadonet: JS, fortunately, is not too difficult to like. the DOM API, on the other hand... :/
14:12 mathw My previous manager made me do SCJP to try and get me to like it, but it didn't work...
14:12 moritz_ pmurias: I'm well aware that SQL is not THE solution, but often it's still handy, and better than writing a storage backend yourself
14:12 mathw SQL could be a lot worse
14:13 pmurias most things could be a lot worse
14:13 takadonet masak: I'm glad that 99% of my work is Perl 5
14:13 masak takadonet: that sounds wonderful :)
14:13 mathw And sometimes there's an obscure pleasure in crafting a query that spreads over twenty-five lines and has six joins and a highly elaborate set of WHERE clauses in it :)
14:13 scp1 takadonet, any job openings? :)
14:13 * Su-Shee has 25% javascript, 10% perl 6, 15% css, 10% sql and the rest is perl 5.
14:14 takadonet masak: We are looking for Bioinformatician  :)
14:14 masak takadonet: just let me finish my degree first... :)
14:15 takadonet You guys just need to be willing to move to Winnipeg Canada
14:15 scp1 No perl jobs here in sweden... just java and .NET, urgh
14:16 Su-Shee same here.. and a couple of c++ and c stuff.
14:16 Su-Shee and plenty php.
14:16 takadonet masak: when do you finish your degree?
14:17 mathw there's PHP everywhere
14:17 mathw like some sort of mould
14:17 scp1 php :(
14:17 Su-Shee :)
14:17 masak takadonet: in about a year, I hope.
14:17 masak Real Soon Now.
14:17 Su-Shee I love those anglosaxon blogpostings about the great perl job situation ;)
14:18 masak takadonet: I can definitely move to Canada, if there's an opening in a year :)
14:21 xomas joined #perl6
14:21 scp1 who knows - maybe perl6 could actually create some jobs?
14:22 masak it sure creates a lot of work :)
14:22 scp1 yeah I could imagine... :)
14:23 moritz_ scp1: I've already got a job offer due to my Perl 6 activity
14:24 scp1 Yeah but I guess you're one hell of a programmer
14:24 PerlJam good morning all
14:24 masak PerlJam: \o
14:25 * moritz_ has no idea if he is a good or bad programmer
14:25 Su-Shee we'll have to offer ourselves the perl 6 jobs for a year or two.
14:26 mathw I'd like a job working in Perl 6
14:26 masak me too.
14:27 pmichaud yes, a job in Perl 6 might be nice.  :)
14:27 Su-Shee you'll have to introduce perl 6 in your actual job as successor. and you're the expert to migrate carefully into it.
14:28 scp1 heh
14:28 takadonet planning to introduce Perl 6 to my workplace when Bioperl6 is done....
14:28 Su-Shee no, I really mean it. noone is going to throw away all existing xy code and do it all over again in p6.
14:28 Su-Shee takadonet: well you might be the single one exception of the rule.
14:28 takadonet that reminds me I better start writing it
14:29 takadonet Su-Shee: Why is that?
14:29 Su-Shee takadonet: if you are already doing perl 6?
14:29 takadonet Su-Shee: I was doing some but then work took over...
14:29 PerlJam Perl 6 needs some "killer apps" (there will be more than one :)
14:30 Su-Shee PerlJam: don't those require some boring base apps like DBI6? :)
14:31 pmurias or use DBI:from<perl5> ;)
14:31 masak yeah, rather that.
14:31 masak until then, we can get by on things like Squerl, hopefully.
14:32 scp1 I'll try to port some thing I've done to perl6, might be good exercises
14:33 masak scp1++
14:34 masak rakudo: say $ss_SS_S_S__S_S_s.WHAT
14:34 p6eval rakudo 70667a: OUTPUT«Block()␤»
14:34 pugs_svn r29735 | pmurias++ | [mildew] remove phi functions before the ssa form is executed
14:34 pugs_svn r29735 | make test-ssa passes
14:34 wolf2k_ubuntu joined #perl6
14:40 jnthn rakudo: say $ss_SS_S_S__S_S_s
14:40 p6eval rakudo 70667a: OUTPUT«_block25␤»
14:41 jnthn wtf
14:41 masak jnthn: don't worry :)
14:41 masak jnthn: it's just the variable through which Safe.pm is inlined nowadays.
14:41 jnthn oh!
14:42 masak I liked the name, though :)
14:43 jnthn :-)
14:43 * jnthn suspects he's not going to get a round tuit for Rakudo today.
14:43 jnthn (Visiting friends)
14:43 pmichaud I'm likely to be mucking with scalars all day anyway :)
14:44 pmichaud although first round of changes over the past 45 minutes has gone quite nicely :)
14:44 masak changes? what changes? :)
14:44 pmichaud changing the way Rakudo manages scalar variables and flattening
14:45 masak oh, cool.
14:46 jnthn pmichaud: OK, wfm.
14:46 jnthn Tomorrow may/should be better.
14:46 jnthn Wednesday onwards everythings all clear again. :-)
14:46 kidd` joined #perl6
14:46 pmichaud make
14:46 pmichaud ww
14:47 pmichaud I'm just now trying the part where we eliminate copying values :-)
14:47 pmichaud expect massive fireworks/failz
14:47 jnthn .oO( damm, shoulda typed a compile error before Pm noticed ww :-) )
14:47 masak :)
14:48 pmichaud ...wtf?  it passed "make test"?
14:49 pmichaud hmmmmmmmmmm
14:49 jnthn pmichaud: It is possible that you did it right. :-)
14:49 moritz_ pmichaud: I predict infinite recursion for 'make spectest' :-)
14:49 pmichaud I truly expected massive fail.  So far fail only on nested_array.t
14:50 jnthn .oO( plz to not breaks S1[24]-*
14:50 jnthn )
14:50 jnthn :-)
14:51 pmichaud infinite recursion, yes.
14:57 cjk101010 joined #perl6
15:04 ignacio_ joined #perl6
15:13 pmichaud jnthn: would you prefer a 'scalar' property or a Perl6Scalar type?  I think I can make it work either way.
15:13 jnthn pmichaud: hm
15:13 jnthn pmichaud: Well...
15:13 masak rakudo: class A { method Str { "OH HAI" } }; say ~A.new; say ~A
15:13 p6eval rakudo 70667a: OUTPUT«OH HAI␤A()␤»
15:14 jnthn pmichaud: I prefer the type I think.
15:14 jnthn pmichaud: Actually, question.
15:14 masak how come the user's Str method doesn't override stringification of the type object?
15:14 jnthn masak: It shouldn't.
15:14 masak jnthn: I know. how come it doesn't? :)
15:14 pmichaud masak: for that, I think one has to have   method Str(self:U :) { ... }      or something like that
15:14 jnthn pmichaud: Are we going to have a prophash on them anyway?
15:15 PacoLinux joined #perl6
15:15 pmichaud jnthn: well, we still have to have somewhere to hold the type information (more)
15:15 masak pmichaud: ah, that explains it. thanks.
15:15 jnthn masak: The current answer is "because the low-level role we mix in to make something a type object rather than just an ordinary instance overrides it"
15:15 jnthn masak: The answer pmichaud gave is the right one. :-)
15:16 pmichaud but that could conceivably become an attribute of container objects (i.e., attribute of Perl6Scalar)
15:16 jnthn Well, I was wondering if we could eliminate the prophash for e.g. untyped, but I guess they all still need rw...
15:16 pmichaud in short, we could start moving towards eliminating the use of the prophash
15:16 jnthn I don't hate the prophash per se, I'm just aware it's one more gc-able.
15:16 pmichaud I think we can eliminate the rw, also.
15:17 jnthn What do we set rw on?
15:17 jnthn Only ever an ObjectRef?
15:17 pmichaud well, I was thinking that we know something is rw because it's a Perl6Scalar, but now I'm not so sure.
15:17 jnthn If so, there's 7 PMC flag bits...
15:18 jnthn We could take one for scalar, one for rw...
15:18 pmichaud and by "it's a Perl6Scalar", I mean only the PMC itself, not anything it references
15:18 jnthn Part of me thinks (that you won't like this idea but I'll say it anyway...) that we should factor out the "is it a scalar" and "is it rw" checks to dynops.
15:18 jnthn Not for performance.
15:18 jnthn But so we can more easily change/optimize the way we handle this in the future.
15:18 pmichaud I was just thinking "isscalar" as a dynop, yes.
15:19 jnthn Oh, I thought you'd hate the idea. :-)
15:19 pmichaud well, the important thing about using Perl6Scalar as-a-type is that it's not a normal "isa" check.
15:19 jnthn You can just compare ->vtable->base_type
15:19 pmichaud i.e., right now if we do "isa ...", we end up checking the type-ness of the value as well as the containers
15:19 jnthn == poitner comparsisson to see if it's a scalar
15:20 pmichaud that's fine for "isa" checks, but I need something that just checks the container and not what it references.  so I was thinking dynop might be the way to do that easily.
15:20 pmichaud your point about putting all of this behind abstraction opcodes makes a lot of sense also.
15:21 cognominal joined #perl6
15:23 pmichaud well, "is it a scalar" and "is it rw" have to be orthogonal, so they can't both be attached to the pmc type
15:23 jnthn The other reason I like it behind such a thing, is that it'll be easier to hide however @other-vm do it behind the same thing.
15:23 pmichaud so there has to be a flag somewhere
15:23 jnthn Can they be attached to any PMC?
15:23 jnthn Or just ObjectRef?
15:24 pmichaud in general, only containers end up with properties
15:24 jnthn hmm
15:24 jnthn We can't really go using PMC flag bits on any old PMC.
15:24 pmichaud at the moment that would be ObjectRef, Perl6Scalar, Seq, and Hash
15:25 pmichaud no, we wouldn't be putting flags on foreign PMCs
15:25 pmichaud only on our own container types
15:25 jnthn Seq and Hash are high level objects, so it's what the Object PMC that matters.
15:25 jnthn I wonder if it uses flag bits...
15:25 jnthn We can always use the prophash of course.
15:25 pmichaud and our container types are strictly containers -- they never hold values directly in the new model but always hold a reference to a value
15:25 jnthn but saving a gc-able for many of our untyped containers would be nice.
15:26 pmichaud so values never have properties on them
15:26 pmichaud even if we don't use PMC flags, we can use standard PMC attributes
15:27 pmichaud and that doesn't create another gcable
15:28 nihiliad joined #perl6
15:28 jnthn "attributes"?
15:29 jnthn Oh, hmm, maybe.
15:29 pmichaud yeah, the GETATTR stuff, not the object attributes
15:29 jnthn Ah, I see.
15:29 jnthn OK, well...I think we agree we want a dynop abstraction interface.
15:30 jnthn If the first cut is done with properties because it's easy/familiar, that's OK.
15:30 pmichaud well, I'd also like to find a good way to eliminate the setprops we do now.
15:30 pmichaud but not necessarily with separate opcodes.  in some ways, I'd like to say "give me a Scalar" and have it already initialized with the standard scalar flags.
15:31 pmichaud s/give me a Scalar/create a Scalar
15:31 jnthn new_scalar
15:31 jnthn oh, not with seperate opcodes...
15:31 jnthn hm
15:32 pmichaud or perhaps put it all in one opcode
15:32 payload joined #perl6
15:32 jnthn I was thinking new_scalar would do the new
15:32 pmichaud new_p6opaque <scalar>, <rw>, <init_ref>
15:32 jnthn and also set the props
15:32 jnthn well, that kinda thing, yeah
15:34 pmichaud okay, I'll work on the assignment/binding ops a bit more
15:34 pmichaud that should provide some clues as to what we really want
15:34 jnthn Not 100% sure if I like having p6opaque in the name...may work.
15:34 pmichaud doesn't have to be that.. I agree it's not precisely correct
15:37 Psyche^ joined #perl6
15:37 pmichaud okay, I'll take a walk and think a bit more on things.  thanks!
15:38 jnthn np :-)
15:56 masak http://research.swtch.com/2010/01/generating-good-syntax-errors.html
16:03 justatheory joined #perl6
16:11 jackyf joined #perl6
16:16 masak rakudo: role A { method x {} }; role B { method x {} }; class C does A does B {}
16:16 p6eval rakudo 70667a: OUTPUT«Null PMC access in elements()␤current instr.: 'perl6;SeqIter;get' pc 13390 (src/builtins/Routine.pir:92)␤»
16:16 * masak submits rakudobug
16:18 jnthn *sigh*
16:18 jnthn I'd thought we were running tests for that. :-/
16:18 masak hugme: hug jnthn
16:18 * hugme hugs jnthn and blushes
16:18 diakopter BUSHELS
16:18 jnthn It certainly used to work. Guess the array changes busted it.
16:19 masak diakopter: do you think you could help me add an 'alpha' target to p6eval? I have a case of nostalgia.
16:20 masak jnthn: that's what I'm here for. it's my Nelson function in #perl6.
16:20 masak ha ha!
16:20 * masak tries sledgehammer on a few other things
16:20 frettled :)
16:21 frettled New spectest: masak.t
16:21 colomon frettled: but that test file will never pass!
16:21 pmurias ch to a Perl 6 grammar
16:21 pmurias masak: seem a good approach to getting good error messages in an LR parser the tricky part would be converting the appro
16:21 pmurias ch to a Perl 6 grammar
16:22 masak pmurias: yes. thinking the same thing.
16:22 pmichaud okay, walk helped
16:22 pmichaud jnthn: here's what I think I've figured out
16:22 jnthn 1) Put the dog on a lead.
16:22 jnthn ;-)
16:23 pmichaud we have more than (flatten|non-flatten)  (rw|ro)
16:23 masak rakudo: class A {}; supersede class A {}
16:23 p6eval rakudo 70667a: OUTPUT«Illegal redeclaration of symbol 'A'␤current instr.: 'perl6;Perl6;Grammar;_block111' pc 31921 (src/gen/perl6-grammar.pir:174)␤»
16:23 masak ENOSUPERSEDE
16:23 pmichaud in fact, what we have mirrors S06 fairly closely
16:23 masak I guess I don't need to submit a TODO for that one.
16:23 jnthn That's...not the error I expected...
16:23 pmichaud a container can suppress flattening by having a $ sigil.  That's orthogonal to the other items
16:24 masak jnthn: it thinks &supersede is a sub.
16:24 pmichaud a container can be readonly, in which case assignment is forbidden
16:24 pmichaud oops, let me rephrase
16:24 pmichaud a container can be a readonly reference to another container, in which case assignment is forbidden
16:24 pmichaud a container can be a rw reference to another container, in which case assignment is delegated to the other container
16:25 pmichaud a container can be rw in its own right, in which case it handles assignment itself
16:25 jnthn masak: oh!
16:26 pmichaud do we implement supercede yet?
16:26 masak Seems not.
16:26 jnthn pmichaud: Not really, but add_name knows what to do with it.
16:26 pmichaud then just add a declarator for 'supercede' that says "not yet implemented"  :)
16:26 jnthn I expected it to whine that supercede wasn't done yet a bit further on.
16:26 jnthn add_name knows not to complain about re-decl though.
16:26 jnthn Grammar.pm:86
16:28 diakopter masak: dunno. mostly it's a server-admin kind-of-thing
16:28 pmichaud jnthn: anyway, so the things we have to manage are equivalent to  "is readonly", "is rw", and "is copy"
16:28 jnthn pmichaud: Hmm.
16:28 jnthn If ou look at it sidewaysish, I guess that works :-)
16:29 pmichaud so what I'm guessing is that type-based isn't the way we want to go
16:29 jnthn (We're not doing any copying)
16:29 pmichaud "is copy" is basically the same thing as assignment
16:29 pmichaud i.e., normal assignment
16:29 jnthn Hm
16:29 masak diakopter: yes. moritz_ gave me access, but I didn't add anything myself, mainly because I chickened out. don't want to break p6eval with no-one to help fix it.
16:29 pmichaud if I have
16:29 jnthn It's not implemented like that at the moment. :-)
16:29 pmichaud sub foo($x is copy) { ... }
16:29 jnthn It calls .clone :-)
16:30 pmichaud I'm not sure calling .clone will be correct, now.
16:30 pmichaud it may be.
16:30 pmurias mildew: say 1
16:30 p6eval mildew: OUTPUT«Can't open perl script "mildew": No such file or directory␤»
16:30 diakopter masak: it's not ultra fragile (it's easily fixable); go ahead and experiment
16:30 pmichaud but the point is that $x ends up acting like a standalone variable, not bound to the argument in any way
16:30 pmichaud in the same way that
16:30 pmichaud my $a = 4;   my $b = $a;
16:30 pmichaud $b is a copy of $a, not bound to the $a container at all
16:30 diakopter masak: just do everything as the p6eval user in the chroot
16:31 masak aye.
16:31 diakopter see its crontab
16:31 masak aye.
16:31 masak diakopter: rakudo master (previously known as ng) uses a p/p1/p2 system. should the alpha branch also do something like that?
16:31 jnthn pmichaud: I could see it that way too.
16:32 pmichaud did we get rid of "is ref" ?
16:32 jnthn Yeah
16:32 jnthn well
16:32 jnthn yes
16:32 pmichaud what is it now?
16:32 jnthn But we gained \
16:32 jnthn "is parcel"
16:32 jnthn But you write a \ before, not "is parcel"
16:32 jnthn is rw implies is parcel
16:32 jnthn is parcel on its own implies "don't apply any context"
16:32 diakopter masak: actually the old master used p/p1/p2 system
16:33 diakopter and so does the new master.  the old ng didn't use p/p1/p2
16:33 diakopter I think
16:33 diakopter hence the "missing ./perl6" msgs
16:33 masak ok.
16:33 masak oh, aha!
16:33 diakopter so if you want to clone it, sure
16:33 diakopter just... decrease the frequency of rebuilding alpha... it doesn't need to run every half hour
16:33 jnthn pmichaud: Well, s/implies/means/ on the last one. :-)
16:33 masak well, the need isn't as great, since alpha will be mostly static anyway. the crontab can... yes.
16:34 diakopter also, disable the make test upon rebuild if you would, plz
16:34 diakopter on both
16:34 masak oki
16:34 * masak is a little scared, but will try
16:34 pmichaud okay, but the point of "is parcel" is that our symbol is bound directly to the argument, no reference, yes?
16:34 payload joined #perl6
16:34 masak nice change from breaking things, trying to make things work :)
16:34 jnthn pmichaud: That's pretty much what happens.
16:35 pmichaud okay
16:35 jnthn pmichaud: In fact, I think it's very literally exactly what happens. :-)
16:35 pmichaud whereas "is rw"  creates an objectref ?
16:35 jnthn um
16:35 jnthn Not sure without looking at the impl.
16:35 pmichaud well, it pretty much has to be an objectref, yes?
16:36 jnthn ah, waiting on a build, can check it...
16:36 pmichaud sub foo(Int $a is rw) { ... }
16:36 jnthn we're not doing tht at the moment.
16:36 jnthn if (sig_info->flags & SIG_ELEM_IS_RW) {
16:36 jnthn /* XXX TODO Check if rw flag is set. */
16:36 jnthn if (sig_info->variable_name)
16:36 jnthn VTABLE_set_pmc_keyed_str(interp, lexpad, sig_info->variable_name, value);
16:36 jnthn }
16:37 jnthn But yes, probably should.
16:37 pmichaud well, $a has to have its own type information
16:37 jnthn Right.
16:37 pmichaud so it has to be an ObjectRef of some sort
16:37 jnthn Well, er.
16:37 pmichaud and assigning to $a performs the check but delegates to the referenced container
16:38 jnthn my Int $x; sub foo(Numeric $y is rw) { $y = 1/2; } foo($x); # gotta fail
16:38 masak diakopter: is the directory rakudo_old-master something I can use?
16:38 pmichaud right, no problem.
16:38 payload joined #perl6
16:38 jnthn I guess the delegation handls that for us.
16:38 jnthn ?
16:38 pmichaud $y has to be smart enough to enforce its type as well as the type of the thing it references
16:38 pmichaud or delegation handles it
16:39 pmichaud but yes, $y can check and if okay, pass the assignment to the thing it references
16:39 jnthn What about multi fact(Int $n) { $n * fact($n - 1) } ?
16:39 jnthn recursion?
16:39 jnthn We don't want to wrap more and more of the same checks.
16:39 jnthn I guess that argues smart rather than delegation. :-)
16:39 pmichaud right, the checks can be smart
16:40 pmichaud but in your example, there's also no assignment.  and $n is ro :-)
16:40 pmichaud we only have to be smart in the case of 'is rw'
16:40 jnthn Right.
16:41 jnthn Bad example, I shoulda just said "recursion" :-)
16:41 pmichaud right, I get the reference :)
16:42 pmichaud anyway, ObjectRef (or ObjectRef + Perl6Scalar)  needs to be able to handle the cases I mentioned
16:42 pmichaud read-only reference
16:42 pmichaud reference with delegation (is rw)
16:42 pmichaud standalone container
16:42 jnthn *nod*
16:43 jnthn I think we're arguing for a flag of some kind for sure, then.
16:43 pmichaud and I wonder if, instead of having a separate property, if it's sufficient to simply check to see if what the ObjectRef references is itself another ObjectRef
16:43 jnthn hm
16:43 jnthn Could work too maybe.
16:43 jnthn And cheap.
16:44 pmichaud if so, we have to delegate the assignment, otherwise we do the assignment ourself
16:44 pmichaud where "assignment" now means "reference a value object"
16:44 jnthn I like the analog with signatures here though.
16:44 pmichaud yes
16:45 pmichaud oh, and ooh!  This cleans up array and list assignment a ton!
16:45 jnthn Makes me feel a bit more comfortable that it's along the right lines.
16:45 pmichaud it also fits a lot better with some of the things TimToady has been saying about binding/assignment
16:45 jnthn *nod*
16:46 pmichaud because instead of having to copy containers, I can just dereference them to get to the immutable values
16:46 pmichaud big Win
16:47 jnthn Yeah
16:47 * jnthn hopes this one flies :-)
16:47 pmichaud I think it will fly nicely.
16:47 pmichaud need some nom, then I'll write it up
16:47 jnthn OK
16:47 jnthn I'm here for ~1.5 hours more
16:47 pmichaud okay
16:48 jnthn Then out for dinner and piva.
16:48 pmichaud so, what we end up with is:
16:48 pmichaud (1) 'scalar' property suppresses flattening
16:48 pmichaud (2) 'rw' property determines rw-ness
16:49 pmichaud (3) ObjectRef to another ObjectRef delegates assignment (after possibly imposing more typechecks)
16:49 pmichaud -end-
16:49 jnthn 3 simple rules.
16:49 lisppaste3 pausenclown pasted "error" at http://paste.lisp.org/display/94991
16:50 pausenclown WTF? http://paste.lisp.org/display/94991
16:51 masak pausenclown: you'll at least need a semicolon before 'XML::Parser::Actions.new();'
16:51 pmichaud maybe need a semi.... what masak++ said
16:51 pmichaud but that still doesn't entirely explain it
16:51 masak pausenclown: the rule in Perl 6 is that a semicolon OR a newline is always needed after a closing brace.
16:51 pmichaud afk, nom
16:52 pausenclown there is a newline
16:52 pausenclown copz and paste error
16:52 cdarroch joined #perl6
16:52 cdarroch joined #perl6
16:52 masak pausenclown: it works if I remove the 'grammar' line.
16:53 moritz_ looks like a weird rakudobug
16:53 pausenclown well. that doesnt help much
16:53 jnthn Is this master now, or alpha from before?
16:53 uniejo joined #perl6
16:53 pausenclown i tend to attrract those as it seems
16:53 masak pausenclown: still in debug mode. hold on.
16:54 masak pmichaud: new master.
16:54 jnthn masak: Oh. I didn't think we'd implemented grammars yet.
16:54 jnthn That may be why.
16:55 masak it works if I remove the TOP token.
16:55 jnthn None of S05-grammar/* runs, afaik.
16:55 jnthn "works" :)
16:55 dalek rakudo/master: c65c28b | (Martin Berends)++ | docs/compiler_overview.pod:
16:55 dalek rakudo/master: [docs/compiler_overview.pod] over 80% updated for new master (former ng)
16:55 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/c65c28ba503e8a10587b1da39ad08d16eed9d9e2
16:56 masak rakudo: class S {}; grammar A { token x { . } }; S.new();
16:56 p6eval rakudo 70667a: OUTPUT«Symbol '$ss_SS_S_S__S_S_s' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)␤»
16:56 masak o.O
16:56 masak there's that variable again.
16:58 jnthn ...where'd that come from?!
16:58 * masak hopes it wasn't something he did on the p6eval server :/
16:58 masak I don't think it was, but still...
17:00 colomon I thought that variable was coming from the inline version of use Safe; or something like that?
17:01 masak it was indeed.
17:01 masak maybe its presence shadows the error I get locally for some reason.
17:04 pausenclown so any workaround suggestions?
17:04 masak pausenclown: seems grammars are not implemented yet.
17:04 masak pausenclown: workaround would be to use the January release :)
17:05 masak or the alpha branch.
17:05 pugs_svn r29736 | masak++ | [evalbot] added alpha target for Rakudo nostalgia
17:05 jnthn master is more rough than ready atm.
17:06 jnthn If you just want to play with Perl 6.
17:06 jnthn imo
17:06 Schwern joined #perl6
17:06 masak alpha: say q[guess this doesn't work just yet...]
17:06 masak hm, moritz_ usually does some manual restarting...
17:07 masak evalbot control restart
17:07 p6eval joined #perl6
17:07 masak alpha: say "How about now?"
17:07 masak :(
17:07 moritz_ did you svn up before restarting?
17:07 masak huh. :)
17:08 * masak does that
17:08 masak moritz_: (of course I did, uh... what do you take me for, some kind of maroon?)
17:08 masak :P
17:08 masak evalbot control restart
17:08 p6eval joined #perl6
17:09 masak alpha: say "Perhaps now?"
17:09 masak :(
17:09 p6eval alpha 30e0ed: OUTPUT«Perhaps now?␤»
17:09 masak \o/
17:09 masak alpha: grammar X { token top { . } }; say "Are you the Rakudo branch I know and love?"
17:09 p6eval alpha 30e0ed: OUTPUT«Are you the Rakudo branch I know and love?␤»
17:09 masak \o/
17:09 colomon \o/
17:10 masak alpha: class S {}; grammar A { token x { . } }; S.new();
17:10 p6eval alpha 30e0ed:  ( no output )
17:11 masak swimming &
17:12 moritz_ masak++ # tuning evalbot to his needs
17:18 pausenclown alpha: class XML::Parser::Actions {}; grammar XML::Parser::Grammar { token TOP { \< \? xml } }; say XML::Parser::Grammar.parse('<?xml', :action( XML::Parser::Actions.new() ));
17:18 p6eval alpha 30e0ed:  ( no output )
17:19 pausenclown where do i get the alpha branch?
17:21 jnthn If you already have a clone, just git checkout alpha
17:21 jnthn then re-configure and re-build.
17:24 pausenclown root:/home/pc/perl6/rakudo# git checkout alpha >> error: pathspec 'alpha' did not match any file(s) known to git.
17:25 pausenclown im not used to git, so pls forgive mz ignorance
17:27 jnthn oh, sorry
17:27 jnthn try git checkout origin/alpha
17:27 jnthn I think that'll work
17:27 * jnthn doesn't have much git fu either.
17:29 moritz_ git checkout --track -b alpha origin/alpha
17:30 jnthn ah, I guess in the event alpha gets any changes, it's worth tracking...
17:32 * moritz_ -> offline
17:34 cognominal that makes it : $ git clone git://github.com/rakudo/rakudo.git rakudo-alpha
17:34 cognominal $ cd rakudo-alpha/
17:34 cognominal $ git checkout --track -b alpha origin/alpha
17:34 cognominal Branch alpha set up to track remote branch refs/remotes/origin/alpha.
17:34 cognominal Switched to a new branch "alpha"
17:50 jnthn afk for a while
17:55 ShaneC joined #perl6
17:56 pmichaud my suggestion is for people to grab the alpha tarball rather than checkout from git
17:57 pmichaud i.e., grab the latest release tarball
17:58 cognominal joined #perl6
17:59 krychu joined #perl6
18:07 Chillance joined #perl6
18:07 stephenlb joined #perl6
18:08 rv2733 joined #perl6
18:08 jnthn pmichaud: Got a few minutes before I head out for the evening; any last things?
18:08 pmichaud not off top of my head
18:08 jnthn Also, looks like I will have Rakudo hacking time tomorrow.
18:08 pmichaud sounds good
18:09 pmichaud I'll keep working on assignment semantics now
18:09 pmichaud then I'll look at sort
18:09 pmichaud and then grammars
18:09 jnthn Not all day, but should be at least a few hours.
18:09 jnthn OK, good plan.
18:09 jnthn I'm going to wrap up some signature bits.
18:09 jnthn Will you pop binding in along the way?
18:09 jnthn Or leave that for now?
18:09 pmichaud maybe
18:10 pmichaud it's not so high on my priority list
18:10 pmichaud might do it while it's fresh in my head though
18:10 jnthn OK, if not, I may do it for the sig case.
18:10 jnthn Need to re-read TimToady++'s commits on that area.
18:10 jnthn It didn't really sink in the first time, but I was tired.
18:11 jnthn After that, probably I'll take on meta-model/class/role things.
18:11 jnthn Try and sort out the sits of S1[24] that we're still weak on.
18:11 jnthn *bits
18:12 pmichaud afk for a bit
18:13 zibri joined #perl6
18:19 stephenlb joined #perl6
18:21 pausenclown how do i create a string when i have a unicode codepoint?
18:28 pmichaud rakudo:  say "\x[ab]";
18:28 p6eval rakudo c65c28: OUTPUT««␤»
18:29 pmichaud rakudo:  say "\c[171]";
18:29 p6eval rakudo c65c28: OUTPUT«␤»
18:29 pmichaud hmmmm
18:29 pmichaud looks like \x works, not sure about \c
18:35 cognominal rakudo:  say  Nil.WHAT
18:35 p6eval rakudo c65c28: OUTPUT«␤»
18:35 cognominal rakudo:  say  "hi"
18:35 p6eval rakudo c65c28: OUTPUT«hi␤»
18:35 cognominal rakudo:  say  Nil
18:35 p6eval rakudo c65c28: OUTPUT«␤»
18:36 cognominal rakudo: my $a = (1, (2, (3, 4))); say $a[1];
18:36 p6eval rakudo c65c28: OUTPUT«2␤»
18:37 rv2733 left #perl6
18:37 cognominal rakudo: my $a = (1, (2, (3, 4))); say $a[2];
18:37 p6eval rakudo c65c28: OUTPUT«3␤»
18:42 pausenclown ok, thanks. but what if i have the number in a variable?
18:44 pmichaud rakudo:  say chr(171);
18:44 p6eval rakudo c65c28: OUTPUT«\xAB␤»
18:45 pmichaud uhhhhhhhh
18:45 pmichaud *that's* bizarre.
18:46 pmichaud oh.
18:46 pmichaud looks like the I/O streams are utf8 defaulted
18:49 mberends it would really be nice to have a binary stream option as well
18:50 pmichaud *aren't
18:52 payload joined #perl6
18:52 lichtkind joined #perl6
18:53 pugs_svn r29737 | lwall++ | [pm.txt] more Pm-19 blatherations
18:54 lichtkind mberends: added to http://www.perlfoundation.org/perl6/index.cgi?perl_6_donors_sponsors_and_supporters
18:55 |Jedai| joined #perl6
18:57 mberends lichtkind: oh hai. unfortunately on the wiki editing, I didn't yet get a round tuit :(
18:59 athenot joined #perl6
19:00 athenot joined #perl6
19:01 pugs_svn r29738 | lwall++ | [pm.txt] don't want to imply that .invoke is redispatched via method dispatch,
19:01 pugs_svn r29738 | so make it look more like a macro.
19:03 TimToady jnthn: ^^ the Pm-19 revisions I promised a day or so ago.
19:04 TimToady the new section is labeled 'Update:'
19:05 TimToady pmichaud: it's okay if you look at it too.  :)
19:07 uniejo joined #perl6
19:15 wolf2k_ubuntu joined #perl6
19:16 lue hello all!
19:21 lue rakudo: say ord(0x40);
19:21 p6eval rakudo c65c28: OUTPUT«5452␤»
19:21 lue rakudo: say ord(64);
19:21 p6eval rakudo c65c28: OUTPUT«5452␤»
19:21 lue ah, I see where I went wrong
19:21 lue rakudo: say chr(0x40);
19:21 p6eval rakudo c65c28: OUTPUT«@␤»
19:22 MaLiLL0 joined #perl6
19:25 * lue feels the breeze of people not in the room... *shiver*
19:26 PerlJam how do you feel their breeze exactly?
19:27 lue If people are in the room, they block the draft. :)
19:29 TimToady not if they're draft dodgers
19:30 athenot joined #perl6
19:32 lue Well then, how come I've never felt a breeze when people were here?
19:32 lue (oh wait, maybe there never was a draft ...)
19:32 TimToady insensitive to hot air?
19:33 payload joined #perl6
19:34 TimToady personally, I usually find the backlog large enough to be a pretty good windbreak
19:34 lue I'm thinking of a while ago. The switch to ng fixed the leak.
19:34 TimToady I think I have an entire cabin constructed of backlogs.
19:34 lue I think we have more backlogs than scientists have digits of pi. :D
19:35 TimToady We could maybe get ahead a little, if only someone would invent frontlogs.
19:36 lue good idea. Just tell me where to "log in" :)
19:37 TimToady go over to the log table over there...
19:37 colomon joined #perl6
19:38 PerlJam apparently masak has been busy
19:38 PerlJam masak++
19:38 lue We make decent lumberjacks. Hey... any of you go shopping Wednesdays and have buttered scones for tea?
19:43 cdarroch joined #perl6
19:43 cdarroch joined #perl6
19:44 lue goodbye hello goodbye hello! *huff huff*
19:47 lue AAAAAAAAAAAAAAAAAAAAAAH!
19:48 lue That came all at once!!
19:48 frettled wut?
19:48 lue all the *** TimToady stuff
19:48 TimToady just voiced 3 missing bots with a macro
19:48 lue oh. I'm fine *hyperventilation* don't worry about me.
19:48 frettled lue: May I recommend irssi?  It bundles them up nicely.
19:48 PerlJam lue: do you pronounce your nick like "loo" or "loo-e"  ?
19:48 lue doesn't matter. It's an acronym, actually.
19:49 PerlJam lue: for what?
19:49 TimToady 42
19:49 ash__ joined #perl6
19:49 lue Life Universe Everything
19:49 lue TimToady: how did you guess?
19:49 frettled TimToady: got it in 42
19:49 TimToady a good hypthalamus
19:49 PerlJam lue: TimToady is exceptionally observant :)
19:49 TimToady *hypo
19:50 PerlJam lue: he's also well-read
19:50 TimToady pity about the rest though
19:50 lue ANFSCD... can you guess that one?
19:51 Juerd That's a common acronym.
19:51 Juerd And actually that question is more of the same :)
19:51 TimToady sorry, I don't do Python.
19:51 PerlJam even I could guess that one :)
19:51 Juerd :)
19:52 lue LASER (guess that one!) :D
19:53 TimToady the S is for Shark
19:53 lue (darn it!) okay... guess this one: UNIT
19:54 Juerd It's not guessing if you know.
19:55 TimToady obviously it's the opposite of IT
19:55 lue then what *does* UNIT stand for?
19:55 TimToady dunno, I'm only good at IT
19:55 lue (Doctor Who Fans'll know) UNIT stands for...
19:56 lichtkind TORCHWOOD is better
19:56 * TimToady is not a Doctor Who Fan, having a real life
19:56 lue ... UNified Intelligence Taskforce
19:57 * lichtkind neither, just my brother is
19:57 PerlJam TimToady *is* Doctor Who  ;)
19:57 lue NO! Say it ain't so!
19:57 TimToady but I could ask if you know what UNCLE is...
19:57 lichtkind i know a band called UNCLE
19:57 PerlJam TimToady: no, but I think that David McCallum is an integral part of what makes NCIS work
19:57 TimToady PerlJam: no, I won't be Doctor Who until 2023
19:58 TimToady well, Ilya would know what UNCLE stands for
19:58 lue UNCLE means... Undying Needs Contain Luminous Eels (?)
19:59 TimToady I think lue must be a member of THRUSH
19:59 frettled yeah
19:59 TimToady or maybe KAOS
19:59 frettled I think I have Solo's number.
20:00 TimToady all the kiddies are gonna think you mean Han
20:00 frettled Ilya was a favourite of mine, until he mysteriously disappeared, and was rarely seen again.
20:01 TimToady We've had several...interesting...Ilya's...
20:01 PerlJam I haven't heard anything about Ilya Z. since I stopped paying attention to p5p.
20:02 ignacio_ joined #perl6
20:02 lue I'm a board member of the FWAI (ask me what it means)
20:02 TimToady Fat Wookies Are Inspiring?
20:03 lue no
20:03 PerlJam I'm the founder of IMUTAS
20:03 lue FWAI stands for Fun With Acronyms International
20:03 ash__ i am the president of my local chapter of ACM...
20:03 PerlJam (I Made Up This Acronym Society)
20:03 ash__ doh, wait, thats a real group
20:03 frettled ash__: heh
20:03 TimToady a group of machinery...
20:04 ash__ but it can compute things
20:04 lue FWAI has invented the BO-AT (Buoyancy Operated Aquatic Transport)
20:04 TimToady sure, but when I google for it, I get a lot of unwanted boat references mixed in.
20:04 PerlJam lue: Phineas & Ferb?
20:05 lue yes (can't believe anyone here knew that!)
20:05 lue I can't remember what MOAT stood for...
20:05 PerlJam lue: I have kids that are of the appropriate ages.
20:05 lue Remember FEH?
20:06 PerlJam lue: MOAT == Metropolitan Oval Aquatic Trench
20:06 PerlJam google++
20:06 frettled acronymfinder.com?
20:07 PerlJam lue: I even remember the episode.
20:07 lue ah, that's what MOAT was.
20:07 lue *FWAI is monitoring this channel intensely*
20:07 * TimToady now wonders what a frontronym is...
20:08 PerlJam TimToady: you should know ... you invented it!
20:08 lue I think this IRC channel has encountered PINOP.
20:09 lue Perl Is Not Our Priority
20:09 PerlJam lue: you are mistaken.
20:09 PerlJam lue: Perl is all about fun.
20:09 PerlJam or is it "pun"?
20:10 PerlJam one of those
20:10 lue I'm sorry, PINOFRN (Perl Is Not Our Focus Right Now)
20:16 lue ANFSCD... I think the core.pm > core.pir takes way to long on my poor old G3... someone should change it :)
20:18 PerlJam lue: patches welcome!
20:19 cognominal joined #perl6
20:19 TimToady ANFSC Diffident
20:19 lue What it does now is put all these .pm files in core.pm, and puts it in core.pir.
20:20 lue It should turn all those .pm files into .pir files first, then create core.pir by melding all the other .pir files.
20:21 lue At least then I can see some progress :)
20:28 hercynium joined #perl6
20:43 cl58 joined #perl6
20:43 cl58 moritz_: ping
20:53 stephenlb joined #perl6
20:54 ezgranny420 joined #perl6
21:00 lue joined #perl6
21:03 lue Bleh, compiling takes a long time.
21:05 ezgranny420 joined #perl6
21:15 payload joined #perl6
21:16 am0c joined #perl6
21:21 lue joined #perl6
21:22 ash__ ng: my $f = 5; say $f(); # shouldn't that say Int?
21:23 ash__ hmm
21:23 ash__ rakudo: my $f = 5; say $f(); # try again?
21:23 p6eval rakudo c65c28: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
21:23 ash__ there we go
21:24 ash__ $f.WHAT is Int(), so why does trying to invoke on the object say Integer doesn't have invoke?
21:30 nwc10 joined #perl6
21:30 nwc10 What was that yesterday about the masakbot :-)
21:33 Psyche^ joined #perl6
21:44 pmurias joined #perl6
21:48 mssm joined #perl6
21:48 gbacon joined #perl6
22:04 jferrero joined #perl6
22:06 patspam joined #perl6
22:07 wknight8111 joined #perl6
22:10 shillo joined #perl6
22:14 shillo joined #perl6
22:20 athenot_ joined #perl6
22:24 colomon rakudo
22:26 colomon rakudo: if "  fdfs  " ~~ /\s*(\S.*\S)\s*/  { say "that worked?"; say $0 }
22:26 p6eval rakudo c65c28: OUTPUT«that worked?␤fdfs␤»
22:26 colomon rakudo: if "  fdfs  " ~~ /^\s*(\S.*\S)\s*$/  { say "that worked?"; say $0 }
22:26 p6eval rakudo c65c28: OUTPUT«that worked?␤fdfs␤»
22:27 nwc10 left #perl6
22:27 Tene colomon: what surprises you about that?
22:28 colomon trim has a similar regex which fails.
22:29 colomon I was thinking the problem was that bits of the regex grammar hadn't been implemented in master.
22:29 snarkyboojum joined #perl6
22:29 colomon now I think I just borked the regex I was using.
22:29 colomon the one above appears to work fine.
22:30 Tene the one above will fail for "   a   "
22:30 colomon you're quite right!
22:31 colomon apparently trim.t doesn't have nearly enough tests yet.  :)
22:31 Tene Occasionally. :)
22:31 colomon Tene++
22:33 athenot_ joined #perl6
22:34 supernovus joined #perl6
22:37 supernovus Just a small question, I notice blizkost hasn't been touched in a few months, how much is left to do in it before we can do:
22:37 pmichaud /^\s*(.*?)\s*$/   should work :-)
22:37 pmichaud /^\s*(.*?)\s*$/   should work :-)
22:38 colomon pmichaud: Duh.  Don't know why I didn't think of that.
22:38 colomon Actually, I was just reimplementing it in terms of the proposed trim_start and trim_end.
22:38 pmichaud slightly more efficient might be   /^\s*:(.*?)\s*:$/
22:38 aesop dear god
22:38 aesop do i even want to read that
22:38 Tene aesop: eh?  read what?
22:39 pmichaud / ^ \s*: (.*?) \s*: $ /
22:39 aesop there thats easier
22:39 TimToady just put :r on it
22:39 TimToady .*? overrides ratchet
22:39 colomon What is \s*:    ?
22:39 pmichaud TimToady: yes, but there's still an assumed cut after the subcapture, I think
22:39 aesop any number of spaces at the beginning followed by      ?
22:40 supernovus use YAML::XS:from<perl5>;  # last time I tried blizkost, it certainly did not like XS modules.
22:40 pmichaud \s*:  is greedy whitespace, no backtracking
22:40 TimToady use <( and )> instead?
22:40 pmichaud rakudo/pge/nqp don't have <( and )> yet, although those might help :-)
22:40 colomon pmichaud: oooooo.   but won't that screw up the second one?
22:41 pmichaud colomon: shouldn't
22:43 colomon Anyway, I've reimplemented trim in terms of the proposed trim_start and trim_end.
22:43 colomon I hate those names, anyone have a suggestion of something better?
22:43 colomon before I push...
22:44 pmurias colomon: trim_front?
22:44 colomon trim-beginning?
22:45 Tene pre-trim and post-trim?
22:45 Tene trim and mirt?
22:45 pmurias trim-leading
22:46 pmurias trim-trailing
22:46 Tene trim-except-not-the-end and trim-except-not-the-start?
22:46 colomon oooo, I like leading and trailing.
22:48 colomon Is there a pref for dashes over underscores in the spec?
22:49 Tene I strongly prefer dashes.
22:49 Tene I hate typing underscores. :(
22:51 pmurias colomon: an ack search seems to imply that
22:52 pmurias Tene: that's not really a valid reason ;)
22:52 pmurias s/reason/argument/
22:53 Tene pmurias: invalid argument for what, exactly?  All I was supporting there was my preference.
22:53 Tene and "I hate typing underscores" is certainly a valid reason to prefer typing dashes over underscores, given that I don't hate typing dashes.
22:53 * PerlJam hates underscores too
22:53 PerlJam dashes++  :)
22:54 Tene I'm also comfortable trying to subvert the spec for my own benefit, fwiw.
22:54 TimToady well, I'd probably just do btrim and etrim
22:54 pmurias :(
22:54 * supernovus crosses fingers, about to build the new 'master'...
22:55 pmurias TimToady: that was a joke?
22:55 TimToady not at all
22:55 PerlJam didn't some flavor of BASIC have left(), right(), and mid()  or were those just substr() variants?
22:55 Tene is that abbreviated back-trim and entrance-trim?
22:56 PerlJam for some reason the "trim" neuron twiddles that partial memory
22:57 pmurias a Perl 6 ack would be really great
22:58 pugs_svn r29739 | colomon++ | [t/spec] Add tests with just a single non-space character, change trim_start to trim-leading and trim_end to trim-trailing, and unfudge those tests for Rakudo.
22:59 colomon Just realized I never ran spectest on my last commit there, but I don't see how fixing trim and adding two new functions could break anything....
22:59 dalek rakudo/master: 8564837 | (Solomon Foster)++ | src/core/Any-str.pm:
22:59 dalek rakudo/master: Add trim-leading and trim-trailing, and reimplement trim in terms of them.
22:59 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/85648371b452f94e255ba76c19c41d7edb2d5a85
22:59 dalek rakudo/master: 4246be2 | (Solomon Foster)++ | t/spectest.data:
22:59 dalek rakudo/master: Turn on trim.t.
22:59 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/4246be20f4d32663c8f8fb3f98b36b8f7c444a7f
22:59 PerlJam colomon: that's why you run spectest ... so that you can see how those things could break something  :)
23:00 colomon :)
23:00 pmichaud better is   /^\s*:(.*)$/
23:01 pmichaud but not a huge difference :-)
23:01 colomon And the same for trim-trailing, or no?
23:01 payload joined #perl6
23:01 colomon Ah, no, obviously can't get rid of the \S in that one.
23:02 colomon spectest was fine, BTW.
23:02 pmichaud as it exists now, trim-trailing will fail on a string of all whitespace
23:02 colomon pmichaud: ooo, good, more tests needed.
23:02 pmichaud same for trim-leading as exists now
23:04 pmurias a trim($foo) modifies $foo?
23:04 PerlJam no.
23:05 dalek rakudo/master: cfe8cb3 | chromatic++ |  (7 files):
23:05 dalek rakudo/master: Merge branch 'master' of git@github.com:rakudo/rakudo
23:05 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/cfe8cb3f34208f7b653dcc5667b239c8dcd96f11
23:05 dalek rakudo/master: 1c51479 | chromatic++ | build/Makefile.in:
23:05 dalek rakudo/master: [build] Fixed PMC include path when building bind.c.
23:05 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/1c51479e3ca9c3766c865244644289a7e4db519b
23:05 dalek rakudo/master: e5f4b23 | chromatic++ | src/binder/bind.c:
23:06 dalek rakudo/master: [binder] Fixed compiler warnings.
23:06 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/e5f4b23e923e9e13c79387ff6bdde68b6375357a
23:06 dalek rakudo/master: 448a825 | chromatic++ | src/pmc/perl6multisub.pmc:
23:06 dalek rakudo/master: [PMC] Fixed compiler warnings.
23:06 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/448a8253015474c3ecf4f972c9bf318e551234a8
23:06 dalek rakudo/master: ee1e518 | chromatic++ |  (2 files):
23:06 dalek rakudo/master: Merge branch 'master' of git@github.com:rakudo/rakudo
23:06 dalek rakudo/master: review: http://github.com/rakudo/rakudo/commit/ee1e518df5f981621e287cd08f3d1d153a6723ad
23:06 pmurias PerlJam: thanks,
23:06 dolmen joined #perl6
23:07 supernovus Oh dear... so far, PSpec + rakudo new master = EPIC FAIL!
23:07 cognominal PSpec?
23:07 chromatic joined #perl6
23:08 chromatic Hm, I don't know if cfe8cb3 should have gone to master; feel free to revert as necessary.
23:08 phenny chromatic: 01 Jan 17:02Z <diakopter> tell chromatic I'll have you know I'm *again* switching back to JavaScript :/ sigh.  .words.eat   Compiling to JS now, though, now that I know how to write an emitter builder.
23:08 supernovus cognominal: a fun little project, a semi-serious/semi-humourous port of RSpec and Cucumber to Perl 6.
23:08 chromatic Likewise ee1e518.
23:10 cotto_work joined #perl6
23:10 colomon chromatic: what do you think the problem with them is?
23:11 chromatic I don't know; I don't know where they came from or if they overwrote other changes.
23:11 pmichaud were you perhaps building from the old master?
23:11 lue Wow. I left this thing alone for about 2 hours and it STILL didn't turn core.pm into core.pir !
23:12 payload joined #perl6
23:12 chromatic pmichaud, that may have been it.
23:13 pmichaud checking spectest now
23:13 chromatic The only interesting changes are the warnings cleanups.
23:13 chromatic My most recent interesting pull before that was for the December release.
23:13 pmichaud yes, we switch branches yesterday
23:13 pmichaud *switched
23:14 pmichaud so I'm thinking perhaps your push has folded in stuff from the old master
23:14 chromatic Sorry about that.
23:14 pmichaud we'll know shortly :)
23:15 pmichaud so far everything seems to be building okay, which is a very good sign :)
23:15 chromatic Mostly it looked like doc changes and spectest changes.
23:15 lue Let me know what a finished build looks like. I'll never know. :/
23:15 chromatic lue, I have a couple of patches on a Parrot branch that speed up building.
23:15 chromatic No huge changes, but a little bit helps.
23:16 old_gray_bear joined #perl6
23:16 supernovus bah, and apparently, I can't build the 'alpha' branch even with the version of parrot it recommends... /opt/perl6/bin/parrot  -o perl6_s1.pbc perl6.pir make: *** [perl6_s1.pbc] Segmentation fault
23:18 lue so, how would I get those patches?
23:18 pmichaud looks like lots of spectest failures :-|
23:18 chromatic I'll check them in after the Parrot release tomorrow.
23:19 pmichaud I'm guessing the Makefile.in patch is the culprit
23:19 pmurias chromatic: i looked at the modern perl book, one thought about the "how do we know that any random CPAN distribution is useable and usefull" is that not all CPAN distributions are usefull
23:20 jferrero joined #perl6
23:20 chromatic I can't see how the Makefile patch would hurt.
23:20 pmichaud not the Makefile patch itself, but the fact that the branch merges pulled in the old makefile from master
23:20 chromatic Oh.  Yes, that would suck.
23:20 pmichaud so now ng is building using the wrong makefile.
23:21 pmichaud crud.
23:22 chromatic I don't see that in the diffs.
23:22 pmichaud well, I'm looking at the Makefile now, and it's definitely pulling in the wrong version of spectests
23:22 athenot joined #perl6
23:23 lue chromatic: how would I get those parrot speedup patches? Would running Configure.pl get them?
23:23 pmichaud I agree it's not evident from the diffs.
23:24 chromatic How about reverting ee1e518 and cfe8cb3?  Does that do it?
23:25 pmichaud fatal: Commit ee1e518df5f981621e287cd08f3d1d153a6723ad is a merge but no -m option was given.
23:25 pmichaud I'm not sure how to do that revert.
23:27 explorer__ joined #perl6
23:27 * colomon has a patch to fix trim-leading and trim-trailing, but doesn't want to touch github until this stuff is straightened out...
23:28 chromatic nopaste?
23:29 * lue is wanting to know how to get chromatic's compilation speed-up patches
23:29 chromatic one moment, lue
23:30 chromatic lue, see http://nopaste.snit.ch/19628 -- apply that patch to Parrot.
23:30 lue allrighty
23:30 supernovus rakudo: augment class Int { method times (&code) { for ^self { code() } } }; 2.times: { say "hello" }
23:30 p6eval rakudo 4246be: OUTPUT«Method 'times' not found for invocant of class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:31 chromatic http://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt
23:33 * lue notes he has never had to apply a patch. He also notes he is a hopless beginner :D
23:33 supernovus PSpec is going to need some reworking, as it currently is using "class Blah is also" in a few places. But I find that error to be interesting. The new master see's 2 as an Integer not an Int, and yet:
23:34 supernovus rakudo: say 2.WHAT
23:34 p6eval rakudo 4246be: OUTPUT«Int()␤»
23:34 colomon lue: hopless?  you have no beer?
23:35 colomon supernovus: it lies
23:35 colomon rakudo: say PARROT(2)
23:35 p6eval rakudo ee1e51: OUTPUT«Integer␤»
23:35 lue colomon: ha ha.
23:35 lue oops hopeless
23:36 supernovus Hmm, on the old master, this worked: class Int is also { method times (&code) { for ^self { code() } } }; 2.times: { say "hello" }
23:37 Tene supernovus: "is also" is deprecated.
23:37 cotto_work joined #perl6
23:38 supernovus Tene: I know, but as shown above, if you use augment class Int { ... above code here ... }; 2.times: { say "hello" }  it bails out claiming that the Integer class (not Int) has no method called "times".
23:38 Tene ew ew I've always hated that stuff in ruby. ><
23:39 Tene (yes, I know, not helpful)
23:39 * lue wishes to know how to apply chromatic's patch (he is a HOPELESS beginner)
23:40 supernovus I'm thinking something fairly major has changed in the way augmenting existing classes works.
23:40 supernovus rakudo: augment class Int { method times (&code) { for ^self { code() } } }; 2.Int.times: { say "hello" }
23:40 p6eval rakudo ee1e51: OUTPUT«Method 'times' not found for invocant of class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:42 TimToady rakudo: say ^Int.WHAT
23:42 p6eval rakudo ee1e51: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 13865 (src/builtins/Seq.pir:28)␤»
23:43 Tene ^Int?
23:43 Tene std: say ^Int.WHAT
23:43 p6eval std 29739: OUTPUT«ok 00:01 108m␤»
23:43 supernovus rakudo: augment class Str { method woot { say "woot" } }; "hello".woot;
23:43 p6eval rakudo ee1e51: OUTPUT«Method 'woot' not found for invocant of class 'Perl6Str'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
23:44 colomon lue: you want the patch program.  err... you're on linux, right?
23:44 Tene supernovus: please try it with custom classes not related to native types to verify whether the problem is with 'augment' or with the native type mapping.
23:45 supernovus Tene: okay, will do.
23:45 lue colomon, I am.
23:45 dondalin joined #perl6
23:45 Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); augment class A { method bar { say "bar" } }; $a.bar();
23:45 p6eval rakudo ee1e51: OUTPUT«bar␤»
23:45 Tene see?  works fine.
23:46 Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); { augment class A { method bar { say "bar" } }; } $a.bar();
23:46 colomon lue: grab the text from the patch, put it in a file named chromatic.patch (or something like that), then cd parrot and say
23:46 p6eval rakudo ee1e51: OUTPUT«Confused at line 11, near "{ augment "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
23:46 colomon lue: patch -p0 <chromatic.patch
23:46 Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); if 1 { augment class A { method bar { say "bar" } }; } $a.bar();
23:46 supernovus yeah, I tried augmenting a custom class and it works fine.
23:46 p6eval rakudo ee1e51: OUTPUT«Confused at line 11, near "if 1 { aug"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
23:46 lue colomon, will do.
23:46 Tene rakudo: class A { method foo { say "foo" } }; my A $a .= new(); if 1 { augment class A { method bar { say "bar" } }; }; $a.bar();
23:46 p6eval rakudo ee1e51: OUTPUT«bar␤»
23:46 Tene So it's not properly lexically scoped yet, then.
23:47 TimToady what's lexical scoped about augment?
23:47 TimToady it modifies something that already exists
23:47 Tene TimToady: Is augment not lexically scoped?
23:47 TimToady nope
23:48 TimToady it's for monkey patching
23:48 Tene Is there a lexically-scoped version?
23:48 TimToady my class Foo is OUTER::Foo {...}
23:48 Tene Okay.  Thanks.
23:53 * lue patch applied, fingers crossed.
23:54 payload joined #perl6
23:57 colomon lue: did patch say that the patch worked?
23:59 hudnix joined #perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo