»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
00:02 snarkyboojum left
mberends sleep & 00:09
00:09 mberends left 00:10 xabbu42 joined
TimToady Grimnir_: Well, we try to be good, and very often that's the same as nice, but sometimes not. 00:13
Grimnir_ sorry, I wasn't referring to the whole channel. you were good, I got nice help and all :) 00:14
TimToady what I mean is, well, let me give you an example. I once had a stomach tumor removed. This was simultaneously Very Good, and Not Nice. 00:18
sometimes the job of a community is for us to grind the rough spots off of each other, and that can also be Very Good, and Not Nice. 00:19
00:19 quietfanatic_ joined 00:20 quietfanatic left, quietfanatic_ is now known as quietfanatic
Grimnir_ I'm sorry if I have been a bit too rough. I just got excited about perl6 from the speak 00:21
Tene k23z__: You're right that, say, asking for python help in here would be offtopic, but asking about how Perl 6 compares to python certainly isn't offtopic. No programming language stands completely alone, especially one still under development like Perl 6.
k23z__: It's very important to look at other languages for inspiration, to see what they've done right or wrong, to inform our decisions.
Failure to learn from the mistakes of others is a very unfortunate failure to make. :)
TimToady Grimnir_: we all need to simultaneously learn more sensitivity while growing thicker skins, which is a neat trick. :) 00:22
Grimnir_ TimToady: and I'm sorry to hear about the tumor, but great to hear that it was removed
Tene much better than having it inserted. :) 00:23
TimToady my tummy had bitrot
but it's been more than six years now, so I'm probably fine, for some definition not including sanity 00:24
Grimnir_ that reminds me... I was taking a CS course about concurrency programming (CSP to be specific) and they had made a CSP-implementation in Python. the problem with python is their GIL (Grand Interpreter Lock) which made it impossible to run different threads at the same time (multitasking but not running in parallel). if someone made a CSP-implementation in Perl6, would it be possible to run different threads on different processors? 00:26
Tene Grimnir_: Perl 6 has a lot of ideas about concurrency. Unfortunately, the implementations haven't caught up yet. 00:27
Grimnir_: Parrot, which Rakudo is built on, has significant problems (nonfunctional) in its threading capabilities.
Grimnir_ Tene: ok 00:28
Tene offlines to actually get some work done on Rakudo.
00:31 colomon joined, SmokeMachine joined 00:34 colomon left
TimToady Grimnir_: we don't have a GIL, and try to define everything as lexically as possible so they they aren't shared between threads unless absolutely necessary 00:38
we also try to make as many things immutable values as practically possible, which also allows lockless sharing
Grimnir_ nice
TimToady well, that's the theory
Grimnir_ so message passing could work nicely 00:39
TimToady that's the intent
one of the intents
Grimnir_ I will be looking forward to that :)
TimToady and, in fact, feed operators, ==> and <==, are basically message queues
object pipes 00:40
Grimnir_ ooh
TimToady and I have some ideas about an object having a current owner as it gets passed around, which might help on the locking front as well 00:41
there's also the whole STM business, which is actually prototyped in pugs
00:41 [synth] joined
TimToady and might scale better than locking solutions, for some set of problems 00:41
Grimnir_ what's STM? 00:42
TimToady but mostly it's just about not baking serial assumptions into the language where it's not needed
software transactional memory
Grimnir_ aah, yeah
TimToady may also turn out to be a toy, we'll have to hedge our bets on that one. 00:43
Tene feels a little bit grumpy about re-doing HLL interop again.
TimToady what we really need is Transactional Memory, not just the Software part
00:44 synth left
TimToady Tene: it's okay to feel grumpy over that. 00:44
Grimnir_: but we might be able to use a notion related to STM, which is that time can be virtual, and temporarily out of joint in a Heisenbergian way, as long as a transaction manager can find a consistent way to mesh all the changes 00:46
which is sort of another way about not caring about sync issues when you don't need to 00:47
Tene I don't feel so well... might just take a nap instead. 00:48
TimToady which is sort of the fundamental way p6 looks at all parallelism
I was out of sorts yesterday.
and naps are good.
Grimnir_ sounds interesting
TimToady I'm good at handwaving these things. :)
I just keep hoping that someone who really knows what they're doing picks up some of the cues and implements it all, and that we've designed things well enough to stay out of their way. 00:50
Grimnir_ hmm... that wouldn't be me :)
00:50 jferrero left
TimToady well, but you could be their First User. :) 00:51
Grimnir_ that would be cool :=
:)
it would be nice if I could use perl for CSP-programming
k23z__ TimToady: I would like to write a wiki page on Perl6 on the transition from Perl -> Perl6 , what wiki should I write on ?
I mean I want to start to write it and ask for advice after I write a bit some of it 00:52
TimToady sounds kinda more bloggy, but I'm not the expert on that kind of thing
but yeah, certainly one could start writing and then figure out where to poke it 00:53
00:53 broquaint left
k23z__ then I'll keep it in my private repo 00:53
and will unveil when its consistent
00:54 broquaint joined
TimToady and thank you for developing a thicker skin earlier today :) 00:54
Grimnir_ is there a perl 6 syntax highlight for vim?
TimToady yeah, used to be in the pugs repo, but moved out to gitland somewhere 00:55
see the bottom of perl6.org/whatever/ 00:56
Grimnir_ nice, thanks 00:57
k23z__ the one on github that alester wrote I think 00:58
00:59 payload joined
TimToady well, lotsa people wrote it 01:00
Grimnir_ is it illegal to have code before sub declarations? 01:04
TimToady no, unless the code is illegal :)
Grimnir_ bleh, I forgot a ; 01:05
TimToady do you mean call forward
ah, that would do it.
Grimnir_ it's incredible that I still happen to forget that bleeding semicolon :)
TimToady rakudo doesn't always give you a decent error on that particular error
01:06 justatheory left
TimToady std: my $x = 1␤sub foo {...} 01:06
p6eval std 29969: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/1YwjjmuKiQ line 2:␤------> <BOL>⏏sub foo {...}␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤ postfix␤ postfix_prefix_meta_operator␤ statement modifier
..loop␤FAILED 00:01 108m␤»
TimToady that one could be better
I think p5 would conjecture a missing semicolon there
std: { 42 }␤{ 43} 01:07
p6eval std 29969: OUTPUT«ok 00:01 105m␤»
TimToady right
std: my $x = 1␤{ 42; } 01:10
p6eval std 29969: OUTPUT«===SORRY!===␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/4bQaPyZno5 line 2:␤------> <BOL>⏏{ 42; }␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤
..postfix␤ postfix_p…
TimToady there, picks up that one
Tene k23z__: There's the Perl 6 wiki: www.perlfoundation.org/perl6/index.cgi 01:14
lue is there any sort of verbose command so seeing what fails/wins is easier? 01:16
Tene I don't know of a command to do that beyond just running the test files directly. 01:22
okay, got some tea, waking up a bit. Lemme look again. 01:27
Grimnir_ what's the syntax for "make a list of all elements in the list greater than $x"? 01:30
TimToady rakudo: say grep * > 5, ^10
p6eval rakudo 9a9450: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
TimToady rakudo: say grep { $_ > 5 }, ^10 01:31
p6eval rakudo 9a9450: OUTPUT«6789␤»
TimToady alpha: say grep * > 5, ^10
p6eval alpha 30e0ed: OUTPUT«6789␤»
TimToady that what you want?
Grimnir_ not exactly. actually I'm trying to make the quicksort example, but I can't find out 01:32
what does "^10" mean? 01:34
pugssvn r29970 | lwall++ | [STD] speculate missing semicolon when ws between two terms crosses \n
TimToady same as 0 ..^ 10
Grimnir_ ah
TimToady well, grep { $_ > $pivot }, @list for that 01:35
should have a function for grepping into two lists somewhere 01:36
maybe classify, but probably unimplemented 01:37
Grimnir_ Nominal type check failed for parameter '@liste'; expected Positional but got Int insteadNominal type check failed for parameter '@liste'; expected Positional but got Int insteadNominal type check failed for parameter '@liste'; expected Positional but got Int insteadNominal type check failed for parameter '@liste'; expected Positional but got Int instead[A[A[A[A
whoops
sorry
my terminal fucked
Tene perl6: my @list = 1..10; my @g = grep { $_ > 5 }, @list; say @g; 01:38
p6eval elf 29969: OUTPUT«Use of uninitialized value $_ in numeric gt (>) at (eval 124) line 4.␤Undefined subroutine &GLOBAL::grep called at (eval 124) line 4.␤ at ./elf_h line 5881␤»
..pugs, rakudo 9a9450: OUTPUT«678910␤»
TimToady I guess we leave elf in there to make pugs and rakudo look good :) 01:39
lue elf: say "hi"
p6eval elf 29970: OUTPUT«hi␤»
lue elf: say 1..3
p6eval elf 29970: OUTPUT«123␤»
lue elf: say 1..*
p6eval elf 29970: OUTPUT«Undefined subroutine &GLOBAL::whatever called at (eval 125) line 3.␤ at ./elf_h line 5881␤»
lue how did it know what it was if it's undefined? :) 01:40
01:40 colomon joined
lue hey colomon o/ 01:40
colomon \o
Grimnir_ as far as I recal, there was a more neat way to do it instead of using grep? 01:41
TimToady classify, as I mentioned above 01:43
01:43 snarkyboojum joined
TimToady but it's probably not quite right for a qsort partition 01:44
alpha: my @list = (1, 2, 3, 4); my (:@even, :@odd) := classify { $_ % 2 ?? 'odd' !! 'even' }, @list; say @even; say @odd 01:45
p6eval alpha 30e0ed: OUTPUT«rtype not set␤in Main (file <unknown>, line <unknown>)␤»
TimToady alpha: my @list = (1, 2, 3, 4); my (:@even, :@odd) := |classify { $_ % 2 ?? 'odd' !! 'even' }, @list; say @even; say @odd 01:46
p6eval alpha 30e0ed: OUTPUT«rtype not set␤in Main (file <unknown>, line <unknown>)␤»
TimToady ah well
alpha: say classify { $_ % 2 ?? 'odd' !! 'even' }, 1,2,3,4; 01:47
p6eval alpha 30e0ed: OUTPUT«Could not find non-existent sub classify␤in Main (file src/gen_setting.pm, line 324)␤»
colomon is trying to figure out what happened here while he was at rehearsal...
quietfanatic alpha: my @list = (1, 2, 3, 4); {($^a % 2 ?? @^b !! @^c).push: $^a}.(@list, my @even, my @odd); say @even; say @odd 01:48
p6eval alpha 30e0ed: OUTPUT«␤1 2 3 4␤»
quietfanatic hmm
TimToady colomon: learning, we hope :)
quietfanatic alpha: my @list = (1, 2, 3, 4); {(($^a % 2) ?? @^b !! @^c).push: $^a}.(@list, my @even, my @odd); say @even; say @odd
p6eval alpha 30e0ed: OUTPUT«␤1 2 3 4␤»
quietfanatic alpha: my @list = (1, 2, 3, 4); {(($^a % 2) ?? @^b !! @^c).push: $^a}.(all(@list), my @even, my @odd); say @even; say @odd 01:49
p6eval alpha 30e0ed: OUTPUT«␤all(1, 2, 3, 4)␤»
quietfanatic :[
TimToady nice fangs
quietfanatic It's not autothreading over the block. 01:50
lue I would think you need to define $a...
Tene lue: classify would be a good function to write and/or test.
Heh, there you are.
I didn't notice you in the scrollback, so I thought you were AFK. 01:51
quietfanatic lue: the ^ in $^a makes it a placeholder parameter.
Tene I find myself reluctant to make significant changes here, remembering pmichaud as having strong opinions about how HLL library loading should be.
quietfanatic alpha: my @list = (1, 2, 3, 4); my @even; my @odd; @list.grep({push ($_ % 2 ?? @odd !! @even), $_}); say @even; say @odd 01:52
p6eval alpha 30e0ed: OUTPUT«24␤13␤»
lue And why does pmichaud matter? He's not the creator of rakudo or anything. :D </sarcasm>
01:53 xabbu42 left
quietfanatic alpha: sub classify (@a, &cond) { 01:55
p6eval alpha 30e0ed: OUTPUT«Unable to parse block; couldn't find final '}' at line 10, near ""␤in Main (file <unknown>, line <unknown>)␤»
quietfanatic whoops
alpha: sub classify (@a, &cond) {my %r; for @a {%r{&cond($_)} = $)}; return %r;}; say classify ((1, 2, 3, 4), {$_ % 2 ?? 'odd' !! 'even'}); 01:56
p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "= $)}; ret"␤in Main (file <unknown>, line <unknown>)␤»
quietfanatic alpha: sub classify (@a, &cond) {my %r; for @a {%r{&cond($_)} = $_}; return %r;}; say classify ((1, 2, 3, 4), {$_ % 2 ?? 'odd' !! 'even'});
p6eval alpha 30e0ed: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤in Main (file src/gen_setting.pm, line 324)␤»
quietfanatic alpha: sub classify (@a, &cond) {my %r; for @a {%r{&cond($_)} = $_}; return %r;}; say classify (@(1, 2, 3, 4), {$_ % 2 ?? 'odd' !! 'even'});
p6eval alpha 30e0ed: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤in Main (file src/gen_setting.pm, line 324)␤» 01:57
pugssvn r29971 | lwall++ | [STD] rearrange conditionals as to likelihood, remove redundant condition 02:03
lue rakudo: say 16**5 02:08
p6eval rakudo 9a9450: OUTPUT«1048576␤»
lue rakudo: say 16**6
p6eval rakudo 9a9450: OUTPUT«16777216␤»
lue And our total this hour..... $9780764571404 worth in bug fixes! Thanks for the donations! Our bot volunteers are here, waiting to receive YOUR bug reports! 02:10
quietfanatic That's more than the national debt! 02:11
wait, it's not. 02:12
colomon rakudo: (Q:PIR{%r = get_hll_global 'say'})(34)
p6eval rakudo 9a9450: OUTPUT«Null PMC access in invoke()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
lue (it's the barcode number I got off the back of TI-84 Plus Graphing Calculator for Dummies)
quietfanatic alpha: (Q:PIR{%r = get_hll_global 'say'})(34)
p6eval alpha 30e0ed: OUTPUT«34␤»
02:12 lue is now known as Hackathon
quietfanatic rakudo: (Q:PIR{%r = get_hll_global '&say'})(34) 02:12
p6eval rakudo 9a9450: OUTPUT«34␤»
quietfanatic Aha!
colomon quietfanatic: nice.
rakudo: (Q:PIR{%r = get_hll_global '&infix:<&&>'})(4,5) 02:13
p6eval rakudo 9a9450: OUTPUT«Null PMC access in invoke()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon rakudo: (Q:PIR{%r = get_hll_global '&infix:<+>'})(4,5)
p6eval rakudo 9a9450: ( no output )
colomon rakudo: say (Q:PIR{%r = get_hll_global '&infix:<+>'})(4,5)
p6eval rakudo 9a9450: OUTPUT«9␤»
Hackathon And another conundrum solved. That's what happens, when you donate bug reports *large game show guy smile*
quietfanatic colomon: Having to do a symbolic lookup every time you call a meta op seems unwieldy to me. 02:14
Hackathon --reset
02:14 Hackathon is now known as lue
colomon quietfanatic: first make it work... ;) 02:14
quietfanatic ay.
TimToady someone might optimize it in the next ten or twenty years 02:16
quietfanatic Especially for user-defined meta-op subs. They'll expect to be passed the sub itself.
lue let's use SQL! Nothing bad has EVER happened to people who use SQL :) 02:17
I've heard of SQL injections, but that gives it antibodies (right?) :D 02:19
colomon rakudo; say pir::get_hll_global__SC("&infix:<+>")(3, 4) 02:20
rakudo: say pir::get_hll_global__SC("&infix:<+>")(3, 4)
p6eval rakudo 9a9450: OUTPUT«The opcode 'get_hll_global_s_p' (get_hll_global<2>) was not found. Check the type and number of the arguments␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 972 (compilers/pct/src/PCT/HLLCompiler.pir:538)␤»
colomon rakudo: say pir::get_hll_global__CS("&infix:<+>")(3, 4) 02:21
p6eval rakudo 9a9450: OUTPUT«7␤»
Grimnir_ how does an array with one element get treated? can it be interpreted as a scalar in a multi sub for instance? ( multi sub snot ($blah) { ... } ? )
lue Grimnir_: look 02:22
rakudo: my $a=(3,4,5,6); say $a
p6eval rakudo 9a9450: OUTPUT«3 4 5 6␤»
lue the magic(?) of 楽土
Grimnir_ so it doesn't really matter if you call it $a or @a?
TimToady rakudo stringifies its one argument
s/rakudo/say/ 02:23
yes, it does
rakudo: my @a = 3,4,5,6; say @a
p6eval rakudo 9a9450: OUTPUT«3456␤»
TimToady notice the difference
lue When I first saw that, I was quite surprised at the leniency myself. I still don't fully understand the purpose, I just know it turns beginners' heads :) 02:24
Grimnir_ so what does "my $a = (2,3,4);" actually mean? what is $a?
lue rakudo: my $a=(2,3,4); say $a.WHAT 02:25
p6eval rakudo 9a9450: OUTPUT«Seq()␤»
TimToady it's a Seq, which is basically a readonly array. but any array-ish thing, when stringified, puts ' ' between elements
but when you pass the elements as separate args to say, that doesn't happen
lue rakudo: say (2,3,4); say (2,3,4).WHAT 02:26
p6eval rakudo 9a9450: OUTPUT«234␤Parcel()␤»
Grimnir_ ok, I'm getting a bit confused here :) 02:28
so there's also lists and arrays? 02:29
alpha: (1,2,3).WHAT.say
p6eval alpha 30e0ed: OUTPUT«List()␤»
lue Don't worry, unless you plan on contributing to 楽土. Then you run.
:)
Grimnir_ rakudo: (1,2,3).WHAT.say
p6eval rakudo 9a9450: OUTPUT«␤»
Grimnir_ rakudo: say (1,2,3).WHAT 02:30
p6eval rakudo 9a9450: OUTPUT«Parcel()␤»
Grimnir_ hmm...
lue ...now THAT is an interesting error!
masakbot --report-bug --which="latest"
Grimnir_ alpha: say (1,2,3).WHAT 02:31
p6eval alpha 30e0ed: OUTPUT«List()␤»
lue don't forget, master is a rewriting of how it all works, to bring it close to STD.pm 02:32
rakudo: my List @a=(1,2,3); say @a.WHAT
p6eval rakudo 9a9450: OUTPUT«()␤»
lue hm
Grimnir_ is master the one to be preferred to use?
lue if you are of the bleeding edge/contributors, yes. If not, it's your choice. Both have features the other don't. 02:33
If you want laziness, use master. If you want to define your own operators, use alpha (right now). At this point, it depends on what you want :) 02:34
Grimnir_ I guess I just want to try out Perl 6 :)
TimToady don't we all 02:35
lue Grimnir_ if you want to contribute code to rakudo, then download the latest version thru git. If not, then go to the rakudo website and download the latest tarball. 02:37
Grimnir_ ok, I don't understand the difference between list, seq and array. I'm trying to make a quicksort routine with "pattern matching" with multi subs. how can I make a multi sub quicksort for one element? "sub quicksort ($elem) { ... }" ?
colomon sub quicksort (@array where {@array.elems == 1}) { ... }
Grimnir_ ooh, nice 02:38
TimToady sub quicksort ([$head])
02:38 nihiliad left
colomon ooh, nicer. 02:38
Grimnir_ lue: so it's not a good idea to get the code from git if I only want to try it out?
quietfanatic rakudo: multi count (@list is copy) {@list.pop; return 1 + count(@list)}; multi count ($one) {return 1}; say count(3, 4, 5)
p6eval rakudo 9a9450: OUTPUT«No applicable candidates found to dispatch to for 'count'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon (I'm still not used to jnthn's new tricks.) 02:39
lue (assistance requested from experts) It doesn't matter. (I really need assistance in answering; I'm a `beginner' myself)
quietfanatic rakudo: multi count (@list is copy) {@list.pop; return 1 + count(@list)}; multi count ($one) {return 1}; say count([3, 4, 5])
p6eval rakudo 9a9450: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)␤»
quietfanatic Doesn't work. 02:40
02:42 eternaleye left
lue My recommendation is thru git. It's not at the point where a tarball is (IMO) the best option, because the git is updated every hour :) 02:42
Grimnir_ I can't get "multi sub quicksort ([$head])" to work 02:43
TimToady std: my $x = 1␤sub foo {...}
p6eval std 29971: OUTPUT«===SORRY!===␤Two terms in a row (previous line missing its semicolon?) at /tmp/KSn7OvoapB line 2:␤------> <BOL>⏏sub foo {...}␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤ postfix␤
..postfix_prefix_meta_operator␤ statement mod…
TimToady that's better 02:44
02:45 eternaleye joined
TimToady if you're passing a list as flat args, you just want ($head) vs ($head,*@tail) 02:47
colomon Seems to me I tried to write quicksort that way about eight months ago and it was a disaster... 02:50
(flat args, I mean)
Tene use.perl.org/~JonathanWorthington/journal/40196 is relevant 02:53
02:54 wknight8111 left
lichtkind gut navht 02:54
lue night o/
lichtkind night lue
colomon \o
02:54 lichtkind left
Tene Grimnir_: what are the sigs of the other multis? 02:56
Grimnir_: are you using multi ([$head, *@tail]) {} ?
Grimnir_: 'cos that's what I tried my first time doing that. It won't work 'cos it's ambiguous, 'cos *@tail can be empty. 02:57
if you really want to do it like that, though, try: 02:58
multi sub qs([$pivot, *@list where { +@list > 0 }]) {
dalek kudo: 3633cb8 | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Add infix_prefix_meta_operator and !op to the grammar.
kudo: dee7104 | (Solomon Foster)++ | src/ (2 files):
First attempt to create an action for !op.
kudo: df80392 | (Solomon Foster)++ | src/ (3 files):
Change !op to generate an explicit call to an infix_prefix_meta_operator function.
Tene which WFM
dalek kudo: 19c36a8 | (Solomon Foster)++ | src/ (5 files):
Merge branch 'metanot'
Grimnir_ Tene: I use multi sub quicksort (@array)
ok, so an array is always an array, no matter the size 02:59
Tene Yes.
It's entirely possible there's a bug in the dispatcher. You'll have to check with jnthn, who is likely busy with convention stuff or sleeping right now. 03:00
use.perl.org/~JonathanWorthington/journal/40196 is jnthn's blog post talking about using multi subs and signature unpacking to implement quicksort.
He uses the empty list as his base case, instead of the unary list.
TimToady that might be about alpha
Tene TimToady: Feb 19 03:01
lisppaste3 tene pasted "list-size-based dispatch and unpacking for Grimnir_" at paste.lisp.org/display/96038 03:02
colomon wonders how long it is going to take pmichaud to explain to him where the !op implementation goes wrong.... because it will be easy to knock out a couple more metaops along the same lines... :) 03:04
Tene okay, I think I know the order I'll sort this out in. 03:08
Now to go socialize and forget it all before I get a chance to work on it.
Grimnir_ how do you push an element on an array? 03:11
push @array, $elem ?
Tene or @array.push($elem)
either
Grimnir_ hmm... can't get that example to work 03:14
but later 03:15
I'm going to bed now
cheers
TimToady night
colomon o/
lue night o/
03:16 supernovus joined
dukeleto jnthn: nice to see that blizkost is getting some love 03:17
supernovus So, I'm planning to move my website over to Perl 6 in one week. Not sure how it'll go yet. It's hosted on a 256 MB RAM VPS, but I'm going to try anyway. In less than a week I've managed to make the Perl 6 version of my custom CMS support 90% of the front-end facing side of things for the website. 03:20
03:21 elmex left
supernovus Oou, did I see Blizkost news? 03:21
lue you want to run a website on P6 (interesting concept)
?
dukeleto supernovus: blizkost got updated to be working again, since parrot calling conventions changed
supernovus: github.com/jnthn/blizkost/commits/master 03:22
supernovus lue: Yeah. My current website runs on a highly custom CMS written in non-Moose, non-strict Perl 5... I have rewritten the entire engine in Perl 6.
lue Cool. (so it actually works? Wow)
03:23 elmex joined
supernovus lue: Yeah, and it's fairly fast using SCGI. I do cheat a bit by pre-compiling libraries into .pir from .pm but the source is entirely Perl 6 :-) 03:23
For the record, I am using the January release of Rakudo (so what is now known as the 'alpha' branch), as a lot of my code does not compile under the new master (yet). 03:25
lue OK, now your initial statement makes complete sense :D
03:26 lue is now known as Hackathon 03:28 am0c joined
Hackathon Sorry for the delay. Our grand total this hour is... $99999999999998 worth of bug fixes (around £3.4) 03:28
Thanks for your donations! Our robot operaters are standing by for YOUR bug reports!
03:28 Hackathon is now known as lue
supernovus I am rather impressed with the performace of SCGI versus "normal" CGI. November may benefit from the SCGI library, at least until mod_perl6 works with versions of Parrot/Rakudo post November last year... 03:29
Hmm, I always seem to be here when masak isn't. Please let him know that I would like to help out with the Temporal Flux project. Getting some nice Time + Date stuff into Perl 6 would be a great pleasure! 03:32
lue are you talking about the TARDIS or the Temporal part of STD.pm? 03:33
s/STD.pm/Specs/
supernovus lue: Well, masak had a project last year to rewrite the Temporal stuff from the Specs, and has a branch in github with the work he did. It was meant to make working with time/date stuff as simple as possible. But there hasn't been any commits since last year, and I'm not sure what happened to the project. If TARDIS is the new name, then great, I'm the world's biggest Doctor Who fan as well ;-) 03:35
lue TARDIS is the codename for a timetraveling debugger masak and snarkyboojum are working on
TARDIS = Time-Augmented Relative Debugging In Style (or something like that) 03:36
supernovus Nice. Well, it wasn't the debugger I had been following, but the new version of Temporal that masak had planned. Debugging is always nice though. Unfortunately, the only debugging library I ever wrote was loosely based on Damian's "Smart::Comments" and as source filters are no more in Perl 6, I'm not sure how to make comments be "more than comments" when a module is loaded using Perl 6. 03:38
lue If you look a little back in the backlogs, then I came up with a plethora of Dr Who related codenames for this debugger 03:40
Debugging A Lot of Erroneous Kode (DALEK) :) 03:42
supernovus Nice! :-D 03:46
Well, hopefully, next Saturday I'll be able to say that my primary website is running Perl 6. I may still have the "archives" using my old engine until I get all of the documents ported over, but it should hopefully be a fairly smooth transition. IF the VPS handles a constantly running Perl 6 based SCGI process... 03:48
03:48 hercynium joined
supernovus The only thing that worries me is, that a perl 6 script that runs in 5 seconds on my Quad Core 2.3 ghz, 4 GB RAM PC, takes about 30 seconds to run on my Dual Core 1.3 ghz, 1 GB RAM netbook... and I have no idea what the VPS is like CPU wise, but it only has 256 MB of RAM... :-P Now, SCGI renders things that the CGI script takes 5 seconds to, in 500 ms on my PC, so hopefully, it will help on the VPS as well... 03:54
lue I have a CPU < 1GHz and 384MiB ram (twice that swap space) If it runs fine on my computer, it runs fine on any computer :) 03:59
supernovus lue: Sounds good. I just double checked, and the VPS is actually 128 MB of physical memory (if there is such a thing in Xen) and 256 MB of swap space... but I'm crossing my fingers. The SCGI on my home computer works so well, I'm hoping it will do as well on the VPS :-) 04:01
lue it's a Powerbook G3 Pismo. It can't get much worse :D 04:02
supernovus Up until two days ago, I had a Dual P3 450mhz with 512 MB of RAM, which was built in 1998, sitting in my storage room. I think THAT probably would have been worse than the Powerbook ;-) 04:04
04:04 lue is now known as Hackathon
Hackathon And our total this hour is... £18 worth in bug fixes! (the equivalent in USD is too big to display, so we will be using pounds sterling throughtout the rest of the hackathon) 04:05
04:05 am0c left
Hackathon Remember, bug fix donations are welcome! And for this hour, the dollar amount of a bug report is doubled if sent in coherent 日本語! 04:06
04:06 Hackathon is now known as lue
colomon rakudo: my $a = 10; $a &&= 11; say $a 04:07
p6eval rakudo 19c36a: OUTPUT«Null PMC access in invoke()␤current instr.: '!assign_metaop' pc 16783 (src/builtins/Junction.pir:319)␤»
colomon oh good, it's not just !&& that doesn't work.
04:09 _jaldhar left 04:11 am0c joined 04:12 _jaldhar joined
dalek kudo: 54be6dd | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Comment noting a big hole in the !op implementation.
04:12
supernovus Anyway, have a good nght all. I'll let you know how my website migration to Perl 6 goes. :-) 04:13
quietfanatic colomon: shouldn't the precedence of !op be the same as that of op? 04:14
colomon quietfanatic: and do you know how to implement that? :)
quietfanatic Nope : )
colomon That's why I left a nice note hoping that someone who does will see it. :)
04:15 supernovus left
quietfanatic colomon: is there a way to find the precedence of an operator? If so you could probably do that to $<infix>...or not, because infix gets called after infix_prefix_meta_op 04:16
ghrm...
lue --go-away &
quietfanatic In that case, you'd put the <O()> after <infix> inside token infixish rather than infix_prefix_meta_operator... 04:19
but how would you get the precedence of $<infix>?
04:22 kfo left 04:24 kfo joined 04:25 am0c left 04:28 wolf2k_ubuntu left 04:37 Trashlord joined 04:43 snarkyboojum left 04:46 _jaldhar is now known as jaldhar
lue hellos to all! 04:49
rakudo: say Doctor.WHO 04:52
p6eval rakudo 54be6d: OUTPUT«Could not find non-existent sub &Doctor␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
lue rakudo: say "Doctor".WHO 04:55
p6eval rakudo 54be6d: OUTPUT«Str␤»
04:55 kfo left 05:04 ingy joined
ingy hi 05:04
lue hello 05:05
ingy I was wondering if anyone could tutor me for 5 mins in p6
I just got some basic q-s
I got rakudo installed 05:06
I could ask here or go private
maybe I'll just ask here and wait to get kicked off or told to rtfm
so far I can't seem to findTFM :\ 05:07
i want to write a tiny script that uses a tiny module
so the first q is file extensions for those?
quietfanatic The closest thing to a FM is the Spec, at perlcabal.org/syn/ 05:08
05:08 uniejo joined
quietfanatic file extensions for modules? 05:08
ingy quietfanatic: yeah my task only needs a tiny bit of knowledge
quietfanatic oughta be .pm just like Perl 5
ingy hmm ok
I guess having it sit next to the p5 version won't work :) 05:09
quietfanatic Er, yeah :|
ingy next q then is how to alter the p6 @INC
quietfanatic though I believe (though I'm not sure) that you can specify the module name as a string in p6
ingy also is the script .pl or .p6?
quietfanatic anyway...
It's called @*INC in p6 05:10
ingy ok, will try that
ok
quietfanatic You could use either .pl or .p6. I use .p6 usually
ingy great
quietfanatic but I also use .pl a lot.
ingy next q is the `use` syntax
quietfanatic ought be more or less the same as p5 05:11
as in: use My::Module; 05:12
ingy > perl6 hello_world.p6 05:13
Could not find non-existent sub &use
:\
quietfanatic If you're a beginner, you can find a lot of information at perl.org/
Er
hm...
I mean perl6.org
ingy Um, I have about 100 modules on CPAN :)
quietfanatic (embarassing mistake there)
I meant perl6.org/ It was a typo! 05:14
ingy oh
:)
yeah I looked at perlgeek.de/en/article/5-to-6 from there 05:15
and it has nothing on modules
quietfanatic Anyway, it looks like 'use' may be borken currently...
ingy so I came here
really??!!
quietfanatic my sentiments exactly
ingy is there a stable tag to pull from? 05:16
quietfanatic Rakudo recently underwent a large refactor, so many things that used to work don't
ingy I see
quietfanatic the branch now known as 'alpha' has the older, more stable version
I know that it can use 'use'
ingy will it know to grab the correct parrot??
quietfanatic It oughta
ingy will you be here for a few? 05:17
quietfanatic yeah.
ingy k, bbiab 05:18
:)
05:22 kfo joined 05:26 k23z__ left
ingy quietfanatic: I'm feeling a little dumb here, but I'm not sure if I've properly switched to the alpha branch 05:29
can you tell me how to check, or just how to do it
?
quietfanatic Hmm, I had a little trouble with that myself, to tell you the truth
Let's see...
ingy I did 05:30
git checkout -b alpha origin/alpha
quietfanatic yeah something like that
actually
I had a -t in there somewhere
ingy what is something that I can look at to make sure it's right? 05:31
quietfanatic Hmm...
TimToady alpha: (1...*).batch(10)
p6eval alpha 30e0ed: OUTPUT«Sorry, lazy lists and infinite ranges are not yet implemented␤in sub »
quietfanatic There's that :)
TimToady rakudo: (1...*).batch(10).say
p6eval rakudo 54be6d: OUTPUT«12345678910␤»
quietfanatic I think he wants something he can look at before he compiles... 05:32
but I don't know what that would be
05:32 orafu left
TimToady I dunno, I just work here. 05:33
ingy quietfanatic: right
hi TimToady
ltns
TimToady likewise
you still up Seattle way? Taiwan? can't keep track of you...
05:33 orafu joined
quietfanatic try looking at build/PARROT_REVISION 05:33
it'll say 43487 for alpha
and 44705 for master
ingy ah
git log 05:34
:D
it looks right
quietfanatic er, right :)
ingy Feb 1 moritz
k
TimToady: in Seattle. Taiwan visit soon. 05:35
I'm trying to add p6 support to my new programming lang :)
TimToady it'll be another week or so till the new master gets back all of what alpha does, but then it will have all that and much cleaner innards
ingy awesome
TimToady including laziness
ingy I picked the wrong day to learn p6 05:36
TimToady heh, you'll still recognize much of the MOP, I suspect
ingy TimToady: what about impatience?
XD
araujo morning
ingy, doing a new lang?
ingy yeah
it might take me all weekend to finish it 05:37
so don't hold your breathe
;)
araujo a whole weekend to finish a new lang??, why so long?
;)
ingy I'm not a young man anymore :\ 05:39
TimToady yeah, tell me about it... :)
ingy TimToady: at least you still got all your hair 05:41
and your one good eye ;)
TimToady well, the mustache is about half gray now, and the hair is starting in
oh, I got half a good stomach too :) 05:42
pity about the brain
ingy TimToady: your brain is pretty messed up, but it's one of my all time favorite brains. I was actually telling my gf about your brain earlier today! 05:44
05:44 quietfanatic_ joined
ingy I was telling her when you called that coin flip "sides!" 05:44
05:45 quietfanatic left, quietfanatic_ is now known as quietfanatic
TimToady quietfanatic's X server is flapping for some reason 05:46
ingy quietfanatic: the alpha build failed. I think I needed to delete the old parrot build. retrying...
quietfanatic I always use the --gen-parrot option myself
which gets and builds parrot as well as rakudo
TimToady and makes sure to get the appropriate version 05:47
lue unless someone mucks up the Configure script :D 05:48
ingy quietfanatic: I did, but it didn't get the older parrot
TimToady ah, yeah, probably have to blow a newer one away then 05:49
or sometimes crud hangs around
ingy yep. it's all done now. use works. 05:51
TimToady yay!
ingy now to get this thing working
brb
uniejo thinks that if s[<rule>] returns $/ in a way that can be assigned to we can say something like s[<rule>]<*><Year>++ (that is if the rule contains subrules having a Year token) 05:52
05:54 am0c joined
ingy araujo: I'm writing the prototype for the new lang in Python. That's one thing slowing it down :) 05:56
05:56 cognominal left
TimToady ingy: well, I plan to get up really early to help support the hackathon in copenhagen, so I probably oughta wander off to bed pretty soon, but it's nice to hear from you 05:58
ingy TimToady: likewise, if this works proceeds well, I might be around here more 05:59
TimToady: when's the virtual hackathon starting? 06:00
TimToady not sure, but it's nine hours different, so their 10am is our 1am :/ 06:01
I don't plan to get up quite *that* early...
ingy haha 06:02
does it happen here?
TimToady yeah 06:03
ingy awesome. I'll poke my head in if possible
TimToady and if not, I'm sure there will be pointers
ingy k k
I got a basic p6 script/module combo working btw
oh, can I load a module called Foo.p6?? 06:04
before you drift off...
for now I call it Foo6.pm :\
06:04 gfx joined
TimToady in theory the interpreters can tell from the initial declaration which perl it is 06:05
one trick is that I often have a .pm in Perl 6, and a corresonding .pmc in p5
ingy haha
araujo ingy, aah, that explain sit 06:06
:)
TimToady wc STD.pm 5759 20618 173552 STD.pm
ingy I happen to have the two modules sitting next to each other in this case
TimToady wc STD.pmc 99938 253658 2103714 STD.pmc
we could probably allow a .pm6 06:07
ingy I have a script/module ported to 9 languages all in one dir 06:08
lue Hackathon
ingy not a common situation
06:08 lue is now known as Hackathon
Hackathon and this hour, our total is... £700 worth in bug fixes! (The equivalent amount in USD is 400 digits long!) Thank you, and our bot volunteers are waiting for your bug reports! 06:09
Hackathon lue
06:09 Hackathon is now known as lue
ingy TimToady: .pm6 might help the rest of the programs in the world (like vim etc) that work from file extensions 06:09
lue
.oO(geez I'm mixing up commands right now)
ingy *shrug* 06:10
lue there's actually a command you can put in the last line of your file so vim can at least format it as P6
ingy nod 06:11
python3 seems to just use .py
lue I prefer .p6 myself just because it looks cooler :)
TimToady well, py3 isn't that much different from py2
ingy although py3 is not quite the drastic change that p6 is 06:12
jynx
lue I can attest to that. Just some compatibility breaks in py3
06:12 athenot left
TimToady we have some compatibility breaks in p6 too :) 06:12
ingy haha
kinda like when using perl broke all the sed scripts ;) 06:13
lue I would love to have the program recognize things with an extension of .楽土 :)
ingy XD
lue (another crazy idea from Life, The Universe, and Everything) 06:14
ingy that's frickin awesome
06:14 athenot joined
lue lemme see... 06:15
TimToady hmm, .珠
or .珠六 06:16
ingy .茶
only lue's extension printed for me 06:17
irssi+screen+linux+bsd+termcap != unicode-fun 06:18
lue what is that, TimToady? chinese?
TimToady either chinese or japanese
lue > perl6 p6test.楽土
hello world!
ingy lots of chinese is japanese
lue: what is your char? 06:19
TimToady or vice versa
ingy I love it
lue char?
ingy your extension character
TimToady well, it doesn't care about the name of the main executable at all
it's the module names that have more convention
lue the sign of a good program, not relying on extensions :) 06:20
araujo ingy, any link for your new language?
TimToady well, I'm gonna turn in.
night all!
o/
lue o/ 06:22
uniejo night & morning here
lue (IBus is messing with my typing :/ Ah well, I'll live)
ingy hey, it works
totally done
thanks all
I'll check it in now...
lue 楽土の卓と (lets hope I got THAT right... (I really ought to LEARN jp at some point, then I'll know the right kanji)) 06:24
ingy github.com/ingydotnet/cdent/tree/ma...llo-world/ 06:25
Perl 6, represent!
lue ur doing it rong! 06:26
perl6 --represent #:)
ingy whatever that last kanji thing was, my terminal is fux0r'd
lue it (hopefully) said rakudo's waker. 06:27
ingy ctl-l finally seems to have worked
lue japanese is fun. I will always believe that in the programming biz, it's a job requirement :D
ingy I like that thinking 06:28
it's like learning Haskell though :\
lue I don't see what's hard about it (I haven't studied yet but still). The only difficult thing would be how much you have to learn, I find kanji quite `simple' 06:29
It's like using @ to represent at, or $ for scalar :)
06:31 mikehh left
lue ゼルダの伝説 時のオカリナ If anyone knows what that says without looking it up, then you're as obssesed as I am :D 06:32
06:32 mikehh joined 06:36 new_per6_hacker joined
quietfanatic lue: it's not 卓と it's タクト, and it's not "waker" it's just baton. 06:36
lue: Oh I know exactly what that says btw
06:36 mberends joined
lue ah yeah. I think of Wind Waker, where I got it from :) 06:37
06:37 Trashlord left
lue you're as obsessed as me :D 06:37
new_per6_hacker mberends can you host slides of your presentation somewhere
yesterday's presentation
quietfanatic lue: I basically grew up playing Zelda 1 on NES.
mberends new_per6_hacker: svn.pugscode.org/pugs/docs/talks/p6...010.03.odp 06:38
lue The literal translation for the jp title of Spirit Tracks is Steam Whistle of Earth btw (that's a much cooler name)
moritz_ good morning
lue guten tag! 06:39
moritz_ stretches and yawns
mberends hi moritz_, were you a good sleeper?
lue mberends+=odp
moritz_ mberends: mostly, yes. Thanks
mberends slept very well, having practiced doing that many times 06:40
lue I almost wish I were there (but I don't speak Danish (or is it Denmarkese)) 06:41
moritz_ neither do I
lue you must get by with esperanto then :D
mberends lue Danish not required, these people are very English-friendly
moritz_ for some values of esperanto :-)
06:42 mikehh left
lue 2+2=5 (for very large quantities of 2) 06:42
mberends moritz_: shall I bring you your packet of stroopwafels? 06:46
uniejo guesses that large quantities of 2 needs to be represented as bigint
lue not BigInt. VeryBigInt :) 06:47
mberends waits for the VeryVeryBigBoolean to land ;) 06:49
lue I want QuantumBoolean :) 06:50
moritz_ mberends: yes please 06:56
I'm also ready for breakfeast - what about you? (and masak and jnthn?)
lue what time is it o'er there? 06:58
moritz_ 8am 06:59
lue: QuantumBoolean exists (True|False)
06:59 am0c left
lue 9 hours difference between you and me (about) 07:00
moritz_ it's amazing that we find any common uptime :-)
ingy hi moritz_ 07:01
07:02 am0c joined
pugssvn r29972 | moritz++ | [t/spec] slight re-fudges for Rakudo 07:03
lue I am up at a long range of day :)
moritz_ hi ingy
lue just not 11PM-8AM typically (unless it's a weekday, then my not here time is longer) :) 07:04
new_per6_hacker Is perlito also a perl6 implementation? 07:05
moritz_ new_per6_hacker: it's an implementation of a small subset of Perl 6
07:05 snarkyboojum joined
new_per6_hacker It didn't have a mentions in mberends ppt 07:05
07:06 lue is now known as Hackathon
Hackathon and at this hour, the total is... £2400 worth in bug fixes ! (the equivalent in USD is 65536 digits long! It's also equivalent to €7000) 07:08
new_per6_hacker Sorry it has
Hackathon Thanks to all our volunteers, and remember our robot operators are standing by for YOUR bug reports! 07:09
07:09 Hackathon is now known as lue
lue (yes, I am treating the hackathon similar to a telethon. I warned you :D) 07:11
07:11 mberends left
lue time for my bed (which is not in Copenhagen :( ) 07:13
lue --sleep &
07:13 borup left
new_per6_hacker Does the Perl 6 spec have its own releases 07:14
07:15 borup joined
new_per6_hacker Does the perl 6 specification have its own releases? 07:17
07:26 k23z__ joined, k23z__ left, k23z__ joined 07:28 saleem joined
diakopter new_per6_hacker: not yet 07:34
07:36 diakopter sets mode: -o diakopter
new_per6_hacker ok, I thought specification makes a release and then the implementations try to match them 07:40
So there is specification release and a corresponding implementation release 07:41
07:42 mberends joined
diakopter nope 07:43
the specification responds to the implementations and vice versa
08:00 new_per6_hacker left 08:05 PZt left
pugssvn r29973 | baest++ | Untodo some passing tests 08:06
r29974 | baest++ | Unfudge another passing test 08:07
08:10 iblechbot joined
ingy zomg! 08:11
I just added python3 support to github.com/ingydotnet/cdent/tree/ma...llo-world/
in python 2 to print without a newline was: print "foo", 08:12
just add a comma
now it's: print("foo", end="")
FAIL
the parens are required too, as it is now a function call 08:13
08:14 gbacon left
mberends the Breakfast Club is impressed :) 08:14
that is, masak moritz arnsholt and /me 08:16
ingy greetings Breakfast Club 08:17
08:17 fridim joined
diakopter ingy: today I'm feeling Dronish 08:20
ingy diakopter: time to get your Leet on! 08:25
mberends walking to Copenhagen hackathon & 08:28
08:28 mberends left 08:29 Trashlord joined 08:30 eternaleye left
baest hehe, "Unfortunately Patrick Michaud (?Pm?) is able to participate" from the hackathon wiki, whoops should have been unable :) 08:30
08:34 eternaleye joined 08:37 uniejo left 08:52 PZt joined 08:58 gfx left 09:14 rv2733 left 09:26 uniejo joined 09:28 martinro joined
moritz_ arrived at Copenhagen hackathon 09:28
jnthn oh hai
09:29 masak joined
masak OH HAI from the hackathon in Copenhagen! \o/ 09:29
09:31 mberends joined
masak lue: the .WHAT.say error has been reported already, I believe. 09:31
not that I blame you for not knowing that :)
rakudo: (1,2,3).WHAT.say 09:32
p6eval rakudo 54be6d: OUTPUT«␤»
baest jnthn++ # your + fix worked 09:34
masak rakudo: my $a = 10; $a &&= 11; say $a 09:36
p6eval rakudo 54be6d: OUTPUT«Null PMC access in invoke()␤current instr.: '!assign_metaop' pc 16783 (src/builtins/Junction.pir:319)␤»
masak submits rakudobug
rakudo: my $a = 10 && 11; say $a
p6eval rakudo 54be6d: OUTPUT«11␤»
jnthn baest: \o/
masak rakudo: my $a = 10; $a = $a && 11; say $a
p6eval rakudo 54be6d: OUTPUT«11␤»
masak so the error has to do with the &&= operator. 09:37
snarkyboojum hello Copenhagen hacker dudes - I hope the hackage goes well :) 09:38
baest rakudo: say 3.14159265358979323846264338327950288419716939937510e0; 09:39
p6eval rakudo 54be6d: OUTPUT«Multiple Dispatch: No suitable candidate found for 'multiply_float', with signature 'PNP->P'␤current instr.: 'perl6;Perl6;Actions;_block5211' pc 200060 (src/gen/perl6-actions.pir:10706)␤»
masak rakudo: my $a = 0; $a ||= 11; say $a
p6eval rakudo 54be6d: OUTPUT«Null PMC access in invoke()␤current instr.: '!assign_metaop' pc 16783 (src/builtins/Junction.pir:319)␤»
baest why are we doing a perl -e "" > src/gen/core.pir? Is that to ensure that core is built every time? 09:43
jnthn baest: We have no core setting for the stage 1 09:44
moritz_ baest: I think because there are two build stages
jnthn baest: So we just empty that file for the first stage.
moritz_ for the first stage we don't need core.pir, ... jnthn was faster
baest :)
uniejo rakudo: say 0.0000000000000000000000000000000
09:44 saleem left
p6eval rakudo 54be6d: OUTPUT«Nominal type check failed for parameter '$b'; expected Int but got Num instead␤current instr.: 'perl6;Rat;gcd' pc 318987 (src/gen/core.pir:37592)␤» 09:44
jnthn I used to have two different .pir files for stage 1 and stage 2, but it was mostly duplication.
moritz_ hugme: list projects
hugme moritz_: I know about book, gge, hugme, ilbot, json, november, nqp-rx, nqpbook, perl6-examples, proto, svg-matchdumper, svg-plot, temporal-flux-perl6syn, tufte, web
phenny hugme: 28 Feb 05:00Z <lue> tell hugme it's great to have you back!
baest ok, thanks it's just taking a while to rebuild
moritz_ hugme: show nqp-rx 09:45
hugme moritz_: the following people have power over 'nqp-rx': PerlJam, TimToady, [particle], jnthn, masak, moritz_, pmichaud. URL: github.com/perl6/nqp-rx/
masak snarkyboojum: did you have a chance to check the source code updates of tardis?
moritz_ arnsholt: want commit access? what's your github ID?
arnsholt I'm arnsholt at Github as well
snarkyboojum masak: yep - sure did
moritz_ hugme: add arnsholt to nqp-rx 09:46
hugme moritz_: You need to register with freenode first
masak snarkyboojum: nice! the two first tests pass! :)
moritz_ dang.
masak hugme: hug hugme 09:49
hugme hugs hugme
snarkyboojum masak: aye :) was hoping to quiz you on it through the week and try my hand at doing something semi-productive :)
moritz_ hugme: add arnsholt to nqp-rx
hugme moritz_: You need to register with freenode first
masak snarkyboojum: right now, making the next test pass would be more than semi-productive :)
moritz_ hugme: I am. Stupid bot.
masak hugme: add arnsholt to nqp-rx
hugme masak: You need to register with freenode first
jnthn hugme: add arnsholt to nqp-rx
hugme jnthn: You need to register with freenode first
masak hugs hugme
there's a bug in hugme.
moritz_ ORLY?
:-)
mberends hugme: hug /me
hugme hugs /me
masak YA RLY.
09:49 am0c left
snarkyboojum masak: look like a nice challenge :) 09:49
09:49 hugme left
masak snarkyboojum: but expect git collisions, because I'll be trying to do the same. :) 09:49
snarkyboojum masak: excellent - probably the best way for me to learn .. i.e. have a go and then see how it should be done ;)
masak I don't necessarily think that the double effort will be wasted. it's more a case of ending up on the same wavelength.
yes, exactly.
I see it's happening already. :)
09:50 hugme joined
snarkyboojum nods 09:50
moritz_ hugme: add arnsholt to nqp-rx
hugme moritz_: You need to register with freenode first
moritz_ $w->{identified} is undef. Dang.
09:50 hugme left
masak turns on tdd-harness 09:50
let's go! :)
09:50 hugme joined
moritz_ hugme: add arnsholt to nqp-rx 09:51
hugme moritz_: You need to register with freenode first
09:51 hugme left
Trashlord heh 09:51
masak: how's it going buddy?
masak Trashlord: there's electricity, wifi, and a practically unlimited supply of liquid here. could be worse :P 09:52
Trashlord: also, all the people around me are talking about Perl 6, which makes me very happy. :) 09:53
09:53 Su-Shee joined
jnthn docs.parrot.org/parrot/latest/html/...t.pod.html 09:53
masak: huh, where da liquid? 09:54
masak jnthn: to your left :)
s/left/right/
Su-Shee long night? ;)
masak or short, depending on how you see it.
I've seemingly been running on hacker fuel for the past two nights. slept 4 and 5 hours, respectively. not nearly as tired as I should be. 09:55
09:56 hugme joined
Trashlord woah 09:56
that's awesome
masak snarkyboojum: also, if you get stuck, better to chat me up than to struggle in isolation.
Trashlord I once sat in front of the computer, coding, for 37 hours straight
I should do it again sometime
masak that sounds singularly unhealthy :)
09:56 krr joined
Trashlord of course 09:56
snarkyboojum masak: yep - will/would do
Trashlord I could not fall back asleep
masak Trashlord: what did you work on?
Trashlord I don't even remember 09:57
it was ~7 years ago
all I remember is that I tried to go to sleep at around 5am, after being up for almost 2 days straight, but couldn't fall asleep, so I just lied in my bed 09:58
masak Trashlord: I've had one or two all-nighters with GGE, in the most intense parts of the implementing.
but that was 'intentional'.
jnthn Telling the truth in bed is overrated.
Trashlord ha 09:59
masak jnthn++ # grammar nazi punster
Trashlord well, English is not my first language, I always have an internal debate: Lied, or Layed? Laying, or Lying? 10:00
masak Trashlord: grammar.quickanddirtytips.com/lay-v...s-lie.aspx
Trashlord ha, thanks
dalek kudo: 3113ee8 | jonathan++ | t/spectest.data:
S02-literals/quoting-unicode.t needs to be marked as needing ICU.
10:02
masak we've established here in meatspace that it's an ablaut phenomenon.
Trashlord hm 10:03
so I just lied down on my bed 10:04
masak Trashlord: or "I just laid on my bed".
Trashlord thanks for that 10:05
I didn't know you could say it that way
moritz_ hugme: add arnsholt to nqp-rx 10:06
hugme hugs arnsholt. Welcome to nqp-rx!
jnthn pir::set__SP
moritz_ arnsholt: finally works now; sorry for the many rouge hilights
masak rakudo: IO.WHAT.say
p6eval rakudo 54be6d: ( no output )
masak that's rt.perl.org/rt3/Ticket/Display.html?id=68594 -- that one's still open.
rakudo: [].WHAT.say 10:07
p6eval rakudo 54be6d: OUTPUT«Null PMC access in elements()␤current instr.: 'perl6;SeqIter;get' pc 13990 (src/builtins/Routine.pir:113)␤»
masak jnthn: that's rt.perl.org/rt3/Ticket/Display.html?id=72960
arnsholt rakudo: my $a = 3; say "$a".WHAT; # jnthn
p6eval rakudo 54be6d: OUTPUT«Int()␤»
baest moritz_: heh, it worked fine, but was printing 0101011 stuff in top of the core.pir and therefore wouldn't compile :) 10:08
dalek kudo: 125e872 | jonathan++ | src/metamodel/ClassHOW.pir:
Make sure type objects are marked as scalars, so we .WHAT.say works on various things it was fail on before.
jnthn PAST::Op.new( :pirop('set SP'), $thingy )
arnsholt moritz_: No problem. irssi only highlights me if my nick is on the beginning of the line
10:09 gbacon joined
moritz_ great 10:09
masak #perl6 will be especially inscrutable for non-hackathoners today.
Trashlord you guys like psychedelic trance? 10:10
uniejo rakudo: say ^"a" # psychedelic trance (timeout) 10:11
masak Trashlord: generally, I tend to like a firm grip on reality better.
p6eval rakudo 54be6d: ( no output )
moritz_ gist.github.com/321596
arnsholt Trashlord: I've listened to Dire Straits a lot recently =) 10:12
moritz_ arnsholt: me too (but not only recently :-)
jnthn oh hai moritz_, I gived you an RT ticket.
:-)
masak moritz_: me too (but not only Dire Straits :-) 10:13
wow, it's so amazing to be back in a fast code-compile-test loop. 10:15
moritz_ fast? then it can't be based on rakudo :/
moritz_ takes a look at S11
it has a very interesting loop 10:17
S11:204 10:18
and below
baest: any success with debugging by print statements yet? 10:19
masak moritz_: it is based on Rakudo.
moritz_: and it's fast, compared to GGE.
moritz_ so we need find_module_defining, load_module, $scope.install_alias
baest moritz_: no, it prints on top of the generated pir :) and that doesn't compile well 10:21
moritz_ ouch
baest any pointers on how to debug something in actions. There is a computation going wrong and I'm not sure which numbers it's using. It is possible to debug that somehow? 10:22
masak baest: using print statements? 10:24
masak is a traditionalist
moritz_ masak: the problem is that action statements also print PIR to STDOUT 10:25
baest yes
I like prints as well
masak :(
moritz_ masak: so debug statements and desired output is mixed => BOOM
masak that's... unfortunate.
print to $*ERR?
is that possible in nqp? 10:26
baest wouldn't know
10:27 orafu left, orafu joined
arnsholt jnthn: "Can't form :w list from non-constant strings (yet) at [stage2...]" sound familiar? 10:29
jnthn arnsholt: no. That's...very odd. :-/ 10:30
10:31 nadim joined 10:37 masak left 10:38 snarkyboojum left 10:39 jonasbn joined
jonasbn morning ppl 10:39
moritz_ \o/ jonasbn :-)
jonasbn is the sub MAIN and sub USAGE working? 10:40
jonasbn needs CLI arguments
moritz_ jonasbn: I think USAGE never worked
10:41 masak joined
jonasbn okay, but for MAIN, any examples around, the docs are pretty skinny 10:41
moritz_ oops, doesn't work in master
perlgeek.de/blog-en/perl-5-to-6/14-main-sub.html that's how it should work 10:42
jonasbn :) 10:43
10:44 quietfanatic left
jonasbn so should I file a rakudo bug or should I just move on... 10:44
masak I think MAIN worked to an extend in alpha. 10:45
s/extend/extent/
moritz_ jonasbn: please do both :-)
masak Perl 6 is a lot about doing both. :) 10:46
10:46 meppl joined 10:47 krr left 10:48 szabgabx left
baest MAIN was called in alpha, dunno how much it did 10:49
colomon o/ 10:50
re the &&= bug -- the bug actually is in &&, more or less.
masak baest: it did everything up to named parameters or something like that.
colomon the issue seems to be that there is no &infix:<&&> 10:51
masak colomon: yes. jnthn++ explained that to me in meatspace.
still a bug, though.
colomon it also means I had two working versions of the !op meta yesterday.
masak there's no &infix:<&&> because && is special, because it short-circuits.
colomon my first version worked, but I only tried testing it with !&&, so I thought I didn't. 10:52
s/I/it
masak std: 3 !&& 4
p6eval std 29974: OUTPUT«ok 00:01 107m␤»
colomon rakudo: say 3 !+ 4
p6eval rakudo 125e87: OUTPUT«0␤»
colomon rakudo: say 3 !+ -3
p6eval rakudo 125e87: OUTPUT«1␤»
masak std: 3 !+ 4 10:53
p6eval std 29974: OUTPUT«===SORRY!===␤Can't negate + because additive operators are not iffy enough at /tmp/1dJHhjj6i4 line 1:␤------> 3 !+⏏ 4␤FAILED 00:01 105m␤»
masak submits rakudobug
not iffy enough.
colomon not iffy enough?!
masak right. that's what I said. :)
colomon: irclog.perlgeek.de/perl6/2009-02-01#i_878319 10:54
colomon anyway, now I don't know which implementation of !op is the right one to have.
baest wheee success in debugging actions. Just edit resulting actions.pir and make src/gen/perl6.pbc :) and then compile the perl6 10:56
colomon masak: I see "iffy" there, but I don't see much in the way of explanation that I understand? 10:57
masak colomon: ok, so an iffy operator is one which produces a boolean-ish answer. 10:58
colomon: basically, all the logical ops, comparison ops, and %.
colomon masak++ 3 11:00
masak two terms in a row :P 11:01
colomon Is there a way to dump unpushed changes in git? 11:03
other than just blowing away your tree, I mean?
masak colomon: git reset --hard <commithash> 11:04
colomon masak++
masak the old commits can still be accessed through 'git reflog'. 11:05
11:07 payload left
jonasbn how do I shrink an array? 11:09
masak jonasbn: @a = @a[0..$shorter]; 11:10
jonasbn I need splice
perl5 splice
masak there's a splice.
at least in alpha.
jonasbn ah okay
masak I just tend not to use it much :P
colomon rakduo: my @a = 1..10; say @a.perl 11:11
masak (especially since I've seen how it's implemented :P)
jonasbn I love it, since programing perl 1. ed. which had a marvellous explanation
ah
hehehe
colomon rakudo: my @a = 1..10; say @a.perl
p6eval rakudo 125e87: OUTPUT«[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]␤»
colomon rakudo: my @a = 1..10; say @a.splice(2,3,'a'..'c').perl 11:12
p6eval rakudo 125e87: OUTPUT«[3, 4, 5]␤»
colomon right.
akudo: my @a = 1..10; say @a.splice(2,3,'a'..'c').perl; say @a.perl
rakudo: my @a = 1..10; say @a.splice(2,3,'a'..'c').perl; say @a.perl
p6eval rakudo 125e87: OUTPUT«[3, 4, 5]␤[1, 2, "a", "b", "c", 6, 7, 8, 9, 10]␤»
colomon (it's too early here.)
11:13 payload joined
masak do we have Array.grab ? 11:14
I think jonasbn just found a use case for it :)
colomon not that I know of it.
what does .grab do?
masak it's sort of a mutating .pick
jonasbn masak: bingo
masak :)
colomon choose something random and eliminate it from the array? 11:15
jonasbn colomon: it is the technique I use in Games::Bingo, so I do not have to search a large array every time a number is called 11:16
colomon it would be pretty easy to cut-n-paste the .pick code and hack it to do that.
tricky bit might be a proper refactor.
basically that's exactly what .pick does internally now. 11:17
I was actually going to change that, because it would be more efficient to not change the internal array when an item is picked. 11:18
masak rakudo: sub x(&) {};x 11:20
p6eval rakudo 125e87: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'x' pc 179 (EVAL_1:77)␤»
masak rakudo: sub x(&) {};x(42)
p6eval rakudo 125e87: OUTPUT«Nominal type check failed for parameter '(null)'; expected Callable but got Int instead␤current instr.: 'x' pc 180 (EVAL_1:77)␤»
masak rakudo: sub x(&) {};x({say "OH HAI"})
p6eval rakudo 125e87: ( no output )
masak alpha: sub x(&) {};x
p6eval alpha 30e0ed: OUTPUT«Cannot take substr outside string␤in Main (file <unknown>, line <unknown>)␤»
masak grr. 11:21
11:29 payload left, payload joined
colomon so, I get 25678 passing tests this morning. 11:29
I want to challenge the hackathoners to make it 30,000. 11:30
sorry, 26,000 thousand
masak that's 26 million...
jonasbn colomon: then you might have to show, we are in the design phase, then lunch then, nap, then beer
colomon see earlier too early comment. 11:31
arnsholt Yeah. I don't think I'm able to write tests that fast ^^
colomon 26,000
11:31 jonasbn is now known as jonafk
colomon it's only 322 tests to bring back on-line or write. 11:31
masak colomon: it's a good idea. 11:32
colomon: most people are caught up in a discussion up at the whiteboard right now.
colomon: they are talking about S11-ish things.
they seem to be making good, concrete progress, and are about to take action. 11:33
colomon \o/
baest rakudo: say 3.14159265358979323846264338327950288419716939937510e0; 11:37
p6eval rakudo 125e87: OUTPUT«Multiple Dispatch: No suitable candidate found for 'multiply_float', with signature 'PNP->P'␤current instr.: 'perl6;Perl6;Actions;_block5211' pc 200064 (src/gen/perl6-actions.pir:10706)␤»
mberends the S11 meeting thinks it has reached consensus, now to write it up...
masak ++mberends 11:38
baest colomon: right now 3.14159265358979323846264338327950288419716939937510e0 is evaluated to 3.86496357207557 in rakudo. Not very precise :) I'm looking into it and it's because the base num is overflowing 11:39
colomon baest: yeah, I know.
baest colomon: oh
colomon I tried to fix it a week ago with no luck.
baest damn 11:40
colomon please take a crack at it!
you may see a fix that I missed
baest I'm not sure I have a clue on howto. If we only have int to store the base in, then we will have problems 11:41
colomon one thing I thought of but didn't try was storing base as the number of zeroes needed for base, rather than the actual number.
so instead of base == 1000, you'd have base == 3, and then use 10 ** base in the calculations. 11:42
baest that could work
I will try if that overflows somewhere else :)
masak "Perl 6: pi is 3.8; we're working on it..."
colomon but there are still possible math issues to finesse...
k23z__ 3.8 :) 11:43
masak "Perl 6: reinventing the circle"
11:43 payload left
baest actually on my computer: ./perl6 -e 'say pi()'; returns 3.14159265358979 11:43
masak \o/
moritz_ baest: ship it! 11:44
colomon rakudo: say pi
p6eval rakudo 125e87: OUTPUT«3.14159265358979␤»
colomon it is specified carefully so the overflows don't happen. :)
baest rakudo: say pi(); 11:45
p6eval rakudo 125e87: OUTPUT«Could not find non-existent sub &pi␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon rakudo: say pi.Rat(1e-10).perl
p6eval rakudo 125e87: OUTPUT«312689/99532␤»
baest colomon: oh, it is changed from a sub to a constant?
colomon baest: yes
baest I just implemented that sub...
colomon I'm not sure we have the constant properly set up (as per spec), but we do have the constant.
baest heh, ok, the pi.t calls the sub so I implemented it 11:46
colomon pi.t is a sad, sad test file. :) 11:47
arnsholt Which one of them? O=)
baest arnsholt: both
arnsholt Hehe
11:50 iblechbot left
k23z__ I'm so tired, I cannot distinguish red from white on the numbers that irssi associates with a channel 11:52
jnthn alpha: subset Even of Int { $^n % 2 == 0 }; say Even.WHAT
p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "{ $^n % 2 "␤in Main (file <unknown>, line <unknown>)␤»
k23z__ so when I look at the screen I cannot say exactly if someone wrote a new message on a channel or its just my vision ...
jnthn alpha: subset Even of Int where { $^n % 2 == 0 }; say Even.WHAT
p6eval alpha 30e0ed: OUTPUT«()␤»
masak rakudo: sub foo(Int $a, $b) {}; foo("OH HAI") 11:54
p6eval rakudo 125e87: OUTPUT«Nominal type check failed for parameter '$a'; expected Int but got Str instead␤current instr.: 'foo' pc 186 (EVAL_1:79)␤»
masak jnthn: it surprises me that it does the type check in this case, rather than fail on not-enough-required arguments.
rakudo: class A { method foo(&c) { &c() }; method bar() { foo({ say self.WHAT }) } }; A.new.bar 11:57
p6eval rakudo 125e87: OUTPUT«Could not find non-existent sub &foo␤current instr.: 'perl6;A;bar' pc 551 (EVAL_1:237)␤»
masak rakudo: class A { method foo(&c) { &c() }; method bar() { self.foo({ say self.WHAT }) } }; A.new.bar 11:58
p6eval rakudo 125e87: OUTPUT«A()␤»
masak rakudo: class A { method foo(&c) { &c() } }; class B { method bar() { A.new.foo({ say self.WHAT }) } }; B.new.bar
p6eval rakudo 125e87: OUTPUT«B()␤» 11:59
masak what if I wanted the above to print «A()␤» instead?
rakudo: class A { method foo(&c) { &c() } }; class B { method bar() { A.new.foo(method { say self.WHAT }) } }; B.new.bar
p6eval rakudo 125e87: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: 'perl6;B;_block120' pc 893 (EVAL_1:359)␤»
masak hrm.
rakudo: class A { method foo(&c) { &c(self) } }; class B { method bar() { A.new.foo(method { say self.WHAT }) } }; B.new.bar 12:00
p6eval rakudo 125e87: OUTPUT«A()␤»
masak ah.
moritz_ rakudo: class A { method foo(&c) { c(self) } }; class B { method bar() { A.new.foo(method { say self.WHAT }) } }; B.new.bar
p6eval rakudo 125e87: OUTPUT«A()␤» 12:01
moritz_ masak: you don't need that & inside the method
masak moritz_: yeah, I just like the &c() form for clarity.
moritz_ bad golfer, no wine gum :-)
masak it's not a bug!
12:02 jonafk is now known as jonasbn
TimToady abstraction, sedition, uglification, and derision... 12:03
12:03 iblechbot joined 12:04 TimToady sets mode: +vvvv buubot dalek hugme iblechbot, TimToady sets mode: +vv ilogger2 IRSeekBot, TimToady sets mode: +vvv lisppaste3 p6eval phenny 12:05 mikehh joined
masak .oO( Don't drink and deride... ) 12:05
jonasbn: how's the bingo going? 12:07
baest colomon: hmm, the base = 50 thing doesn't work well also. Also the fraction (14159265358979323846264338327950288419716939937510) is -4650192984935729434 so overflow there also 12:08
wow that was a lot of alsos :)
mberends baest: why didn't you also begin with an also? 12:09
baest mberends: I didn't know I wanted to go overboard at that point :) 12:10
jonasbn masak: okay
mberends baest: also a good point
colomon also, bother.
baest oh well, rakudo 1 baest 0 12:11
jonasbn what it the main hub for Perl6 documentation? 12:13
perl6.org
?
colomon perlcabal.org/syn/
moritz_ perl6.org
perlcabal.org/syn/ is "just" spec
TimToady we're trying to send everyone to perl6.org first, just to weed out all the butterflyphobes 12:14
mberends jonasbn: depends on the kind of document. the Perl 6 wiki is very open for collaboration www.perlfoundation.org/perl6
moritz_ and perl6.org is supposed to link to them all :-)
TimToady it flits from one to the other 12:15
moritz_ wears a butterfly right now
mberends moritz_++ really does!
masak my door is a butterfly. 12:16
TimToady moritz_++ is a Manly Man, not threatened by a wee bug.
masak .oO( bugme )
12:16 fridim left
masak there are so many readings of that! 12:16
TimToady E2MANY 12:17
pmichaud good morning, #perl6
colomon o/
TimToady good morning, pmichaud++
masak pmichaud! \o/
jnthn morning, pmichaud :-)
baest rakudo: say 3.2e0; 12:18
p6eval rakudo 125e87: OUTPUT«3.2␤»
baest rakudo: say 3.14159265358979323846264338327950288419716939937510e0;
12:18 cognominal joined
p6eval rakudo 125e87: OUTPUT«Multiple Dispatch: No suitable candidate found for 'multiply_float', with signature 'PNP->P'␤current instr.: 'perl6;Perl6;Actions;_block5211' pc 200064 (src/gen/perl6-actions.pir:10706)␤» 12:18
pmichaud how goes hackathon? Anything specific needed from me at the moment? 12:19
baest oh, well, atleast I can fix that one, if not correct handling of that big numbers 12:20
colomon infodump for pmichaud: I got two different versions of the meta op !op working yesterday -- luckily both are committed, the second on top of the first. Definitely still needs work, I know, and you may want to switch back to the first version, which is more like the op= implementation.
pmichaud colomon: I'll review it in a bit
colomon baest: what if we kept a running tab on the numbers?
jnthn pmichaud: Hackathon is going well :-) 12:21
pmichaud: Very productive discussion on modules stuff.
colomon so if it's 3.1415, you first see the 3, and store that. then you see the . and toggle a flag. then you see the 1 and add 1/10, then the 4 and add 4/100s, and so on.
pmichaud the multiple dispatch error above simply means that parrot doesn't know how to multiply a num with a PMC
(with a specific type of PMC, likely a Perl6Str or a Num) 12:22
colomon afk # getting ready for church
pmichaud colomon: yes, that's the correct approach, except you don't need to look for the '.' because the parser has already located it for you
baest pmichaud: I have a fix for that, posting that in a sec on rt
colomon: yes, sound like a good way and when we overflow with the 10^someint along the way we just stop 12:23
12:25 kfo left
moritz_ github.com/moritz/rmp -- Rakudo Module finding Prototype 12:26
12:27 kfo joined 12:28 krr joined 12:31 kfo left
moritz_ hugme: reload 12:32
hugme moritz_: reloaded successfully
moritz_ hugme: show rmp
hugme moritz_: sorry, I don't know anything about 'rmp'
TimToady hugme: hug everyone
hugme hugs everyone
moritz_ hugme: reload 12:33
hugme moritz_: reloaded successfully
moritz_ hugme: show rmp
hugme moritz_: the following people have power over 'rmp': PerlJam, TimToady, [particle], arnsholt, jnthn, masak, mberends, moritz_, pmichaud. URL: github.com/moritz/rmp/
12:34 kfo joined
pmichaud hugme: hug successfully 12:35
hugme hugs successfully
moritz_ pmichaud, TimToady: we need some opinions... clearly we will have multiple locations where modules can be found (currently in @*INC). Should module loading without a specific version always look in all of them, and look for the highest version? 12:37
pmichaud "best match", iirc 12:38
moritz_ alternative would be to look only in the first location, and if a module is found, its highest version is used
pmichaud it's best match among all locations
baest how do convert a str to an integer in pir?
moritz_ ok.
that's my preference as well
TimToady I agree
moritz_ baest: assign it to an $I0 register
pmichaud baest: $I0 = $S0
moritz_ $I\d :-) 12:39
TimToady it should be best match even with respect to the officially installed modules, which might not be in a directory at all
pmichaud thus "location" :-)
TimToady at some abstract level, you take all the official and unofficial modules, and treat them as a single query
baest thanks 12:40
moritz_ TimToady, pmichaud: that answers our question sufficiently, thanks you
12:42 kfo left
ingy I just got my new language to generate the JavaScript module from a handcoded ast 12:43
I guess I could easily add a p6 generator now
but maybe I'll sleep first
jnthn <trait>* [where <EXPR('m=')> ]? # (EXPR can parse multiple where clauses) 12:44
oops! 12:45
12:52 kfo joined 12:54 new_perl6_hacker joined
pmichaud std: say &infix:<!+>; 12:54
p6eval std 29974: OUTPUT«ok 00:01 109m␤»
pmichaud std: say &infix:<xyz>;
p6eval std 29974: OUTPUT«ok 00:01 107m␤» 12:55
TimToady well, it's really just punting there
pmichaud yes, I guessed. What should happen?
TimToady std: say &foo
p6eval std 29974: OUTPUT«ok 00:01 108m␤»
pmichaud is there a &infix:<!+> ?
TimToady doesn't even care about that &fo
&foo
I sincerely doubt it considering it's not iffy 12:56
pmichaud okay, how about some other iffy operator, then?
TimToady and in any case, I think of it as a higher order function, not as a generated function
though that's a possible implementation strategy
pmichaud okay, that's the answer I was after, then 12:57
(it's higher-order, not generated)
so, &infix:<+=> doesn't really exist as a generated function?
TimToady on the other hand, if someone wants to name the thing...
then we might force generation
just to have an identity
we'd like people to treat these all as real functions, even when they are abstract 12:58
pmichaud originally I went with generation here, but then I'm not sure how to force generation simply given the &infix:<...> reference
TimToady and, in some sense, we have to, if we want to nest higher-order functions
in X!%, what are we passing cross? 12:59
presumably &[!%]
pmichaud right
that's one of the reasons I went with generation
TimToady well, and it gives it to the optimizer to play with, someday 13:00
pmichaud so, you're now tending to think of these as generated functions?
moritz_ std: package FOO; 13:01
TimToady I tend to think that I shouldn't care one way or the other :)
p6eval std 29974: OUTPUT«ok 00:01 104m␤»
TimToady as long as the abstraction doesn't spring a leak
but generation has the advantage of doing the function composition at compile time, for some def thereof 13:02
pmichaud right
masak here's what's bothering me: MyClass.new( :hashattr{ foo => 42 } ) does the right thing, but MyClass.new( :arrayattr[1, 2, 3] ) does the wrong thing in Rakudo. 13:03
pmichaud masak: we're still working out list issues, sadly.
masak: you're expecting :arrayattr to bind to an array? 13:04
TimToady yes. same problem if you write it arrayattr => [1,2,3]
it assigns, and ends up with one element, containing an array 13:05
baest should there be a pi() sub or just the constant
TimToady there is no pi sub
constants-as-subs is a p5-think 13:06
masak pmichaud: I'm not sure I'm expecting binding semantics excatly. (jnthn-san explained that this causes other problems, such as action-at-a-distance)
pmichaud: I do expect the initialization not to introduce an extra layer of array, like the corresponding assignment does.
TimToady we were speculatin' that there's something value vs object going on here
pmichaud masak: I've never been clear what sort of semantics should go with the named attribute initialization
baest TimToady: ok, maybe we did a sub which returned pi constant. And the test mentions pi().... But I'll fix it
masak right.
pmichaud: that's why I'm doing my best to be clear on this thing. :) 13:07
TimToady rakudo: 2()
pmichaud baest: at one time in the past, pi() was considered another way to access the constant. That's no longer the case.
p6eval rakudo 125e87: OUTPUT«invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
TimToady baest: see ^^
pmichaud baest: I'm guessing the spectest suite is fossilized there.
so, with :arrayattr([1,2,3]) what is the correct semantic? 13:08
baest pmichaud: ok, I unfossilize it in this regard
TimToady: yep
TimToady and type names are also constants, but when you invoke them you get a coercion 13:09
maybe copy binding is the closest thing here 13:10
pmichaud "copy binding"?
oh,c reate a copy and bind to it?
TimToady sub foo (@x is copy)
just guessing 13:11
and not answering your ([]) form necessarily
pmichaud troo
13:12 new_perl6_hacker left
TimToady though by the usual paren vs comma rules, it should not be hidden in a parcel unless you say ([],) 13:12
if we keep going that way
assuming :a() maps to a => ()
13:13 payload joined
pmichaud yes, I'm envisioning that :a([1,2,3]) and :a(1,2,3) could be distinct 13:13
TimToady that mislikes me
13:13 Trashlord left
TimToady oh, wait 13:14
the right one is (), not []
pmichaud correct
TimToady so it doesn't mislike me
pmichaud :a[1,2,3] and :a([1,2,3]) are currently the same.
(and should be, imo)
TimToady that's good, I think, the problem is assignment vs binding, I still think
but seems that copying vs referencing should be the choice of the attribute 13:15
pmichaud so, :arrayattr(1,2,3) versus :arrayattr([1,2,3])
TimToady binding a parcel vs binding an array
pmichaud one might expect the first to produce an array with three elements, and the second to produce an array with one. 13:16
13:16 quester joined
TimToady most wouldn't, though 13:16
pmichaud well, I'm following the my @a = 1,2,3 versus my @a = [1,2,3] reasoning
TimToady and can be forced with ([],)
13:17 rv2733 joined
TimToady that's assignment though 13:17
pmichaud yes
average-p6-programmer often won't see the difference between binding and assignment 13:18
unlses of course we make it that they need to see that difference :-|
*unless
TimToady well, the BUILD thinks it's doing binding, if you do it with the sig 13:19
pmichaud okay, I'm fine with it being binding
TimToady in general, binding is cleaner than assignment, except when it isn't 13:20
pmichaud does it become an eager binding?
TimToady binding to $.attr is presumably different from binding to $.attr is rw, maybe
pmichaud I guess it remains lazy
13:21 payload left
pmichaud :arrayattr(lines()) # slurps input lines, or no? 13:21
maybe "is copy" implies an eagerness there?
TimToady to the first approximation, I think we go with assumptions of immutability and FP, and then see where that leaves us with OO problems
it can still be lazy if cloning an immutable generator 13:22
I've been trying to bias iterators toward assuming you can clone one whenever you want
pmichaud a recurring theme seems to be that immutability and FP seems to go out the window once arrays are involved :-|
TimToady since that's more the FP worldview than the OO 13:23
pmichaud (bias iterators) okay, that's a good guidepost
TimToady and basically, force people to throw in an eager or whatever if they need it before the thing gets cloned
I think we have to go with FP sanity here, long term, and live with the OO consequences 13:24
we already tell people in p5, "Don't modify the array while you're iterating it!" 13:25
(or write your iteration explicitly with shift)
13:26 colomon left
TimToady and maybe requiring an occaisional 'is copy' is like requiring an occasional 'eager' 13:27
pmichaud masak: so, my short (and highly unsatisfactory) answer is that I'm still struggling to get lists, arrays, and iterators in general to work properly, so the fact that they don't quite work in object attribute initialization doesn't surprise me much.
TimToady and we blame the FP and OO folks for being immiscible :)
masak pmichaud: I understand completely. 13:28
pmichaud: this is an old problem, though. it exists in alpha as well.
TimToady I do think it's okay, however, if multiple objects end up with attributes that reference the same array 13:29
pmichaud TimToady: array attributes, also?
I mean, certainly we expect scalar attributes to do that 13:30
TimToady (though note also that [1,2,3] composes a new array, so doesn't generally share like $array would)
pmichaud what about :arrayattr(@b) ?
so, if I have :array1(@b) and :array2(@b) ... ? 13:31
masak rakudo: role A { class B {} }
p6eval rakudo 125e87: ( no output )
TimToady that would presumably bind a readonly ref ?
pmichaud as attributes?
XYZ.new( :array1(@b), :array2(@b) ) # @.array1 is ro?
masak :/ 13:32
I'd expect them to be rw and distinct.
pmichaud Right.
masak where 'distinct' does not involve deep copying, of course.
just one level down.
TimToady well, you can't have that and also not have [] turn into a single element 13:34
masak submits rakudobug
baest rakudo: say 3.14159265358979 13:35
p6eval rakudo 125e87: OUTPUT«No applicable candidates found to dispatch to for 'infix:<div>'␤current instr.: 'perl6;Rat;new' pc 319571 (src/gen/core.pir:37782)␤»
TimToady and we can force value semantics with 'is copy', so the default should be otherwise, methinks
masak TimToady: ok. sounds like a Scylla/Carybdis design issue, then. 13:37
newbies will either be forever surprised by double array layers, or by strange readonly binding-ish semantics.
TimToady or they'll just cargo-cult 'is copy' all over every BUILD 13:38
pmichaud how does one get a rw-able array attribute, then? 13:39
TimToady which rw are you referring to?
pmichaud s/get/initialize/
class XYZ { has @!a }; XYZ.new(:a( what do I put here to initialize @!a but leave it rw in the class?) ) 13:40
TimToady :a(1,2,3) might do it 13:41
pmichaud but :a(@b) wouldn't?
TimToady it's also possible that BUILD defaults $! parameters differently 13:42
pmichaud did you mean $! attributes?
oh, I see
TimToady I mean parameters
I'm trying to work it all with the already-existing signature binding semantics
pmichaud yes, I'd like that 13:43
TimToady (whatever those are...)
pmichaud I speculated with jnthn++ a couple of months ago that attribute initialization was really a form of signature binding
TimToady at least when it is done in the sig
we can still write a custom BUILD
maybe an implicitly written BUILD assumes 'is copy' on parameters...hard to know these things in the middle of the night 13:45
baest I have a patch which fixes some of the problems with large floating point with exponent parts. It's #73392 13:50
13:50 arthur-_ joined
pmichaud baest: looking 13:50
13:52 payload joined
pmichaud baest: you're expecting $I2 to go negative on overflow? 13:53
13:53 jmarti joined
TimToady shower & 13:53
pmichaud this particular approach is still very limiting -- it means we only get the precision available for integers, not for floats
pugssvn r29975 | baest++ | Update pi test to not mentioning pi function and add a atan(1)*4 test 13:54
pmichaud i.e., $I2 will overflow well before we've reached the limits of float precision
baest pmichaud: ok, so you want that as a Num instead?
pmichaud I'd prefer to get rid of the *= 10 13:55
and be using mul instead of div
and this seems to only fix the problem associated with exponentials, while not resolving the issue with large decimals
(seems like any fix ought to be handling both)
baest pmichaud: yes, there is no fix of the last part which uses Rat, I just move some code in order to not calculate base when not needed 13:58
masak how do I write a method .modify if I don't want an original object in $orig to be affected by $orig.=modify ? 14:01
I thought doing this would be enough: method modify() { #`[ stuff ]; self.bless(self.CREATE, :new($stuff)) }
14:03 akl left
pmichaud masak: I'm afraid I don't follow the question 14:03
to me, .= implies mutation 14:04
if you're asking "how do I create a method that creates a new object", then it can just do .new
masak pmichaud: when I assign with objects, $a = $b, I get the same object in both variables, right?
pmichaud masak: yes. 14:05
moritz_ masak: method modify($self is rw:) { } # something like that?
pmichaud more precisely, $a and $b both refer to the same object 14:06
but I don't see how that applies to your original question yet
masak well, I'm experiencing action at a distance here.
but I'm starting to suspect it's really my fault.
14:06 akl joined, akl left, akl joined
masak not sure I know myself how to solve it. 14:07
pmichaud if .modify changes the invocant, then that's the issue
masak no, what I wanted was actually something clone-y, which left objects intact and cloned every time it made a change.
pmichaud then .modify should simply be producing a new object
masak but what I got was the old objects being replaced by the new ones in variables I didn't even touch.
pmichaud and $a.=modify does what you want 14:08
masak I suspect that's because I did the $a = $b thing.
so if I first do $a = $b and then $b.=modify, does $a change too?
pmichaud it shouldn't.
masak then I have a bug for you.
14:08 frettled sets mode: +o masak
masak let me golf it a bit more. 14:09
pmichaud but more to the point, $b .= modify shouldn't change the original $b (unless .modify itself is modifying self)
masak it doesn't.
but it replaces the object in $a with the object that .modify produces.
which is... less than awesome.
pmichaud we may have a stray copy from the old assignment semantics lying around, then. 14:10
do you have a short nopastable example?
masak working on it.
pmichaud okay
I'm sure I can fix quickly.
masak \o/
this is alpha, by the way.
haven't tested with master.
masak hides :)
pmichaud oh, I don't make any claims for alpha atm 14:11
moritz_ spectests RT #73278 - any objections to applying it if it produces no errors?
14:12 TiMBuS joined
pmichaud moritz_: reviewing 14:12
moritz_ (with fixed whitespaces) 14:13
masak alpha: class A { method x() { self.bless(self.CREATE) } }; my A $a.=new; my $b = $a; say $a.WHICH; $b.=x(); say $a.WHICH;
pmichaud I don't like the hash initialization at the beginning (of each invocation)
p6eval alpha 30e0ed: OUTPUT«47864366503640␤47864366382800␤»
masak pmichaud: there it is.
rakudo: class A { method x() { self.bless(self.CREATE) } }; my A $a.=new; my $b = $a; say $a.WHICH; $b.=x(); say $a.WHICH;
p6eval rakudo 125e87: OUTPUT«47596465090472␤47596465090472␤»
moritz_ pmichaud: should it be moved to an outer scope?
masak ...and fixed in master. argh! :/
pmichaud moritz_: not sure. In some sense it perhaps should be matching against the grammar's sigil rule 14:14
either that or just turned into a package variable and set via INIT
baest pmichaud: I'm not sure how you would do the multiplication. Wouldn't that involve div later? Right now, it's adding parts of the number one digit at the time 14:15
pmichaud baest: one moment 14:16
masak hm. adding .clone to $b = $a seems to be a workaround for now.
moritz_ pmichaud: trying it with a package variable now 14:17
pmichaud moritz_: the code doesn't feel as clean as I think it ought to be, but I'm okay with applying it for now. 14:20
jnthn pmichaud: grr. I just ran into the fact that P6protoobject is a class. That means if you try and mix into a proto-object, we then try to derive a subclass of it and do the mix-in (fine), but then when building a proto-object for that derived class we end up with something C3 linearization will balk at.
masak phenny: tell snarkyboojum that when he wakes up, he might want to take a look at the new code I just pushed to github.com/masak/tardis -- variable assignments now work! \o/ 14:21
phenny masak: I'll pass that on when snarkyboojum is around.
jnthn (or long story short, mix-ins to protoobjects can't work :-/)
(without changing the way P6object does things)
masak awww. :/
pmichaud jnthn: what sort of changes to p6object ? 14:22
jnthn Dunno
I guess making p6protoobject into a role we mix in rather than being a class would cut it.
Not sure how much disruption that would cause though.
pmichaud I'm not entirely comfortable with roles in parrot. 14:23
(they may be fine, I just haven't seen good examples to work from.)
jnthn I'm not entirely comfortable with proto-objects being a different Parrot class.
(than the actual instance)
But that's an even bigger change and fix.
pmichaud oh, same here as well. At the time I created P6protoobject I didn't find that I had much choice
jnthn (means we need all those :U, :D etc style things.)
pmichaud mixins didn't seem to be available, so I had to derive a new type. 14:24
jnthn Deriving a new type is fine.
TimToady after cogitating in the shower, I think defaulting all $!attr parameters to 'is copy' is the right default; we can perhaps have 'has $!attr is ref' to override without forcing the user to write an explicit BUILD
pmichaud ?
(? was to jnthn)
jnthn The problem is that if you subclass a proto-object itself, then the proto-object for that also tries to inherit from P6protoobject. 14:25
pmichaud oh!
jnthn then it ends up multiple times in the inehritance hierarchy in a way that C3 can't cope with.
So you get a linearization FAIL.
pmichaud when do we subclass a protoobject?
masak TimToady: I haven't followed all the consequences of that yet, but I think I like it.
14:25 wknight8111 joined
jnthn pmichaud: well, I wanted to do SomeThing but SomeRole 14:26
Primarily because it allows a neat implementation of subset. :-)
14:26 payload left
TimToady masak: it gets you most of what you expect from assignment semantics without the extra baggage. it's also a no-op on something that is already immutable 14:26
pmichaud in that case, would it work to derive from the class for SomeThing and not the class of the protoobject ?
TimToady well, not quite a no-op, it still wants the eventual container to be modifiable, but it doesn't have to clone the value 14:27
pmichaud i.e., use the protoobject to get to the base SomeThing class, derive from that, then create a new protoobject
jnthn No, because then when you re-bless, the thing you re-bless into isn't actually a subclass of the protoobject. :-(
masak TimToady: do we get rid of the extra layer of [] with :lolimanarrayattr[1,2,3] ?
TimToady but a default of value semantics when initializing objects feels like good encapsulation
it should 14:28
masak \o/
then I have no further wishes.
jnthn pmichaud: I can think of workarounds for this particular case.
TimToady it will, though copy the array, if it can't do some kind of COW
pmichaud I don't understand "isn't actually a subclass of the protoobject"
jnthn I don't see an obvious easy fix for the general mix-in-to-a-protoobject case.
masak TimToady: that feels natural, too.
TimToady speccing it 14:29
pmichaud at the p6-level, protoobjects aren't a subclass
jnthn The problem isn't at the P6 level.
The problem is that the Parrot level != the P6 level
And so while this all *should* work great, the mis-match screws us up.
pmichaud jnthn: I think you're not following me, then.
jnthn I think you're not following me either. 14:30
masak ++TimToady
jnthn :-)
The rebless_subclass op needs an exact subclass.
At a Parrot level.
masak a Japanese user gasps at a Rakudo error message: twitter.com/nullpon/status/10119603769 -- hopeably the gasp is gue to the messages A-ness rather than LTA-ness.
s/gue/due/ 14:31
pmichaud jnthn: when we have SomeThing but SomeRole, that's doing an inplace modification of SomeThing?
jnthn No
clone SomeThing
And then inplace on the clone
pmichaud okay
jnthn essentially bit is $lhs.clone does $rhs
pmichaud so, I'm saying we don't do that
jnthn Or similar.
pmichaud don't clone SomeThing
14:31 rgrau joined
jnthn That isn't the problem. 14:31
jonasbn I HATE when the compiler is right and I am wr0ng
jnthn We have to, or we turn the original proto-object into a subtype. :-) 14:32
pmichaud nonono
masak jonasbn: luckily, that doesn't happen all that often in my experience :P
pmichaud don't clone Something, just create the new class with the but and then create a protoobject for it
14:33 xinming_ is now known as xinming
jnthn I really, really don't follow. 14:33
but is just implented in terms of does 14:34
does itself delegates to the meta-model.
pmichaud just a sec
if I have 3 but SomeRole, what happens?
jnthn 3.clone does SomeRole
well 14:35
Not quite that akshually
But close.
pmichaud right, I need the real details here :)
anyway, that's close enough
jnthn That is actually how I have it here.
pmichaud the problem is the 3.clone step won't really work for a protoobject
jnthn Ah?
What will it end up doing? 14:36
pmichaud well, it clones the protoobject, but as you say, that's a class that we can't derive from
jnthn Oh, I think I see maybe why...
Well, yes, the problem is that we need to derive from it. :-(
pmichaud I'm saying that instead of cloning the protoobject and deriving from it, derive from a base class instance and then use that to create a new protoobject 14:37
jnthn But I want to nextsame() to the ACCEPTS in the protoobject.
Basically all I wanted to do here was
1) take a protoobject
pmichaud the new protoobject will have an ACCEPTs
jnthn 2) mix in an ACCEPTS method
Yes, but I actually don't need the new proto-object 14:38
It's a throw-away, essentially.
TimToady jonasbn: if you want a compiler that is Always Right, try Haskell :)
pmichaud jnthn: okay, it's clear that I'm not understanding any of this, then. :-) 14:39
jnthn Anyway, I guess trying to implement subset in some pure Perl 6-y way when we've got an awkward mis-match between Parrot and Perl 6 handling of proto-object stuff is just Too Idealistic.
pmichaud I'm fine if we change the handling of protoobjects in P6object 14:40
I'm not sure *how* to change it, but I'd be fine with doing it (assuming we don't break anything API level)
the fact that protoobjects create a new subtype isn't API as far as I'm concerned.
that's something that was done as a workaround to not having appropriate mixin capabilities in Parrot. 14:41
jnthn Unfortunately, I don't see how we can avoid that without the :U/:D style modifiers.
Otherwise we end up in the wrong ACCEPTS all the time
And I'm not sure how to handle those easily outside of Perl 6 space.
pmichaud ACCEPTS is (afaik) purely a Perl 6 item. it's not part of P6object 14:42
jnthn ah, that's true.
pmichaud I've theorized putting ACCEPTS into P6object (and might have even done it), but my earlier comment that it doesn't have to be handled via subclassing applies 14:43
jnthn Either way, it's all a rather big refactor that'll take some time and planning.
So I'd rather not do that right now.
pmichaud well, whatever approach you decide to take I'm fine with.
jnthn I'll do something workaround-ish for subset now.
pmichaud that seems best.
pugssvn r29976 | lwall++ | [S06,S12] make attributive parameters default to 'is copy' binding
r29976 | make easy way for an attribute to override this with 'is ref'
pmichaud baest: still around? 14:44
jnthn And we can re-visit this when considering object model stuff overall.
(e.g. when looking at knownhow/compact structs/multiple backends.)
baest pmichaud: yep
pmichaud baest: instead of building the denominator by successive multiplications by 10, I'd prefer to build it by successive multiplications of 0.1
and we need to be doing this for both exponential and non-exponential values 14:45
baest pmichaud: ahh, that make sense. I didn't get that at all
moritz_ pugs: 1/7
p6eval pugs: ( no output )
moritz_ pugs: say 1/7
p6eval pugs: OUTPUT«0.1428571428571428571428571428571428571429␤»
pmichaud colomon++ had suggested that infix:</> was the correct way to handle this, and I suspect that may be correct. 14:46
I have to go -- bbiab 14:47
masak submits rakudobug
that was just a test of my new Emacs macro :P
pugssvn r29977 | moritz++ | test for RT #73262: 7**(-1) should not be 0 14:48
TimToady I always misread rebless as reb-less 14:49
14:51 am0c joined
pmichaud back 14:55
dalek kudo: d4d58aa | moritz++ | t/spectest.data:
more tests
14:56
kudo: 201e027 | moritz++ | src/core/Int.pm:
Int**Int does not produce an Int if the RHS is negative

Fixes RT #73262
pmichaud anyway, in the non-exponential case, we may be able to generate the appropriate value by calling &infix:</> instead of Rat.new(), and letting that decide whether we produce a Rat or Num (or other) result.
baest pmichaud: that last thing with infix:</> was that to me? If it is I'm confused
pmichaud: ahh, ok
make sense
pugssvn r29978 | moritz++ | [t/spec] re-fudge arith.t for rakudo 14:57
r29978 |
r29978 | Also remove a test which is now in S03-operators/names.t
pmichaud oh, wait
pmichaud thinks
oh, nm. 14:58
masak submits rakudobug
now I also have my macro as a simple key binding :)
this will enable me to shave a few milliseconds off the whole routine.
pmichaud
.oO( masak replaces his sledgehammer with a jackhammer )
14:59
moritz_ pmichaud: might I ask you to look at #73244 (the Big Grammar Patch) soon?
masak pmichaud: :)
pmichaud moritz_: looking.
masak
.oO( drrrrRRRRR )
rakudo: say Int ** Int 15:01
p6eval rakudo 125e87: OUTPUT«Use of type object as value␤current instr.: 'perl6;Perl6Exception;throw' pc 14501 (src/builtins/Seq.pir:52)␤»
moritz_ masak: all of those should be warnings, but are fatal :/ 15:02
masak moritz_: :/
baest pmichaud: doing *.1 seems to result in the same precision
15:02 payload joined
pmichaud baest: same precision as the case when using a $I register? or when using the $N register? 15:05
moritz_: I'm not comfortable with the apparent code duplication between regexes and method, but if spectests pass I'm fine with #73244 for now and we'll cleanup/refactor a bit later. 15:06
moritz_ pmichaud: ok
pmichaud I'd also prefer that we use dynamic vars for %REGEX_MODIFIERS instead of the package-scoped thingy
15:07 jonasbn left
dalek kudo: 19cd1c6 | moritz++ | t/spectest.data:
enable arith.t
15:08
pmichaud (again, that can be cleaned up afterwards)
baest pmichaud: both it seems, I'm not sure if I remember the $I correctly, but could that store number like 1e50?
jnthn (clean up later and get patch in now)++
(for this case, not in general :-))
pmichaud $I is only good to the limit of 32-bit ints
so no
moritz_ jnthn, pmichaud: spectesting now
baest pmichaud: yes I thought so, maybe there was some magic I didn't get 15:09
pmichaud: but yes, just rested, the $I and $N and * .1 all gives 3.14159265358979 for pi (when faced with 3.14159265358979323846264338327950288419716939937510e0) 15:12
TimToady maybe it wasn't a bright idea to spec parrot ints at 32-bits when the whole world is probably going toward 64 now...
baest s/rested/retested/
arnsholt Where's the place to report nqp-rx bugs? 15:15
Or rather, correct place
baest I think that it doesn't matter if we get the last digit after 18th digit, the addition doesn't seem to change. It's like 3e50+abignumber == 3e50 15:16
pmichaud arnsholt: I take nqp-rx bugs just about anywhere 15:17
arnsholt: standard seems to be the parrot trac bugtracker
we haven't officially designated a place yet (and I'm not familiar enough with github's issue tracker to be regularly checking it yet)
apparently nobody has submitted issues via github yet :-) (github.com/perl6/nqp-rx/issues) 15:18
baest pmichaud: how do you call infix</> from npq? 15:21
arnsholt pmichaud: Righties. I'll put it in the Parrot Trac then
pmichaud baest: you won't call it directly -- you'll generate a call to it 15:22
baest pmichaud: ahh, of course
15:23 quester left, meppl left
dalek kudo: e9c1857 | moritz++ | (7 files):
Merge remote branch 'bkeeler/grammar'

closes RT #73244.
15:25
arnsholt Ok. I have patched Rakudo to fix the issue with interpolating a single variable. How should I submit it? 15:30
masak arnsholt: a nopaste is fine.
pmichaud ...there was an issue with interpolating a variable...? 15:31
masak :)
moritz_ arnsholt: generate a patch by commiting the changes locally, and then run 'git-format-patch HEAD^'
masak pmichaud: yes, "$only-thing-in-string" didn't stringify the interpolated var.
arnsholt rakudo: my $a = 3; say "$a".WHAT; # pmichaud
p6eval rakudo 201e02: OUTPUT«Int()␤»
masak pmichaud: TimToady quipped that he'd had the same bug somewhere around Perl 1.0 :)
pmichaud ah.
yes, we had that bug in alpha, iirc. 15:32
arnsholt It's an issue in nqp-rx (I'd argue at least)
But I couldn't quite get the nqp-rx code to do what I wanted so I did it in Rakudo instead
masak maybe it's best that pmichaud takes care of applying this patch. 15:33
arnsholt Indeed
masak TimToady: S12:1809 "You may import enum types; only non-colliding values are imported." The word choice of 'values' there is confusing to me, because we're not importing the 0..7 of the Day enum, for example. 15:34
15:34 Psyche^ joined 15:36 clintongormley joined
dalek kudo: e2c77d4 | mberends++ | docs/S11-Modules-proposal.pod:
[docs/S11-Modules-proposal.pod] the outcome of the S11 Modules discussion at the Copenhagen Perl 6 Hackathon
15:36
masak when I hear the word value, I think 'the rhs of a =>'. we're really importing symbols, which happen to be associated with some value.
jnthn nod nod
masak does a guerrila word change 15:37
moritz_ mberends++ indeed
lisppaste3 arnsholt pasted "Patch for interpolating single element" at paste.lisp.org/display/96049
moritz_ hilights pmichaud for the paste above 15:38
masak mberends++
15:38 Patterner left, Psyche^ is now known as Patterner, nihiliad joined 15:39 arlinius left
pugssvn r29979 | masak++ | [S12] s/values/symbols/ 15:41
jnthn mberends++ 15:43
uniejo mberends++ 15:46
jnthn (and all_of_us++ for working on this)
dalek kudo: 1ed54df | mberends++ | docs/S11-Modules-proposal.pod:
[docs/S11-Modules-proposal.pod] remove excessive Foo::Bar, Hackathon++
15:47
kudo: cd42786 | masak++ | docs/S11-Modules-proposal.pod:
[docs/S11] fixed a small typo
kudo: d32a0c2 | mberends++ | docs/S11-Modules-proposal.pod:
Merge branch 'master' of [email@hidden.address]
masak jnthn: enum A <a b c>; enum B <c d e>; # what happens to &c here? 15:50
jnthn: does S12 bring that up? I just saw it talk about importing.
jnthn it says something about non-colliding symbols, iirc 15:51
moritz_ ISTR that it makes &c ambiguous and thus disallowed
masak right.
but that must happen when we see B, right?
and there's also the small detail of the user defining 'sub c', which is IIRC allowed.
15:51 martinro left
masak it's as if subs are in a layer in front of enum keys, shadowing them if needed. 15:52
moritz_ aye; it must look at the current scope, and if there's a c enum symbol, remove it from the namespace
arnsholt pmichaud: Trac ticket for the interpolation issue: trac.parrot.org/parrot/ticket/1503 15:53
mberends is someone planning to work on the 'use' implementation in the next week or so? I'd like to try to implement some of these S11 proposals but don't want to be at cross purposes with others. 15:54
masak moritz_: www.racf.bnl.gov/docs/rt/rtexpertu...dmin_email
lisppaste3 arnsholt annotated #96049 "untitled" at paste.lisp.org/display/96049#1 15:55
baest std: my @x = (1,,3,);
p6eval std 29979: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix , instead at /tmp/ZAzW3sMTat line 1:␤------> my @x = (1,⏏,3,);␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤ null term␤ postfix␤
..postfix_prefix_meta_operator␤FAI…
baest std: my @x = (1,3,); 15:56
p6eval std 29979: OUTPUT«ok 00:01 106m␤»
TiMBuS does the current rakudo not support 'use'? seems to look for a .pir instead of .pm 15:59
masak rakudo: say Perl6::Compiler.compile('say 42').WHAT
p6eval rakudo e9c185: OUTPUT«Null PMC access in find_method('WHAT')␤current instr.: 'parrot;P6object;WHAT' pc 68 (runtime/parrot/library/P6object.pir:111)␤»
masak submits rakudobug
rakudo: my $x = Perl6::Compiler.compile('say 42'); $x() 16:01
p6eval rakudo e9c185: OUTPUT«42␤»
jnthn rakudo: say(say 42).WHAT
baest TiMBuS: I think the modules need to be precompiled
p6eval rakudo e9c185: OUTPUT«42␤1␤»
masak that is so cool.
TiMBuS yeah thats what I'm guessing
mberends travel Copenhagen -> Utrecht, NL # $work :-( 16:02
dalek kudo: cca3cfc | moritz++ | docs/S11-Modules-proposal.pod:
[docs/S11-Modules-proposal.pod] link to prototype module searching function
16:05
masak rakudo: Perl6::Compiler.compile('say 42').WHAT
p6eval rakudo e9c185: OUTPUT«Null PMC access in find_method('WHAT')␤current instr.: 'parrot;P6object;WHAT' pc 68 (runtime/parrot/library/P6object.pir:111)␤»
16:06 mberends left
baest rakudo: sub rt54804( $v, $w?, $x?, $y? ) { say 3; }; rt54804( 1, , 3, ) 16:07
p6eval rakudo e9c185: OUTPUT«3␤»
baest rakudo: use Test; sub rt54804( $v, $w?, $x?, $y? ) { say 3; }; eval_dies_ok "rt54804( 1, , 3, )" 16:08
p6eval rakudo e9c185: OUTPUT«"load_bytecode" couldn't find file 'Test.pir'␤current instr.: '!use' pc 372546 (src/gen/core.pir:55184)␤»
baest frag
but eval_dies_ok says ok. How can that be?
it seems to me that #54804 hasn't been fixed, but instead it is a problem in eval_dies_ok 16:09
16:10 masak` joined, meppl joined
moritz_ baest: it seems that eval_dies_ok has a problem with calling subs from outer lexical scopes 16:11
16:11 masak left
moritz_ rakudo: say 2, , 3 16:11
p6eval rakudo e9c185: OUTPUT«23␤»
baest moritz_: yeah, make sense 16:12
moritz_ baest: putting the sub declaration into the eval string works
masak` rakudo: say PAST::Compiler.compile("OH HAI") 16:13
p6eval rakudo d32a0c: OUTPUT«\xFEPBC
..␤␤
masak` 哈哈
most fun I've had today. :)
baest moritz_: you're right. I'll update S06-signature/optional.t and create a new bug for eval? 16:14
bug report ;)
moritz_ I'm not sure if it's a bug or not 16:15
masak` rakudo: say PAST::Compiler.compile("OH HAI").chars
p6eval rakudo d32a0c: OUTPUT«1120␤»
masak` rakudo: say PAST::Compiler.compile("OH HAI").flip.chars
p6eval rakudo d32a0c: OUTPUT«1120␤» 16:16
baest moritz_: well, shouldn't you be able to call subs defined in the same scope eval was called in?
16:16 dual left
jnthn no 16:16
moritz_ baest: yes, but eval is called from eval_dies_ok, not from the scope you're writing the eval_dies_ok call in
jnthn well, yes
but...what moritz_ said ;-) 16:17
baest oh
masak` rakudo: say PAST::Compiler.^methods
p6eval rakudo d32a0c: OUTPUT«Method 'methods' not found for invocant of class 'P6metaclass'␤current instr.: '!dispatch_.^' pc 410 (src/glue/dispatch.pir:100)␤»
masak` aww.
16:17 masak` is now known as masak
baest moritz_: of course 16:17
masak the meta always ends somewhere.
16:18 krr left
moritz_ for this thing we'd need eval($str, :context) and then eval_dies_ok could do an eval($str, :context(CALLER)) or so 16:18
pugssvn r29980 | baest++ | Put the sub definition inside the eval to make it callable
baest yes
moritz_ but it's too complex to put it into Test.pm with good conscions
baest that would be very nice
16:19 szabgabx joined
moritz_ *conscience 16:19
16:19 iblechbot left
pmichaud The patch for fixing variable interpolation is fine 16:22
leave the comment about it being fixed in nqp-rx also, though. 16:23
because yes, it should be fixed there also.
nqp: my $a := 3; say "$a".WHAT;
p6eval nqp: OUTPUT«Confused at line 1, near "say \"$a\".W"␤current instr.: 'parrot;HLL;Grammar;panic' pc 500 (src/cheats/hll-grammar.pir:197)␤»
pmichaud nqp: my $a := 3; say("$a".WHAT);
p6eval nqp: OUTPUT«Method 'WHAT' not found for invocant of class 'Integer'␤current instr.: '_block11' pc 0 (EVAL_1:6)␤»
moritz_ p6eval: so should I apply it?
erm, I meant pmichaud
pmichaud I'm fine with applying it, yes. 16:24
baest moritz_: yes, I know, I did that change to the test
pmichaud I'll be afk for a little while -- stuff happening here that needs my attn
baest oh, sorry was reading the hostiry
s/hostiry/history/
16:24 lichtkind joined
lichtkind masak: 16:25
hahaha
moritz_ will push after spectest 16:26
arnsholt rakudo: my $i = 0; $i++ for [1,2,3]; say $i; 16:27
p6eval rakudo d32a0c: OUTPUT«3␤»
masak alpha: my $i = 0; $i++ for [1,2,3]; say $i; 16:28
p6eval alpha 30e0ed: OUTPUT«1␤»
masak hm.
I agree with alpha here.
moritz_ looks much like a bug
(in master)
masak pugs: my $i = 0; $i++ for [1,2,3]; say $i;
p6eval pugs: OUTPUT«1␤»
masak submits rakudobug
arnsholt masak: Good. Because it's in the spectest suite =)
Any suggestions for what is wrong? 16:29
masak arnsholt: it's flattening the array.
moritz_ objectref or interpolating flag
arnsholt So that I can say something intelligent in the todo, rather than "doesn't work"
moritz_ rakudo: say [1, 2, 3].PARROT
p6eval rakudo d32a0c: OUTPUT«Array␤»
moritz_ rakudo: say (\[1, 2, 3]).PARROT
p6eval rakudo d32a0c: OUTPUT«Capture␤»
moritz_ rakudo: my $i = 0; $i++ for \[1,2,3]; say $i; 16:30
p6eval rakudo d32a0c: OUTPUT«Method 'iterator' not found for invocant of class 'Capture'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
moritz_ that's certainly wrong too
don't you think masak?
masak submits rakudobug
arnsholt rakudo: my Int @array; @array[0] = 23;
p6eval rakudo d32a0c: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Positional[::T];postcircumfix:<[ ]>' pc 10402 (src/metamodel/GrammarHOW.pir:44)␤»
masak hrm. my keybinding has stopped working. :/
arnsholt Hmm. Are parametrized types a known problem in master? 16:31
jnthn arnsholt: Should mostly work-ish.
arnsholt: though some problems.
arnsholt Right 16:32
jnthn ah, that one... :-/
Yes, that one is a problem. :-(
moritz_ see t/spec/S09-typed-arrays/arrays.t
arnsholt rakudo: my $i = -1; my @arr = <foo bar blech>; say @arr[$i]; 16:34
p6eval rakudo d32a0c: OUTPUT«Cannot use negative index on arrays␤current instr.: '&die' pc 16757 (src/builtins/Junction.pir:373)␤»
arnsholt S02-builtin_data_types says that "my @arr of Int = 1, 2, 3, 4, 5; is(@arr, <1 2 3 4 5>);" is that right? 16:38
dalek kudo: fe12ac8 | (Arne Skjærholt)++ | src/Perl6/Actions.pm:
Fix issue with double quoted strings interpolating only a single variable.
16:39
baest rakudo: my @a = 1,2,3; say (@a min 4) 16:47
p6eval rakudo cca3cf: OUTPUT«1␤»
baest is that correct?
moritz_ baest: don't think so, but let me check S32-containers... 16:48
wai, it's an op
so S03
it's wrong.
baest moritz_: ok, but what would be correct then. There is a ticket #63778, but now it parses ok, but I'm not sure what the correct answer is 16:50
diakopter longest 7hr backscroll in years 16:51
masak diakopter: :>
arnsholt rakudo: my @a of Int; @a.push 's'; 16:52
p6eval rakudo cca3cf: OUTPUT«Confused at line 11, near [email@hidden.address] 's"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
arnsholt rakudo: my @a of Int; push @a, 's';
p6eval rakudo cca3cf: ( no output )
arnsholt rakudo: my @a of Int; push @a, 's'; say @a
p6eval rakudo cca3cf: OUTPUT«s␤»
diakopter rakudo: my @a of Int; @a.push: 's';
p6eval rakudo cca3cf: ( no output )
16:54 payload left
moritz_ rakudo: say [1, 2, 3] max 0 16:56
p6eval rakudo cca3cf: OUTPUT«1 2 3␤»
m6locks hmm t/spec/S06-signature/optional.rakudo failed
built the latest one
although it might be remniscient of some older ones, my git-wizardy ain't that high-level yet 16:58
16:59 justatheory joined
diakopter .. in theory, at least. 16:59
17:01 am0c left
baest m6locks: sorry, that is my bad 17:01
m6locks no prob 17:02
pugssvn r29981 | baest++ | Mark failing test as todo
baest m6locks: there you go :) 17:03
m6locks :)
arnsholt rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).WHAT 17:04
p6eval rakudo cca3cf: OUTPUT«Num()␤»
17:04 wknight8111 left
masak submits rakudobug 17:04
arnsholt rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).PARROT
p6eval rakudo cca3cf: OUTPUT«Float␤»
masak whoa.
rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).ucfirst 17:07
p6eval rakudo cca3cf: OUTPUT«43␤»
moritz_ 3my @arr[*]; @arr[42] = 's'; say (+@arr).sin 17:08
rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).sin
masak rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).sin
p6eval rakudo cca3cf: OUTPUT«-0.831774742628598␤»
moritz_ rakudo: my @arr[*]; @arr[42] = 's'; say (+@arr).Complex 17:09
p6eval rakudo cca3cf: OUTPUT«43 + 0i␤»
moritz_ seems to work with non-parrot Num methods
17:10 iblechbot joined
moritz_ rakudo: say try { 43 } 17:10
p6eval rakudo cca3cf: OUTPUT«43␤»
arnsholt rakudo: my @arr = (23); say try { @arr[*-2] } 17:11
p6eval rakudo cca3cf: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
masak submits rakudobug
17:12 rgrau left
arnsholt rakudo: my @arr = (23); @arr[*-2] 17:13
p6eval rakudo fe12ac: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
17:14 dual joined
pugssvn r29982 | moritz++ | [t/spec] fudge arith.t 17:16
moritz_ rakudo: say (*-2).WHAT 17:19
p6eval rakudo fe12ac: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)␤»
pugssvn r29983 | arnsholt++ | [t/spec] Unfudged passing string interpolation test; fudged S02-builtin_data_types/array.t
masak moritz_: that a new bug?
arnsholt Okay. S02-builtin_data_types/array.t can be brought back now
baest is #64132 closable. I would agree that -v is not really saying anything about rakudo, but the ticket is only specifying things that are a) done or b) clarified 17:20
?
uniejo rakudo: my @arr[*]; @arr[42]++; say (+@arr).PARROT; say PARROT(+@arr)
p6eval rakudo fe12ac: OUTPUT«Float␤Num␤»
moritz_ masak: it's Whatever currying not being implemented in rakudo
masak nod
17:22 jaldhar left 17:23 jaldhar joined, payload joined
dalek kudo: 657c165 | jonathan++ | (5 files):
Implement a first cut of subset type declarator.
17:25
arnsholt rakudo: my @a; @a[2] = 'b'; my @b = @a; 17:26
p6eval rakudo fe12ac: OUTPUT«Null PMC access in isa_pmc()␤current instr.: 'perl6;Iterator;eager' pc 10683 (src/builtins/Role.pir:143)␤»
arnsholt masak: I maded u a Null PMC 17:27
masak but I submitted it :) 17:28
masak submits rakudobug
arnsholt Awww
jnthn my @a; say @a.perl 17:32
rakudo: my @a; say @a.perl
p6eval rakudo fe12ac: OUTPUT«Null PMC access in elements()␤current instr.: 'perl6;SeqIter;get' pc 13867 (src/builtins/Routine.pir:113)␤»
masak submits rakudobug 17:33
twitter.com/jonasbn/status/10128102734 -- awwww. :) 17:35
lue hello! 17:42
masak hellue!
moritz_ irclog.perlgeek.de/perl6/2007-02-04#i_-55445 # that was my first contact with #perl6, btw 17:43
lue I'm going to try and get a better input method set up (IBus plays with my typing). I'll be gone for a moment. 17:45
17:45 lue left, jonafk joined 17:49 jonafk is now known as jonasbn
pugssvn r29984 | arnsholt++ | [t/spec] Fudged S02-builtin_data_types/array_extending.t 17:49
17:54 lue joined
lue I love 楽土 17:54
lichtkind can all people except me here write japanese? 17:56
moritz_ lichtkind: no
lichtkind ok a wex kanji i can :)
a few
lue I only just set up an input method. I only know a few phrases :) 17:57
masak lue: 私は日本語を書くことができますが、私は日本語を読むことはできません。 :)
lue Can't write them, can kinda speak them. I blame what I know on ゼルダの伝説 :)
masak: Come on! I'm only able to use my input method with romaji :) 17:58
masak lue: well, you did ask. :)
lue that's interesting, I can'
t use my third level anymore 17:59
arnsholt lichtkind: I can input them (because I've enabled the input method, for the lulz), but I haven't the foggiest what they mean =)
jnthn arnsholt: my @a; @a[2] = 'b'; my @b = @a; is fixed locally :-)
arnsholt: spectesting
moritz_ kanjicards.org/
dalek kudo: 6a1c973 | moritz++ | t/spectest.data:
more passing test files, arnsholt++
lue ゼルダの伝説: 時のオカリナ (I'm done with that now) 18:00
diakopter irclog.perlgeek.de/perl6/2007-01-28#i_-58349
lichtkind did i miss anything important in www.perlfoundation.org/perl6/index.cgi?timeline ? 18:01
pugssvn r29985 | arnsholt++ | [t/spec] Fudged (and fixed) S02-builtin_data_types/array_ref.t
arnsholt One more file that can be brought in
diakopter hmm. someone might do a "this day in Perl 6 history" every day...
masak lichtkind: there's no such term as 'great release cycles'. 18:02
18:03 payload left
lichtkind masak: how should i put it better the cycle between 1.0 and 2.0 18:03
moritz_ lichtkind: FWIW simon's first commit to the parrot repo was on Wed Aug 29 12:07:04 2001
18:03 payload joined
moritz_ but that was 2k lines of code, so it was probably written earlier 18:04
masak lichtkind: they're called 'major versions'.
lichtkind: I think you missed this: www.sidhe.org/~dan/blog/archives/000435.html
jnthn lichtkind: You missed a mention of my glorious entry into Rakudo development, but I'm too modest to want a mention of that. 18:05
;-) 18:06
lichtkind jnthn: when was it?
jnthn :-P
# moved it on a Perl Foundation URL 18:07
s/onto/
er, s/on/to/
18:09 payload left
masak rakudo: my $a = sub { say "OH HAI" }; $a.do 18:10
p6eval rakudo 657c16: ( no output )
dalek kudo: c364130 | jonathan++ | src/builtins/SeqIter.pir:
Avoid a bunch of null PMC accesses.
18:11
pugssvn r29986 | moritz++ | [t/spec] remove a TODO that jnthn++ fixed 18:12
18:12 colomon joined
moritz_ rakudo: my @a; @a[2] = 'b'; my @b = @a; 18:14
p6eval rakudo 657c16: OUTPUT«Null PMC access in isa_pmc()␤current instr.: 'perl6;Iterator;eager' pc 10683 (src/builtins/Role.pir:143)␤»
moritz_ arnsholt: was there a test for this bug somewhere?
lue & 18:15
18:17 snarkyboojum joined
pugssvn r29987 | moritz++ | [t/spec] unfudge test for RT #73406 which jnthn++ fixed 18:17
moritz_ rakudo: say ~(1, 2, 3) 18:19
p6eval rakudo 657c16: OUTPUT«3␤»
moritz_ rakudo: say (1, 2, 3).WHAT
masak that one's submitted.
p6eval rakudo 657c16: OUTPUT«Parcel()␤»
moritz_ I know
masak good :)
moritz_ masak: sometimes I actually try to fix bug, not only point to them :-)
diakopter finds my first join: irclog.perlgeek.de/perl6/2006-08-08#i_-193451
masak moritz_: ouch... :P
moritz_ rakudo: say (1, 2, 3).join(' ') 18:20
p6eval rakudo 657c16: OUTPUT«1 2 3␤»
arnsholt One more file that can be brought in
Ooops.
moritz_ did you mean: Ooops.t ? 18:21
SCNR
arnsholt Arrow-up, enter in wrong window
pugssvn r29988 | baest++ | Fudged S05-mass/rx.t and fixed
baest if anybody is up to slowing down the spectest A LOT, then please bring in S05-mass/rx.t :)
masak baest++: you're the baest!
moritz_ baest: I'll do my very baest 18:22
baest 730 tests
diakopter finds an ironic parallel between Bibles that print the words of Jesus in red/bold lettering, and the #perl6 irclog, which prints the words of audreyt in red/bold lettering.
moritz_ diakopter: I've never seen such a bible; doesn't seem to be common in Europe 18:23
arnsholt moritz_: I think it was common in the manuscript days
pugssvn r29989 | baest++ | Add plan 18:24
diakopter en.wikipedia.org/wiki/Red_letter_edition
moritz_ rakudo: say (1, 2, 3).join(' ') 18:27
p6eval rakudo 657c16: OUTPUT«1 2 3␤»
moritz_ and (1, 2, 3) is of type Parcel
now when I add method Str() { self.join(' ') } class Parcel, it still prints 3 18:28
18:28 jonasbn left
pugssvn r29990 | arnsholt++ | [t/spec] Fudged and fixed S09-typed-arrays/arrays.t 18:28
moritz_ I just don't understand it
arnsholt One more test file.
jnthn moritz_: what is prefix:<~> doing? 18:30
moritz_ jnthn: good question...
jnthn rakudo: class Beer { method Str { "want" } }; say ~Beer.new
p6eval rakudo 657c16: OUTPUT«want␤»
jnthn oh...well, something sane it seems.
moritz_ it assigns to a new ['Str'] variable in PIR 18:31
baest #64880 should be closable. There are still some problems with quoting in regex, but it doesn't die just gives a wrong result 18:32
diakopter TimToady: if Pugs brought the New Testament, and Pharisaism is on the rise today, does that mean we're premillenial or amillenial or, GAH, preterists???? Has Jerusalem already been sacked by the Romans? How long until the Reformation?
moritz_ adn in Mur.pir there's a :vtable('get_string') that re-dispatches to sel.'Str'()
jnthn moritz_: nod
18:32 lue left, hercynium left
moritz_ so it all seems sane... except that it doesn't work as expected with Parcel 18:33
rakudo: say "foo" ~~ /"foo"/
p6eval rakudo 657c16: OUTPUT«foo␤»
dalek kudo: fbd8bc9 | moritz++ | t/spectest.data:
two more passing test files, baest++, arnsholt++
18:34
moritz_ I could have written taht as <arnsholt baest>».++ but that would have been unfair to karma tracking :-)
jnthn rakudo: say 42++ 18:35
p6eval rakudo 657c16: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16757 (src/builtins/Junction.pir:373)␤»
jnthn alpha: say 42++ 18:36
p6eval alpha 30e0ed: OUTPUT«Unable to set lvalue on PAST::Val node␤in Main (file <unknown>, line <unknown>)␤»
moritz_ rakudo: say 3.Str.WHAT
p6eval rakudo 657c16: OUTPUT«Str()␤»
moritz_ rakudo: class A { }; A.Str.WHAT.say 18:37
p6eval rakudo 657c16: OUTPUT«A()␤»
arnsholt say ++e;
moritz_ masak: that's another bug :-)
arnsholt rakudo: say ++e 18:38
p6eval rakudo 657c16: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16757 (src/builtins/Junction.pir:373)␤»
baest #66742 should also be closable
uniejo rakudo: module Beer {}; module Food {}; Beer|Food++ 18:39
p6eval rakudo 657c16: OUTPUT«Method 'clone' not found for non-object␤current instr.: '&postfix:<++>' pc 374966 (src/gen/core.pir:55148)␤»
masak that's disgusting :)
masak submits A.Str.WHAT.say rakudobug 18:41
arnsholt rakudo: my Str %s = :a<b>a 18:42
p6eval rakudo 657c16: OUTPUT«Confused at line 11, near "my Str %s "␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
arnsholt rakudo: my Str %s = :a<b>
p6eval rakudo 657c16: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
moritz_ arnsholt: that should fail, but diffferently
with a type check error 18:43
because :a<b> is a Pair, not Associative[Str]
arnsholt Yeah, that's what I thought 18:44
rakudo: my Str %s = {a => 'b'}
p6eval rakudo 657c16: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
masak submits rakudobug
arnsholt rakudo: my %s = {a => 'b'} 18:45
p6eval rakudo c36413: ( no output )
masak rakudo: my Str %s
p6eval rakudo c36413: ( no output )
moritz_ rakudo: my Str %s; my Str %a; %a<a> = a; %s = %a; say "alive"
p6eval rakudo c36413: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
moritz_ rakudo: my Str %s; my Str %a; %a<a> = a; say "alive"
p6eval rakudo c36413: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
moritz_ rakudo: my Str %a; %a<a> = a; say "alive" 18:46
p6eval rakudo c36413: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
moritz_ that looks like fallout from the concrete role vs. role group distinguishing 18:47
jnthn moritz_: Not quite that. 18:48
moritz_: A FAIL attempt to get typed hashes working again that somehow got committed.
18:50 uniejo left
masak rakudo: my Str %s = a => 'b' 18:50
p6eval rakudo c36413: OUTPUT«get_pmc_keyed() not implemented in class ''␤current instr.: 'perl6;Associative[::T];postcircumfix:<{ }>' pc 13453 (src/builtins/Code.pir:84)␤»
dalek kudo: be8b318 | jonathan++ | src/builtins/ (2 files):
Get Seq.new and Array.new working again.
18:51
kudo: 3547ff1 | jonathan++ | t/spectest.data:
Re-enable S32-array/create.t.
pugssvn r29991 | arnsholt++ | [t/spec] Fudged S09-typed-arrays/hashes.t 18:58
arnsholt Yet another file that can be added 18:59
19:02 lue joined 19:03 szabgabx left
lichtkind transalted wx.po file 19:04
in better quality :) 19:05
masak food & 19:07
19:07 masak left 19:11 krakan joined 19:22 nihiliad1 joined 19:23 Trashlord joined 19:24 lue is now known as Hackathon, nihiliad left
Hackathon Sorry for the delay. Our total this hour is...£10000 worth in bug fixes! (€96323, the equivalent in USD is 72 million digits long!) 19:25
Thanks to our volunteers, and remember, our robot operators are standing by for YOUR bug reports! 19:26
19:26 Hackathon is now known as lue 19:28 rgrau joined 19:37 wolf2k_ubuntu joined 19:41 maerline joined, maerline left, maerline joined, maerline left
colomon What madman turned arith.t back on? :) 19:44
hackathon++ 19:46
19:48 Apocal left 19:53 colomon left 20:07 jmarti left
lichtkind jnthn: do you want a beer too? 20:10
20:16 kensanata joined 20:21 clintongormley left 20:29 amenhotep joined 20:34 arlinius joined 20:36 kensanata left, kensanata joined 20:42 [synth] left 20:44 akl left, akl joined, akl left, akl joined 20:53 akl left 20:54 Su-Shee left, akl joined 20:55 synth joined 21:04 pmurias joined
pmurias hi 21:04
diakopter hi
:)
21:06 robertml left
lichtkind pmurias: cheers 21:12
diakopter: how is sprixel doing?
diakopter lichtkind: nicely, lately 21:26
lichtkind great
diakopter stage0 (the nqp-rx work-alike written in C#) is coming along...
typed declarations and assignment of primitives working. 21:27
21:27 payload joined
diakopter I strongly believe the grammar/compiler system to be flexible enough to support a full STD/Cursor workalike, without refactorings. 21:28
lichtkind diakopter: what is cursor?
diakopter ... without *further* refactorings, I mean.
lichtkind :)
diakopter the parser engine that STD.pm uses; svn.pugscode.org/pugs/src/perl6/Cursor.pmc
sprixel stage0 is ending up being basically an implementation of the strongly-typed/functional subset of Perl 5, with some Perl 6 stuff thrown in, plus Grammars, plus string eval 21:30
all invocations statically resolvable (no reason to have more than 1 [additional] layer of dispatchers)... oh, and CIL type declarations (fields, methods, constructors, single-inheritance). struct (CIL value type) declaration should be feasible as well. 21:33
so, all the subsets of Perl 6 that can be mapped directly (transliteratable) to CIL on the CLR.
plus closures & continuations, which my compiler is handling specially. 21:34
currently stage0 is compiled from in-memory structures to CIL (in-memory), and JITted, and executed, and then stage0 has enough API access/visibility to then compile the next stage (from the user input) to CIL (and then JITted), and then executed. 21:37
on *every* invocation.
lichtkind slowly please , my brain is in beer mode 21:38
japhb
.oO( What would a "beer in brain mode" be like? )
diakopter ... which adds about 0.5s to compile stage0 on every invocation. Once stage0 is compiled to disk, that 0.5s will drop to 0.01s or so.
(assuming nothing else is added to the compiler :P) (so, obviously, it'll get slower as I type more) 21:39
japhb
.oO( Ale that makes you smarter? )
lichtkind diakopter: sounds great , where lies the code? 21:40
japhb: als in de is hard to get 21:41
japhb lichtkind, so what is common then? 21:42
lichtkind japhb: beer :) but i seldom drink it :)
diakopter lichtkind: it's at csmeta.googlecode.com
lichtkind diakopter: thanks most of what i did was: www.perlfoundation.org/perl6/index.cgi?timeline
japhb never was skilled at "frothy alcoholic beverage" taxonomy 21:43
Amateur brewers in friends and family have attempted to educate me, but most of it went in one ear and out the other. :-) 21:44
s/in/amongst/
lichtkind diakopter: mberend wrote for you some nice article , if you would just check it www.perlfoundation.org/perl6/index.cgi?sprixel
diakopter I read it; it's fine 21:45
lichtkind great 21:46
diakopter: thanks
its about time that we build up some good readavble content
diakopter: should i mention sprixel in the timeline? 21:47
21:47 UnGato joined
diakopter lichtkind: nah, not yet 21:48
21:48 UnGato left
diakopter ask pmurias if he thinks you should mention mildew... 21:48
lichtkind diakopter: its already mentioned
diakopter oh
lichtkind smop and mildew 21:49
21:49 szbalint joined
lichtkind diakopter: is mildew done by pmurias? i thought it was ruoso? 21:51
diakopter pmurias took it over 1.5 years ago 21:52
lichtkind ah thanks, so my msg that ruaso started is was wright
i just used pugs logs
diakopter they worked together on it, I think
ask him :P
lichtkind :)
pmurias: ping
21:53 alester joined
lichtkind diakopter: oh pmurias submited initial 21:53
21:54 fridim joined
lichtkind diakopter: you was right 21:54
diakopter well, there was a fork/rewrite/replace somewhere in there, iirc 21:56
22:03 masak joined
lichtkind diakopter: do you know why cursor has ending pmc not pm? 22:03
22:04 Apocal joined
arnsholt masak: It turns out "gift" and "gifte" are actually related 22:04
masak arnsholt: first being 'poison'?
arnsholt Yes
masak so, that's no:'gift' and no:'gifte'? :)
arnsholt Yep 22:05
masak sv:'gift' and sv:'gifta' :)
arnsholt Yeah
So I think it has to be a case of renaming something unmentionable, like the Furies being called the kindly ones
moritz_ arnsholt, jnthn, baest: video.google.com/videoplay?docid=-8...6198824415
masak I misremembered about the tattoos. it meant 'green rice'. www.hanzismatter.com/2004/12/green-rice.html 22:06
22:06 Sarten-X left
masak he really wanted the combined character, which means 'essence'. 22:06
jnthn oh hai
I has a return. 22:07
masak whoa: lumberjaph.net/blog/index.php/2010/...a-preview/
masak tries to find himself in that graph
the Perl 6 people are actually in the upper left. :) 22:08
moritz_ masak: given/when vs. hashes benchmark: 0m10.644s vs 0m9.167s for 100 iterations 22:09
masak moritz_: huh. not that significant... :/ 22:10
moritz_ masak: yes, I was quite disappointed 22:14
maybe I screwed up the benchmark... just a sec
22:15 xomas_ joined
lisppaste3 moritz_ pasted "Speed comparison hash vs. given/when" at paste.lisp.org/display/96069 22:16
moritz_ masak: that's the code
masak yup. 22:17
22:17 wolf2k_ubuntu left
masak I need to write a cranky editorial about the absurdity of Perl 6 having "missed the boat." 22:19
22:20 levengli joined, levengli left
lichtkind [23:23:36] Herbert Breunung: side effect free language will have only one effect: make your CPU hot :) 22:23
masak that's an unusually narrow definition of 'side-effect-free'. 22:24
22:24 IllvilJa left
lichtkind but true :) 22:24
masak: what you means by missed the boat?
masak lichtkind: actually, I'm just spreading a meme already being spread by spam bots on Twitter. 22:25
moritz_ (which resulted in perlbuzz.com/2009/08/perl-6-has-not...-boat.html - the point being that there is no boat that could be missed)
jnthn It accidentally all over Twitter. 22:26
masak lichtkind: but seriously, if you don't consider calculating an actual result a side effect, then what you quoted isn't actually true.
alester "I'm finally working on my "handy responses for Perl 6 sniping" cheat sheet. I'll post it soon!" 22:27
masak the word 'side effect' means it's to the side of the main effect, which is calculating the result.
alester What buffoon wrote THAT promise?
moritz_ which promised?
masak alester: no idea :)
moritz_ must have missed the boat... err, context :-)
lichtkind masak: sounds like a good wiki article :9
masak lichtkind: en.wikipedia.org/wiki/Side_effect_(...r_science)
lichtkind masak: the main argument was since even printing has side effects ther ewill nothing visible in side ffect free lang except cpu temperature 22:28
masak lichtkind: is this argument deliberately missing the point, or is it just dumb? 22:29
moritz_ lichtkind: that's the nice thing about *lazy* side-effect free languages - they don't even heat the CPU :-)
lichtkind :)
masak: since the argument by Hejlsberg i think it was ment as a joke 22:30
masak lichtkind: but you never know, due to Hejlsberg's uncertainty principle...
lichtkind that was heisenberg i think :) 22:31
masak we don't know that either :)
lichtkind haha
moritz_ the nice the about mathematics and logic is that there are uncertainties you can be certain about 22:32
masak yes, after the disappointment it can be kind of a relief. 22:34
unless your goal really was omniscience... 22:35
moritz_ in which case you didn't learn your lessons from mathematics
it's like trying to solve and integral that doesn't exist
masak been there, done that :/ 22:36
moritz_ hugme: tweet rakudoperl intermediated outcome of the #perl6 hackathon in Copenhagen: a plan for module implementations at tinyurl.com/s11rakudo
hugme hugs moritz_; tweet delivered
masak \o/
moritz_ E2LATETOSPEL 22:37
22:39 IllvilJa joined 22:47 iblechbot left 22:48 Jedai left 22:51 Jedai joined
pugssvn r29992 | jnthn++ | [t/spec] Revise tests in light of list changes and unfudge a couple of tests master passes but alpha didn't. 22:55
23:07 PacoLinux left 23:09 SmokeMachine left
pmurias lichtkind: pong 23:09
lichtkind ah
pmurias: i mentioned you at www.perlfoundation.org/perl6/index.cgi?timeline 23:10
pmurias: please check and i would also have more info for www.perlfoundation.org/perl6/index....wel_murias
mschnlnine.vo.llnwd.net/d1/ch9/2/4/...cy_ch9.wmv this talk is great 23:13
its also about the basic problems perl 6 taps into
and what larry wants to do hejlsberg is afraid to do :) 23:14
masak Perl 6 taps into problems?
lichtkind no way :)
dalek kudo: d802ffd | jonathan++ | src/builtins/control.pir:
Fixes with nextwith and callwith method detection - use a heuristic that works even for those methods written in PIR.
kudo: a1f4ac9 | jonathan++ | src/glue/subset.pm:
Fixes to subsets so we can chain them and they check the base type.
kudo: 5ec2c96 | jonathan++ | t/spectest.data:
Re-enable subset.t, which passes some tests alpha never passed. :-)
lichtkind jnthn++
masak: yes i was talking about the problem that iy you want to allow to make DSl on runtime you have to grant them acess to the AST or wven parser and thats was aders too afraid 23:16
masak we were talking about some issues related to that over breakfast. 23:18
moritz_ we were actually talking about what kind of objects a quasi quote returns, and if they are like closures, and if you can apply them at run time 23:19
masak something like: if you're able to pass quasiquotes around between different lexical scopes... yes, what moritz_ said.
moritz_ the answers were basically "dunno, some type", "not really" and "no"
lichtkind :)
masak they are AST types.
moritz_ types? or just one type? 23:20
masak dunno, some type(s). :)
PAST has a handful of types, so I wouldn't rule out there being several for quasi-generated ASTs as well. 23:21
(even though PAST and the quasi structures are quite different beasts)
23:25 hejki left 23:26 rv2733 left
lichtkind pmurias: no addons? 23:29
23:30 avar left 23:32 hejki joined 23:34 pmurias left 23:36 snarkyboojum left, hercynium joined
pugssvn r29993 | jnthn++ | [t/spec] Unfudge a couple more subest tests that we can pass now. 23:39
23:40 masak left
arnsholt moritz_: Finally watched that Guy Steele talk 23:40
That was brilliant 23:41
23:41 avar joined
jnthn OK, sleep time for me...night o/ 23:41
23:43 mikwss joined
dalek kudo: 2139748 | jonathan++ | src/Perl6/Grammar.pm:
Make my subset ... parse.
23:43
23:43 mikwss left 23:48 snarkyboojum joined 23:49 am0c joined
moritz_ before jnthn's commit we had 26664 passing tests 23:53
23:54 alester left 23:57 kensanata left