»ö« | perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is your friend!
Set by Tene on 14 May 2009.
00:02 lichtkind left 00:07 araujo joined 00:08 araujo left 00:18 frew joined 00:27 araujo joined 00:29 ruoso left, ruoso joined 00:32 [particle]1 left 00:33 frew left 00:34 Chillance left 00:39 araujo left 00:41 araujo joined
dalek kudo: b516413 | pmichaud++ | src/ops/perl6.ops:
Add root_new dynop.
00:47
kudo: 20ec24c | pmichaud++ | src/builtins/ (11 files):
Convert new of parrot-based things to root_new (src/builtins)
kudo: 6079a97 | pmichaud++ | src/classes/ (20 files):
Convert new of parrot-based things to root_new (src/classes)
kudo: 064be63 | pmichaud++ | src/ (4 files):
More new -> root_new conversions.
kudo: f08f5ad | pmichaud++ | :
Merge branch 'master' of [email@hidden.address]
00:56 ruoso_ joined 00:57 ruoso left 01:01 bacek joined 01:08 M_o_C left 01:09 frew joined 01:14 ruoso_ left, ruoso_ joined 01:15 agentzh left 01:18 Whiteknight joined 01:20 agentzh joined 01:22 Lorn joined 01:23 Lorn left 01:24 Lorn joined 01:41 ruoso_ left 01:42 ruoso_ joined 01:44 cognominal left 01:58 cotto left 01:59 alc joined 02:01 cotto joined 02:10 Whiteknight left, ab5tract joined 02:12 kst left, hercynium left, kst joined, ruoso_ left 02:14 ruoso_ joined 02:19 frew left, viirya joined 02:22 felipe left 02:27 mikehh_ joined 02:32 frew|wor1 joined 02:33 [particle]1 joined 02:37 sri_kraih left, sri_kraih_ joined 02:40 ruoso_ left, frew|wor2 joined 02:41 eternaleye joined 02:43 mikehh left 02:52 japhb left 02:54 frew|wor1 left 02:56 meppl left 03:10 bacek left, frew|wor2 left 03:11 frew|wor1 joined 03:20 donaldh left, donaldh joined 03:32 eternaleye left 03:33 ab5tract left 03:46 orafu left, orafu joined 03:49 FurnaceBoy left 03:53 justatheory joined 03:58 alc left 04:02 viirya left, viirya joined 04:07 viirya left 04:11 eternaleye joined 04:12 felipe joined
PerlJam ping 04:30
04:31 cotto left 04:33 cotto joined
pmichaud pong 04:36
04:37 justatheory left
PerlJam What does rakudo do when the info from parrot_config is wrong? (i.e., it says the bin_dir is /usr/local/bin, but if you haven't installed parrot, then that's probably not right) 04:38
pmichaud afaik, rakudo doesn't use bin_dir
wait, I'll rephrase 04:39
rakudo always assumes you're working from a build copy of parrot, and not an install copy.
if you try to build rakudo using an installed parrot, you'll get EPIC FAIL
PerlJam so ... when Configure.pl's usage says "Use configuration information from config", it means "...except for the location of the parrot and pbc_to_exe executables" > 04:40
04:40 finanalyst joined
PerlJam (because of the EPIC FAIL you just mentioned) 04:41
pmichaud no, it uses the location of the parrot and pbc_to_exe from parrot_config
at least, I think it does.
ah, I was originally correct -- Rakudo doesn't use @bin_dir@
it currently bases everything off of @build_dir@
04:43 skids left
pmichaud (details are in build/Makefile.in) 04:43
PerlJam Well, mine really isn't a rakudo problem. I was looking at cardinal, and it's makefile really does use everything from parrot_config, but some of those things are lies if you don't have an installed parrot. I'm trying to figure the best approach ... emulate rakudo or try to stay true to the spirit of really using what parrot_config says, but have some way of overriding it.
pmichaud as soon as Parrot has its install house in order (which does appear to be happening rsn), then rakudo's configuration will likely be very clean. 04:44
PerlJam how s is rsn?
pmichaud I'm not sure what cardinal is using for its build environment. Where's it located these days...?
rsn = ~7 days, I'd guess.
PerlJam hasn't really kept up with parrot lately other than to note that there was a release recently :) 04:45
pmichaud partcl has also been having trouble building with parrot/installed parrot, but I think allison++ and Coke++ are making good progress on it
PerlJam github.com/cardinal/cardinal/tree/master
pmichaud and partcl's blockers seem to be the same as rakudo's blockers
PerlJam once again Coke++ bravely paves the way for others :-) 04:46
pmichaud yes, this has been noted. :-)
04:46 payload left
pmichaud Cardinal seems to use the "installable_cardinal" rules; I've never liked those much. 04:47
seems to me that there should be a "cardinal" that just works.
04:53 justatheory joined 05:01 finanalyst left 05:02 japhb joined 05:06 justatheory left
Tene I didn't write most of the cardinal makefile... I'd *love* for someone to clean it up. 05:26
pmichaud I'm waiting for parrot's install target to evolve just a bit more, then I'm going to port Rakudo's build process to the create_language.pl script and say "This is how I really recommend everyone else manage it :-)" 05:27
05:27 frew|wor2 joined, frew|wor2 left 05:32 mikehh_ is now known as mikehh
Matt-W It would be nice to build against installed parrot 05:36
pmichaud Agreed, it would be nice. 05:37
05:37 frew|wor2 joined
Matt-W Not hugely important right now though 05:40
As long as rakudo keeps needing updated parrots
pmichaud correct.
I don't expect that situation to change until Jul/Aug at the earliest.
05:43 frew|wor1 left
Matt-W That's okay, Christmas isn't in August :) 05:45
05:45 frew|wor1 joined 05:48 kst left, kst joined
Matt-W waking up an hour early really sucks 05:51
pmichaud worse than waking up an hour late? 05:52
Matt-W Yes
I have leeway to be late to work
I can't be much earlier than my usual time though
And everything I want to do at home right now is really noisy - it's too early to disturb the neighbours by re-recording vocal tracks for my current project
Ah well 05:56
Nice weather, I can go for a walk
05:56 eternaleye left 05:58 frew|wor2 left 06:00 cognominal joined 06:10 hcchien_ joined, hcchien left
pmichaud well, too tired to reliably do the release tonight (before sleep), so I'll handle it early tomorrow morning. 06:13
later # sleep 06:14
06:15 eternaleye joined
Tene pmichaud: ping 06:15
06:15 frew|wor1 left
Tene pmichaud: you maintain paraplegic, iirc? can I get commit there? 06:15
aw, just missed him :(
dalek kudo: e6b4630 | pmichaud++ | docs/ROADMAP:
Update ROADMAP.
06:28 clkao_ joined, clkao left 06:35 clkao joined, clkao_ left 06:39 Jedai left 06:40 iblechbot joined 07:01 ejs joined 07:04 clkao_ joined, clkao left 07:06 araujo left 07:13 amoc joined 07:20 donaldh left, donaldh joined 07:24 araujo joined 07:26 araujo left 07:40 smtms left 07:42 ejs1 joined, ejs1 left 07:46 jferrero joined 07:59 Su-Shee joined
Su-Shee morning all. 07:59
Matt-W Good morning Su-Shee 08:00
08:00 araujo joined 08:05 kst left, kst joined 08:08 donaldh left 08:23 hcchien_ is now known as hcchien 08:25 pmurias joined 08:26 dakkar joined 08:29 DemoFreak joined 08:44 bacek joined 08:53 PZt left 08:55 agentzh left 09:07 finanalyst joined 09:09 agentzh joined 09:10 araujo left
jnthn morning 6folk 09:12
sbp hey jnthn 09:18
09:19 araujo joined
jnthn rakudo: sub infix:<wtf>($a, $b) { $a ~ "WTF" ~ $b }; my $x = 'OMG'; $x wtf= 'BBQ'; say $x; 09:20
p6eval rakudo e6b463: OUTPUT«OMGWTFBBQ␤»
jnthn How...delightful. 09:21
09:22 kst left, kst joined 09:23 masak joined
masak jnthn++ # meta-userops 09:23
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
masak @messages
lambdabot TimToady said 1d 10h 7m 56s ago: STD isn't trying to be a full POD parse yet, and I don't think writing the specs for it via the bug reporting system is going to be terribly efficient :)
masak @clear
lambdabot Messages cleared.
jnthn oh hai masak 09:24
masak oh hai jnthn
jnthn: I'm ashamed to admit that (just as with the parameterized roles) I realise that the userops are TEH COOLNESS, but I can think of no immediate application for them. 09:25
need to think some more, I guess.
09:26 pmurias left
jnthn masak: Well, I didn't see many people using user defined ops just yet either. 09:26
But if we get a set union operator from some Set module that is ∪
Then I guess you'd get 09:27
$set ∪= $other_set; # union of myself and another set
masak yes, that's kinda nice.
jnthn $union = [∪] @sets; # union of many sets
masak would probably want Latin-1 fallbacks to those as well.
jnthn Both of which I could see being useful.
09:28 PZt joined
masak that latter one is way cool. 09:28
jnthn u, n ;-)
masak oh, I should really pick some set-intensive well-known algorithm and blog about how it can be written in Perl 6.
masak goes off to put laundry in machine
09:31 zpmorgan joined 09:32 DemoFreak left
dakkar rakudo: sub R { @_.join '-' }; sub RR { @_.join '_' }; say 'x' R 'y'; say 'x' RR 'y'; 09:32
p6eval rakudo e6b463: OUTPUT«Statement not terminated properly at line 1, near "'-' }; sub"␤in Main (src/gen_setting.pm:0)␤»
dakkar rakudo: sub R($a,$b) { $a ~ '-' ~ $b }; sub RR($a,$b) { $a ~ '_' ~ $b }; say 'x' R 'y'; say 'x' RR 'y'; 09:33
p6eval rakudo e6b463: OUTPUT«Statement not terminated properly at line 1, near "R 'y'; say"␤in Main (src/gen_setting.pm:0)␤»
jnthn dakkar: infix:<R>
dakkar argh, right
Matt-W Morning
jnthn hi Matt-W
masak dakkar: interesting idea. :)
dakkar rakudo: sub infix:<R>($a,$b) { $a ~ '-' ~ $b }; sub infix:<RR>($a,$b) { $a ~ '_' ~ $b }; say 'x' R 'y'; say 'x' RR 'y';
Matt-W jnthn: nice rakudo day work yesterday :) 09:34
p6eval rakudo e6b463: OUTPUT«x-y␤x_y␤»
masak Matt-W: hola, early riser. :)
Matt-W masak: it wasn't by choice, it was by worry
masak Matt-W: sorry about the car, btw.
dakkar now, apart from "don't do that", what should happen?
masak dakkar: try it! :)
Matt-W masak: at least they've recovered it, things can move on now 09:35
masak: and one in custody too
masak dakkar: "don't do that" only applies after you've found out that what happens is really not what you want. :)
Matt-W: oh! a found stolen car. wow.
Matt-W masak: not all that unusual... especially when the thief crashes it 09:36
masak senses there were drugs involved
Matt-W (into somebody else's car. In front of a police community support officer.)
dakkar masak: fair enough. the general question is: what should P6 do when meta-generated operators clash with user-defined subs? I *think* rakudo is doing a sensible thing, btw
masak dakkar: me too. 09:37
jnthn dakkar: Your definition just happens later and wins atm, but it's a little more ty accident than it perhaps should be.
masak depends on whether the auto-defined RR is considered a real sub. then it should perhaps complain.
jnthn Well, it's a real sub. Question is if we make it a multi...
But in that case we woulda got a failure here.
I'm not sure. The spec may have answers. 09:38
But I don't remember seeing any.
pmichaud++ # updated roadmap 09:39
09:39 clintongormley joined
masak runs to check 09:40
rakudo: sub foo($a?) { say ?$a }; sub bar(@a?) { say ?@a }; sub baz(%a?) { say ?%a }; foo(); bar(); baz(); foo(1); bar([1]); baz({1=>2})
p6eval rakudo e6b463: OUTPUT«0␤0␤0␤1␤1␤1␤»
masak maybe I should content myself with this answer to the question "how do I check whether a param was passed?"
(even though it'll give a false negative when empty arrays/hashes are passed.) 09:41
jnthn masak: It's got a kind of symmetry to it. ;-)
masak jnthn: that's what I thought, too!
jnthn: good way to remember/explain it.
09:42 bacek left
dakkar rakudo: sub foo($a?) { say ?$a }; foo(0) 09:42
p6eval rakudo e6b463: OUTPUT«0␤»
masak dakkar: ah, another false negative. 09:43
that's why I'd really prefer something like $param.defined
dakkar eh, it's the same problem of checking for truth intead of definedness
yeah
but it's still slightly wrong
masak aye.
it's "out-of-band", as someone pointed out.
dakkar is there so way to get at the capture that was passed in?
masak maybe it should really be a macro, like .WHAT 09:44
dakkar the capture should know which elements it has
masak dakkar: nice idea.
&*PROCEDURE.capture or something?
dakkar $?CAPTURE{a}.present, $CAPTURE[2].present, something like that (hand-wave, hand-wave)
or whatever, yeah 09:45
masak ah, &?ROUTINE
dakkar jnthn: about the meta-operator collision thing, S03 says that you can't modify with '!' forms that start with '!', and you can't modify with '=' forms that end with '=' 09:46
jnthn dakkar: Ah, OK, so should probably be an error or some thing for those. 09:47
09:47 Casan joined
masak submits rakuodbug 09:47
dakkar rakudo: sub infix:<R>($a,$b) { $a ~ '-' ~ $b }; say 'x' R 'y'; say 'x' RR 'y'; 09:48
p6eval rakudo e6b463: OUTPUT«x-y␤y-x␤»
jnthn 1) Implement feature. 2) Tell masak. 3) Get bug reports. :-) 09:50
masak++
masak :P
(getting karma for OCD-ish behaviour)++
dakkar: I'm having second thoughts about your interpretation of the scriptures... um, specs. 09:52
dakkar masak: second thoughts are good 09:53
masak hard to put them into words, though.
granted, R is in the same category as = and !
but defining infix:<R> shouldn't be a problem. that's like defining infix:<!> or something. 09:54
dakkar and we wouldn't want to prevent the use of R with operators starting with R
masak is too confused to explain 09:55
I'll just leave the bug report as it is, and let this sort itself out somehow :)
09:55 cognominal left
jnthn going to do natural language study for a bit; back later 09:56
09:57 M_o_C joined 10:03 icwiener joined 10:09 jan_ left 10:10 viirya joined 10:33 cognominal joined 10:36 kate21de joined 10:38 [particle]2 joined 10:40 [particle]3 joined
pugs_svn r26898 | masak++ | [u4x/P2T1A] fixed typo 10:41
r26899 | masak++ | [u4x/TODO] added jdlugosz++' med_loop
10:42 meppl joined 10:47 zamolxes joined 10:51 windsok joined 10:55 [particle]1 left 10:57 viirya left 10:58 [particle] left 11:08 payload joined 11:13 zamolxes left, M_o_C left 11:16 M_o_C joined 11:19 [particle]3 left 11:20 donaldh joined 11:29 [particle] joined 11:30 Jedai joined 11:33 [particle]1 joined 11:35 mizioumt joined 11:40 [particle]2 left 11:45 masak left 11:46 jonalv joined
jonalv uhm what does: "Method 'postcircumfix:{ }' not found for invocant of class 'Failure'" mean? :) 11:46
jnthn You tried to index into something as if it was a hash, but it's not actually a hash.
rakudo: my $foo; say $foo<x> # $foo is undefined, not something hash-ish 11:47
p6eval rakudo e6b463: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤»
jonalv jnthn: hm intresting. I am pretty sure that the hash I am indexing should be an hash... 11:48
jnthn jonalv: Well, you could always have hit upon a compiler bug of some kind too. 11:50
Feel free to paste any code example you have that exhibits the problem.
jonalv jnthn: yea well it's not very clean code but if you wanna see it, sure... 11:51
pastebin.com/f316fbdb5 11:53
buubot jonalv: The paste f316fbdb5 has been copied to erxz.com/pb/17735
11:55 pmurias joined
jnthn jonalv: Did you get a line number where it's failing? 11:56
jonalv jnthn: no, but line 102 is the last output 11:58
jnthn jonalv: Oh, if I try to run it here I fail because of curl not being found :-( 12:02
jonalv jnthn: :(
jnthn jonalv: Are you running latest Rakudo? The error line reporting improvements only went in very recently...
jonalv jnthn: nope, I am not. I had help from masak to set this up and he is not here to help me now :) 12:03
jnthn Ah.
jonalv: I'm struggling to see exactly where it's failing. It doesn't look wrong. 12:04
I suggest stick a print statement in before for @keys -> $name { to see if we make it so far as the loop. 12:05
12:05 masak joined
masak rehi 12:05
jonalv: I'll start by backlogging.
jnthn masak: lol halp
12:05 mizioumt1 joined
masak jnthn: I'm on it. :) 12:05
jnthn masak++ 12:06
jonalv masak: there you are :) You have that curl thingie right? :)
masak jonalv: let me backlog first. :)
jonalv masak: beer at bmc 18:00 btw :)
masak jonalv: dude, that is seriously OT. :P
(but thanks) 12:07
jonalv masak: might be but also seriously important :)
jnthn beer!
12:07 kane___ left
masak jonalv: I'd bet jnthn would agr... aye. :) 12:07
jnthn oh, wait, probably too far for me to travel.
masak jnthn: also, Sweden, thus expensive. 12:08
jonalv: ok. what has changed since the script didn't complain about 'curl' not being found? 12:09
jnthn masak: I think the real problem is the postcircumfix issue, not the curl one.
masak fair enough. 12:10
jnthn masak: I can't just get to the point where jonalv sees the failure because I don't have curl.
masak jnthn: aha, jonalv has curl, jnthn doesn't. gotcha.
jnthn: (what kind of operating system doesn't have curl?) 12:11
s/operating system/distribution/ :P
jonalv masak: well I seem to remember us installing it on my machine...
jnthn Hah!
masak I sit corrected. 12:12
ok, running script...
Su-Shee masak: i don't have. because I usally choose wget.
jonalv jnthn: well we don't get as far as that loop no
masak jonalv: that example.xml file, is it important? 12:13
oh, wait.
jonalv: you probably don't want to hard-code the path like you do now.
jonalv masak: lol although the name is really bad, Yes it's important it contains all the data..
masak jonalv: it's enough just to write it to $CWD.
jonalv is thinking that masak could come over and do this face2face instead... 12:14
masak: what's $CWD? :)
masak jonalv: it's where you 'are' in the directory structure. 12:15
jonalv masak: handy
masak jonalv: it's in %*ENV, though, not a Perl 6 var per se.
jonalv: I would come over, but I need to Do Some Things(TM) first. 12:16
12:16 justatheory joined
jonalv remembers spending long time fiddling with paths in Java. Perl++ 12:16
masak ah, I have now reproduced the error.
jnthn masak: Does latest Rakudo give a line number for it? (should do...) 12:17
masak jnthn: not here. latest-latest or yesterday-ish?
jnthn Yesterday-ish. 12:19
masak: The fix was actually in Parrot though. 12:20
masak: So if you didn't already do so, make sure you have latest version of that.
masak jnthn: I usually update/recompile Parrot when recompiling Rakudo.
jnthn ok, then hmm
12:21 mizioumt left 12:23 pmurias left
masak jnthn: your error occurs in the big %orePrices hash assignment somewhere. 12:24
12:25 ruoso joined
masak jnthn: you declare %prices, but never put any values in it. 12:25
rakudo: my %prices; say (1000 * %prices<Tritanium>) / 333
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤0␤» 12:26
masak question is why we don't just get that...
oh, sorry, there is actually data put into %prices on line 86. 12:29
jonalv masak: maybe you are talkign to me? %prices are populated at row 87
masak yes, just saw that...
ruoso Hello!
masak ruoso: y0!
jnthn masak: tab completion doesn't quite ahve psychic powers yet ;-) 12:30
ok, I need to eat, and then it's time for Slovak class. 12:31
masak jnthn: it doesn't exactly help my brain that you have the same first name. :/
jnthn masak: Well, you can call our mothers to complain... ;-)
masak jonalv: (got it right this time) ok, separating out the %orePrices decl, and prepending it with an empty %prices decl reproduces the error. 12:32
jnthn "Didn't you know names should be a GUID?"
masak jonalv: it gives 12 "Use of uninitialized value", and then dies with the postcircumfix:{ } thing.
masak counts 12 hash indexings
jonalv: hah! found it! :) 12:33
jonalv: &prices<Nocxium>
(note the '&')
jonalv masak: aouch
masak jonalv: don't you use Ctrl+Y?
jonalv masak: I guess not... :( 12:34
masak rakudo: say &prices.WHAT
p6eval rakudo e6b463: OUTPUT«Failure()␤»
masak jonalv: there you go.
jonalv masak: thankyou :)
masak you'rewelcome :)
jnthn bbiab
jonalv oh masak++ :)
masak @karma masak 12:35
lambdabot You have a karma of 190
masak jonalv: guess I spend quite some time here on #perl6 :)
jonalv masak: I don't need to guess... :)
masak @karma jonalv 12:36
lambdabot jonalv has a karma of 1
masak jonalv++ # welcome gift
jonalv :)
masak jonalv: your script now runs to completion here. 12:43
jonalv masak: here too, the LaTeX output is not ideal though. Something to do after I have grabbed some food :)
12:49 justatheory left
finanalyst my %x=<a b c>Z(1,2,3);%x.perl.say 12:53
rakudo:my %x=<a b c>Z(1,2,3);%x.perl.say
rakudo: my %x = map { $_ => <a b c> Z (1,2,3) },<one two three>;%x.perl.say
p6eval rakudo e6b463: OUTPUT«Odd number of elements found where hash expected␤in Main (/tmp/6j9EMBdynd:1)␤»
12:53 smtms joined
finanalyst rakudo: my %x=<a b c>Z(1,2,3);%x.perl.say 12:54
p6eval rakudo e6b463: OUTPUT«{"a" => 1, "b" => 2, "c" => 3}␤»
finanalyst is the problem here to do with autovivication?
12:55 PacoLinux_ joined 12:56 PacoLinux left, PacoLinux_ is now known as PacoLinux
dakkar rakudo: my %x = map { $_ => ( <a b c> Z (1,2,3) ) },<one two three>;%x.perl.say 12:56
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤No applicable candidates found to dispatch to for 'map'␤in Main (/tmp/znKmuOytpj:1)␤»
dakkar hmm
12:56 riffraff joined
dakkar rakudo: my %x = <one two three>.map: { $_ => ( <a b c> Z (1,2,3) ) };%x.perl.say 12:57
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤Parameter type check failed; expected something matching Callable() but got something of type Hash() for expr in call to map␤in method Any::map (src/gen_setting.pm:30)␤called from Main (/tmp/aHjGf0l7eE:1)␤»
dakkar rakudo: my %x = <one two three>.map: -> { $^a => ( <a b c> Z (1,2,3) ) };%x.perl.say
p6eval rakudo e6b463: OUTPUT«Cannot use placeholder var in block with signature. at line 1, near " => ( <a b"␤in Main (src/gen_setting.pm:1959)␤»
dakkar rakudo: my %x = <one two three>.map: -> ($a) { $a => ( <a b c> Z (1,2,3) ) };%x.perl.say
p6eval rakudo e6b463: OUTPUT«Statement not terminated properly at line 1, near ": -> ($a) "␤in Main (src/gen_setting.pm:0)␤»
dakkar shows to the world that he did not keep up with the last several months of synopses… 12:58
masak rakudo: my %x = <one two three>.map: -> $a { $a => ( <a b c> Z (1,2,3) ) };%x.perl.say 12:59
p6eval rakudo e6b463: OUTPUT«{"one" => ["a", 1, "b", 2, "c", 3], "two" => ["a", 1, "b", 2, "c", 3], "three" => ["a", 1, "b", 2, "c", 3]}␤»
masak rakudo: my %x = <one two three>.map: { $^a => ( <a b c> Z (1,2,3) ) };%x.perl.say
p6eval rakudo e6b463: OUTPUT«{"one" => ["a", 1, "b", 2, "c", 3], "two" => ["a", 1, "b", 2, "c", 3], "three" => ["a", 1, "b", 2, "c", 3]}␤»
masak dakkar: et voila.
finanalyst why does this work and the original not? 13:00
masak finanalyst: which original?
finanalyst: the one with '-> { $^a' ?
dakkar no, his one :)
finanalyst my %x = map { $_ => <a b c> Z (1,2,3) },<one two three>;%x.perl.say
dakkar I was just failing miserably at making it work
masak finanalyst: might be something with '=>` and 'Z'. try using parens. 13:01
finanalyst rakudo: my %x = map { $_ => (<a b c> Z (1,2,3)) },<one two three>;%x.perl.say 13:02
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤No applicable candidates found to dispatch to for 'map'␤in Main (/tmp/myvW4MQPhR:1)␤»
finanalyst rakudo: my %x = map { $_ => %(<a b c> Z (1,2,3)) },<one two three>;%x.perl.say
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤No applicable candidates found to dispatch to for 'map'␤in Main (/tmp/uuw4BOcTsy:1)␤»
masak finanalyst: I know what's going on. 13:03
finanalyst: the {} after the map: is interpreted as a Hash, not a Code.
finanalyst yes that has happened to me several times. How to disambiguate? 13:04
masak rakudo: say { $_ => (<a b c> Z (1,2,3)) } ~~ Code 13:05
p6eval rakudo e6b463: OUTPUT«Use of uninitialized value␤0␤»
masak rakudo: say {; $_ => (<a b c> Z (1,2,3)) } ~~ Code
p6eval rakudo e6b463: OUTPUT«1␤»
masak finanalyst: like that :)
13:05 riffraff left
finanalyst thanx 13:05
masak np.
finanalyst rakudo: my %x = map {; $_ => <a b c> Z (1,2,3) },<one two three>;%x.perl.say 13:06
p6eval rakudo e6b463: OUTPUT«Odd number of elements found where hash expected␤in Main (/tmp/HREsTyviY0:1)␤»
masak (I think this will be one of the big traps in using map)
finanalyst: parens.
finanalyst rakudo: my %x = map {; $_ => (<a b c> Z (1,2,3)) },<one two three>;%x.perl.say
p6eval rakudo e6b463: OUTPUT«{"one" => ["a", 1, "b", 2, "c", 3], "two" => ["a", 1, "b", 2, "c", 3], "three" => ["a", 1, "b", 2, "c", 3]}␤»
finanalyst but why [] and not {} after keys? 13:07
eg. "two" => ["a", 1, "b", 2, "c", 3],
masak finanalyst: because the values you put in are anon Lists.
finanalyst rakudo: my %x = map {; $_ => %(<a b c> Z (1,2,3)) },<one two three>;%x.perl.say 13:08
p6eval rakudo e6b463: OUTPUT«{"one" => {"a" => 1, "b" => 2, "c" => 3}, "two" => {"a" => 1, "b" => 2, "c" => 3}, "three" => {"a" => 1, "b" => 2, "c" => 3}}␤»
masak rakudo++
finanalyst need for lots of explanation for map on this. 13:09
masak indeed. 13:12
13:12 DemoFreak joined
masak makes mental note to write this in u4x 13:12
13:22 riffraff joined 13:23 iblechbot left 13:24 ispy_ joined 13:33 lichtkind joined
lichtkind masak: howdy 13:33
masak lichtkind: good day, sir.
lichtkind masak: no formal please, its here mans day so guy drinkin in the woods and normal people sit in front of TFT as always 13:34
masak: still haven't heard from viklund
masak lichtkind: me neither.
13:38 justatheory joined
masak lichtkind: he has periods when he's very busy and AFK. he has a one-year-old daughter. 13:38
lichtkind ah 13:40
13:46 skids joined 13:49 tulcod joined 13:50 jferrero left
lichtkind masak: have you any reciepe to cur emy bad mood :) ? 13:56
13:56 nothingmuch left
masak lichtkind: oh, sure! hold on. 13:56
13:57 nothingmuch joined
masak rakudo: sub infix:<///>($a, $b) { "don't $a, be $b :)" }; say 'worry' /// 'happy' 13:57
p6eval rakudo e6b463: OUTPUT«don't worry, be happy :)␤»
14:00 justatheory left
Matt-W everyone's playing with operators 14:01
rakudo: sub infix:<///>($a, $b) { "don't $a, be $b :)" }; say 'worry' R/// 'happy'
14:01 riffraff left
p6eval rakudo e6b463: OUTPUT«don't happy, be worry :)␤» 14:01
14:03 justatheory joined
lichtkind Matt-W: that doenst rises my mood either :) 14:04
masak rakudo: role HelpYouRelax { method relax() { ... } }; class Beer does HelpYouRelax { method relax() { 'have a beer' } }; class Perl6Hacking does HelpYouRelax { method relax() { 'write some Perl 6 code' } }; say ([Beer, Perl6Hacking].map: { .relax }).join(' and ').ucfirst
p6eval rakudo e6b463: OUTPUT«Have a beer and write some Perl 6 code␤» 14:05
skids pmichaud++ for much more illuminating ROADMAP 14:06
It's like, actually a map now :-)
lichtkind ah evil illuminati
PerlJam skids: does it have a "you are here" sign on it? 14:07
masak looks forward to the journey on the ROADTERRITORY
skids PerlJam: just about. It does actually tell you where things stand. 14:08
PerlJam reads
14:09 exodist joined
masak yes, pmichaud++. the ROADMAP is very informative. 14:09
lichtkind where is the roadmap to be found? 14:10
masak huh, do we expect the heredoc spec to evolve substantially?
lichtkind: Rakudo repo, docs/ROADMAP.
skids docs/ROADMAP
masak github.com/rakudo/rakudo/blob/maste...cs/ROADMAP 14:11
lichtkind masak: thanks i searched in the parrot git 14:12
masak but Parrot uses SVN... :)
lichtkind you know what i mean :) 14:13
PerlJam A, E, and F seem important and not so dependent on parrot changes necessarily 14:14
skids was actually surprised at the high level of activity over on #parrot 14:15
I don't think we should think of Parrot issues as a stone wall.
14:15 Chillance joined
PerlJam I don't. It's just that parrot has a different pace and sometimes different priorities. 14:16
pmichaud good morning, #perl6 14:22
14:22 alester joined
PerlJam good morning pm 14:23
morning alester
alester howdy
jnthn is back
masak pmichaud: good morning. nice ROADMAP! 14:26
jnthn read the roadmap too.
pmichaud masak: it's not that the heredoc specs will change as much as the fact that STD.pm will evolve to support it 14:28
I include STD.pm in "spec" these days.
pmichaud starts building a release tarball candidate. 14:30
masak pmichaud: I see.
pmichaud I do expect to detail out the roadmap just a bit more -- e.g., to give sub-points (H1, H2, H3) to some of the major items and update the tasks to match 14:32
but this was good enough to be able to release :-)
dalek kudo: d163016 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 392 files, 11342 passing, 0 failing
14:34
jnthn rakudo: say "omgz I passes { 11342 - 10467 } more tests this release!" 14:35
p6eval rakudo e6b463: OUTPUT«omgz I passes 875 more tests this release!␤»
14:35 dalek left, dalek joined
PerlJam pmichaud: what does "early Summer 2009" mean? :) 14:38
pmichaud before July 15 14:44
also, note that A (pge refactors) has some big parrot dependencies in the notion that whatever happens there has to be wary of Parrot deprecation issues 14:49
masak: should I add a note to the release announcement that Stockholm.pm is holding a p6 hackathon? 14:51
masak pmichaud: that might be nice. it's on the 29th. do you need the address also? 14:52
pmichaud web address if one is available, yes
masak no URL for the hackathon specifically, I'm afraid. :/ 14:53
pmichaud oh, that's okay then
(yes, I'd still like a url though)
(to stockholm.pm)
pmichaud googles
heh 14:54
masak vic20.blipp.com/pipermail/kameler/2...00316.html
14:54 FurnaceBoy joined
pmichaud the hackathon is announced on stockholm.pm's home page, but since it doesn't have any year information on it someone might think it was done in May 2008 :-) 14:54
14:55 jferrero joined
masak actually, this whole thread is relevant... vic20.blipp.com/pipermail/kameler/2009-April/ 14:55
pmichaud: I could email someone and ask them to add a year to the homepage. 14:56
pmichaud it was more an observation on my part than trying to get it fixed :-)
14:57 nihiliad joined
jnthn masak: HOw many days is the hackathon? 14:58
masak jnthn: one, barely. :)
14:58 eternaleye left
masak Stockholm.pm is a very modest PM group. :) 14:58
it's scheduled from 10:00 to 16:00. 15:00
jnthn :-)
pmichaud 6 hours isn't bad at all :-)
jnthn Aye.
masak also, the necessary ingredients from Oslo (pizza and soft drinks) are there. :) 15:01
15:01 dalek left, dalek joined
pmichaud I suspect several hundred new RT tickets will show up. :-) 15:01
masak and I'm sort of hoping that people will be wowed and want more...
jnthn masak: whatnobeer?
;-)
masak jnthn: only Ubuntu cola has been promised. :)
jnthn masak: I can't make it (virtually or physically) though, I'm afraid. :-(
I'm travelling back from vacation that day. 15:02
Otherwise I'd arrange to at least be on IRC at the same time.
masak jnthn: you'll have to let your work speak for itself on that day. :P
pmichaud I might be able to be around.
I'll put it on my calendar, at any rate.
jnthn
.oO( what do 50 RTs speak like? )
15:03
masak excellent.
jnthn: sounds like a modern Zen riddle.
was the Parrot release delayed somewhat this month? 15:04
pmichaud what time is it in stockholm now? (So I can compute the time offset)
masak pmichaud: five o'clock.
pmichaud okay, 7 hrs (same as usual)
thanks. 15:05
Infinoid masak: We had to track down someone with upload permissions to the ftp site, which took an extra day
masak pmichaud: I guess it only differs if we have different DST dates.
15:05 justatheory left
masak Infinoid: ah. I think I read something in the #ps logs about an absentee release manager. 15:05
Infinoid Yeah, I took over for tewk 15:06
pmichaud Infinoid++
Infinoid: this was your first release, yes?
Infinoid yeah. But don't ++ me unless you can tell me everything actually worked :)
masak the more I learn about the Parrot development process, the more impressed I get.
pmichaud on a similar note, the issue of release managers for Rakudo came up again in yesterday's Perl 6 design meeting 15:07
Infinoid There are a lot of really smart people involved in parrot. (And in rakudo, too.) I've learned a lot just by attempting to hang onto their coattails
pmichaud I already have the release instructions typed up, so I'll be looking for volunteers for upcoming releases :-)
(the point being to keep our release bus number low) 15:08
er, high
er. whatever
jnthn bus number?
jnthn finds the 69 to the airport useful 15:09
pmichaud bus number: aka "trunk number" sometimes
basically, the number of people who if hit by a bus would cause development to halt.
er, "truck number" 15:10
jnthn So basically it's not great for Rakudo if we cross the road together?
pmichaud jnthn: or ride a bus/train together :-)
the trip from the oslo hackathon to dinner was particularly perilous for Perl 6 development, given that you, me, and TimToady were all on the same train :-) 15:11
jnthn Phew, Perl 6 got off lightly that night. 15:12
:-)
masak 'is also' is deprecated/replaced by 'augment'. what about infix:<also> ? 15:14
jnthn There's an infix:<also> also? 15:15
pmichaud it's a junction operator
jnthn ah, sounds rather unrelated then. 15:16
pmichaud I suspect it remains infix:<also>
$target ~~ MyType also .mytest1 also .mytest2
masak ah, S03:932 still mentions it.
pmichaud it's the same as infix:<&>, but order of evaluation guaranteed. 15:17
rjh crazy thought 15:19
15:20 donaldh left
pugs_svn r26900 | masak++ | [u4x/TODO] special variables 15:20
r26900 | masak++ |
r26900 | masak++ | This list might not be complete. Additions welcome.
r26901 | masak++ | [u4x/TODO] 'is also'/'is instead' are dead, long live 'augment'/'supersede'!
rjh is it on the cards for eval (with another parrot language) to transparently pass lexicals - scalars, maybe arrays and hashes too - to the eval block
pmichaud yes, but it's not clear that the other language would always know how to access them.
15:20 ruoso left
rjh i suppose the ideal is that a perl6 hash becomes a python dictionary 15:21
and so on
pmichaud but yes, the lexicals would be available to the eval block
15:21 donaldh joined
jnthn rjh: I imagine it's not really that it'd "become" one, just that you could use it mostly like one. 15:22
TimToady but it's not like python understands either lexical scoping or sigils though...
pmichaud we might make MY:: available as a python dictionary, though. 15:23
TimToady would have to deal with sigils still
so access would have to be explicit
pmichaud masak: how does this look? gist.github.com/115520
masak pmichaud: looks excellent. 15:24
15:26 pmurias joined, payload left
Su-Shee what's druid? 15:27
got it.
dalek kudo: 7c5be8b | pmichaud++ | docs/ROADMAP:
Minor ROADMAP improvement.
15:29
kudo: 97c7cec | pmichaud++ | docs/ChangeLog:
ChangeLog updates for release
masak Su-Shee: I re-discovered this game in November (the month) last year. I still haven't gotten over how great it is. we still mostly play it with lego pieces -- this might change after I finish the SVG view, though. :)
dalek kudo: dafdc06 | pmichaud++ | docs/announce/2009-05:
Final 2009-05 announcement updates.
pmichaud Mmmm, new Lego store opened here this past Friday.
Place was completely packed. 15:30
15:30 justatheory joined
Su-Shee masak: i was just thinking that i read (i think) every piece of news about perl6, but i just found perl6-projects.org ... 15:30
masak :)
Su-Shee this is not good. :) 15:31
masak Su-Shee: fwiw, Druid is really fun code to work on. it's looking for developers with my love for the game, who have more spare tuits than I do.
Su-Shee masak: get a number, my "i would like to code in perl 6" list is enough for until perl7 is available. ;) 15:32
masak Su-Shee: talk is cheap. go and write some Perl 6 code. :P 15:33
Su-Shee i did yesterday and today!
masak where is it?
pmichaud makes a tarball, starts spectesting it.
bbiab
Su-Shee masak: not working right now, mostly. have to read up some stuff. 15:34
masak Su-Shee: you know you can get very good help here, if you just post your code?
Su-Shee masak: will do, got me a git account already. 15:35
dalek kudo: c4fa3ba | pmichaud++ | docs/release_guide.pod:
Update docs/release_guide.pod .
masak Su-Shee++
15:35 Psyche^ joined 15:37 finanalyst left
pmurias TimToady: a partial solution to python's lack of sigils would be to add it automatically is cases where's the no ambiguity 15:40
lambdabot pmurias: You have 1 new message. '/msg lambdabot @messages' to read it.
15:42 jonalv left 15:43 payload joined 15:45 Patterner left, Psyche^ is now known as Patterner
masak
.oO( the backside of DWIM is that the 'I' makes it subjective -- so, unless the behaviour is parameterized on the actual user of the feature, there will always be people for whom things don't DWIM )
15:45
TimToady we actually optimize for DWMPM, because some subset of MP will be more than happy to tell I exactly how I am being an idiot :) 15:48
masak :) 15:50
TimToady: speaking of that...
TimToady: have you ever used map in Perl 6, only to find that you supplied a Hash, and not a Code? 15:51
TimToady yes, it's just not clear how best to fix that 15:52
masak indeed not.
the only solution I can think of is giving map another multi variant which takes a Hash...
TimToady problem is the $_ is bound too early 15:53
masak oh, right.
pmichaud but the hash-multi variant could warn
masak likes that
pmichaud "You sent me a hash... you probably wanted a block"
TimToady well, but if we're gonna special case it, then we might as well warn at compile time
jnthn When are people accientally sending hashes?
TimToady if we compile a hash as the first arg to a map, blow up
jnthn Oh 15:54
TimToady you mean besides all the time? :)
pmichaud jnthn: map { $_ => rand }, @vals
jnthn map { a => 42 } ...
Right.
Yeah. When syntactic cleverness bites back.
TimToady well, when lack of ASCII brackets bits back, really
pmichaud well, if we can detect it at compile time, then perhaps we should suppress the "make this a hash" response
i.e., a block to map is always a closure, never a hash 15:55
Tene It's always kind of bugged me how {} still means 'hash' in perl 6. if we can do the same in ()s, what do we need {} for?
i think I'm missing something, though.
masak pmichaud: but... that would be a special case! :/
15:55 jan___ joined
pmichaud masak: it's a special case either way 15:55
TimToady lists of pairs can be useful unhashified
or arrayified, so can't use either () or [] 15:56
masak pmichaud: yes, but this special case would allow code to run that didn't run before...
TimToady %() works, but nobody uses it
pmichaud if we got rid of { ... } as hash, then I suspect a lot of folks would start using %(...) :-)
Tene We could, though. Overloading {} for both code and hash has always bothered me.
pmichaud but yes, it does lose the connection to postcircumfix:<{ }> 15:57
Tene obviously we need postcircumfix:<%( )> ;)
masak yuck. :)
TimToady that would probably be the ksh answer :) 15:58
I think a quick rap on the knuckles at compile time is probably best, for now
masak nod. 15:59
jnthn multi method map (%h where { .keys >>==<< OUTER::$_ }) { ... } # ;-)
TimToady either that, or disallow $_ in hash composers entirely
jnthn erm, CALLER
masak away (for reasons to with beer)
jnthn and cmp 16:00
gah
jnthn still brain dead after a fight with IIS
Tene ouch 16:01
jnthn: you're volunteering to port mod_parrot to IIS, right?
16:01 araujo left
rjh {} / [] is used by ruby, python, javascript 16:02
jnthn Tene: plz no :-S
rjh but i suppose that's a weak argument as perl6 is significantly different to those in syntax
TimToady thinking seriously about banning $_ in hash composers
16:02 kst` joined, kst left 16:03 dakkar left
TimToady I think that would largely fix the problem. In the cases you want a hash composer to interpolate $_, you can always use the %( $_ => xxx ) form unambiguously 16:08
should outlaw placeholders too 16:09
pmichaud do we examine the entire block for $_ ?
TimToady anything outside of inner {}, I imagine
I'm thinking context var in STD
pmichaud anyway, that would work. 16:10
How about "any block with a signature"?
TimToady well, a $_ in a .{$_} should probably also scotch it 16:11
pmichaud (or with explicit $_)
TimToady yes, the exception is actually that in the case we might notice top-level =>, we force $_ to mean I have a sig
like a placeholder 16:12
pmichaud oooh, that can work.
16:12 Su-Shee left, zpmorgan_ joined
TimToady we'll get the opposite error of people writing map { { $_ => xxx } }, @list 16:13
but probably not so often
16:13 zpmorgan left
TimToady oh, wait, is that a bare block, or isn't it? 16:13
either way, still doesn't DWTM 16:14
but I think people want to map hashes a lot less often than they want to map pairs 16:16
so it's still a net win
16:16 dalek left, dalek joined, iblechbot joined 16:17 bacek joined 16:22 [particle]1 left 16:31 justatheory left 16:34 [particle] left 16:38 gbacon left 16:42 gbacon joined 16:43 [particle] joined
pmichaud #17 ("Stockholm") released. 16:53
16:54 justatheory joined
jnthn pmichaud++ 16:55
dalek kudo: 79d0b9a | pmichaud++ | docs/release_guide.pod:
Fix "git push --tags" in docs/release_guide.pod .
16:56
pmichaud I did the fixes for "root_new", but it turned out to not help too much for the release. Most of the problem cases are in PGE (and we're stuck with the released version of Parrot for that) 17:03
anyway, we'll get a performance win when I convert PGE across. 17:04
(so will all of the other hlls)
afk for a while # many errands to run 17:05
PerlJam pmichaud: you mentioned that the roadmap was in no particular order, but the first thing was PGE ... do you think that's also the most important?
pmichaud PerlJam: it is to me :-)
PerlJam good :-)
pmichaud lots of wanted/desired features (adverbs, better operator overloading, etc) really depend on PGE updates
PerlJam grabs lunch
pmichaud really afk 17:06
17:15 justatheory left 17:17 brunov joined 17:18 finanalyst joined 17:20 bacek left 17:21 brunov left
finanalyst i was looking at S06 for optional parameters and came across this:Missing optional arguments default to their default values, or to an undefined value if they have no default. (A supplied argument that is undefined is not considered to be missing, and hence does not trigger the default. Use //= within the body for that.)." What does the last sentence mean? What is //= ? 17:28
17:29 justatheory joined
PerlJam // is the "defined or" operator. $a //= $b means the same as "if $a is defined, do nothing, otherwise assign $b to $a" 17:30
17:31 Kisu joined
finanalyst Perljam: thanx 17:31
17:34 [particle]1 joined, M_o_C left 17:45 [particle] left 17:46 bacek joined 17:48 M_o_C joined 17:53 pmurias left 17:58 [particle]1 left
masak that can still trip people up, IMNSHO. 17:59
rakudo: sub foo(%bar?) { %bar //= { 'default' => 'value' }; say %bar.perl }; foo() 18:00
p6eval rakudo 79d0b9: OUTPUT«Cannot assign to readonly variable.␤in sub foo (/tmp/jfLajrumzM:1)␤called from Main (/tmp/jfLajrumzM:1)␤»
masak oh, right.
rakudo: sub foo(%bar? is rw) { %bar //= { 'default' => 'value' }; say %bar.perl }; foo() 18:01
p6eval rakudo 79d0b9: OUTPUT«{}␤»
masak expected? I think not.
Tene Does rakudo support default values yet?
masak Tene: in params? yes. 18:02
Tene yes.
masak rakudo: sub foo($value = 42) { say $value }; foo
p6eval rakudo 79d0b9: OUTPUT«42␤»
masak it even supports them in variable declarations :)
rakudo: my ($value = 42) = 5; say $value 18:03
p6eval rakudo 79d0b9: OUTPUT«5␤»
Tene rakudo: sub bar(%bar = { 'default' => 'foo'}) { say %bar.perl }; bar()
p6eval rakudo 79d0b9: OUTPUT«{"default" => "foo"}␤»
masak Tene: point taken.
TimToady also %bar //= {...} is wrong
masak that essentially destroys that argument.
PerlJam masak: hashes have a default value of {} ?
TimToady since it should be a binding
masak PerlJam: yes. 18:04
PerlJam is confused.
why?
TimToady %bar //= (...) would at least be less wrong
PerlJam TimToady: %bar //= %(...) ?
masak PerlJam: in order for 'my %hash;' do DTRT.
PerlJam masak: ah ... we just have eager autovivification then.
TimToady well, yes, I guess we fixed that in p6
masak TimToady: oh, I was overzealous with those curly braces, true. 18:05
18:06 abra joined
masak my point was that %bar wasn't undefined, and that this might surprise some people. 18:07
PerlJam but it should have been. 18:09
masak PerlJam: not by current spec, no.
TimToady reference?
masak TimToady: finanalyst gave it above. 18:10
the one in S06.
since the default value of Hash is {}, and since {}.defined is True...
TimToady the default value of Hash is Hash, which is an undef 18:11
PerlJam masak: where in the spec does it say that the default value of Hash is {} ?
what TimToady said
masak oh.
so Rakudo does the wrong thing here?
PerlJam That would be my take on it. 18:12
TimToady I think so, though perhaps it should get unhappy earlier insofar as Hash isn't a valid rw ref
masak that's the best news I've had since pmichaud implemented user defined operators.
TimToady either that, or rw forces autoviv, and results in {} 18:13
masak oh.
so then we're back to where it's defined after all.
TimToady well, it *is* binding to rw that causes autoviv
masak so if I don't do that, I'm home free? then I can use .defined to check whether it was passed or not? 18:14
TimToady yes, but you can't set it. :)
masak right.
I think I'm pleased with such a compromise.
PerlJam that still might trip people up though.
masak sure, but they're fewer now. :P
we're heading in the right direction, amount-of-people-being-tripped-up-wise. 18:15
TimToady yes, that was my precise argument for disallowing $_ in hash composer
PerlJam TimToady: does the same hold for is copy?
TimToady I don't think so
nor for is ref 18:16
masak are 'rw' and 'copy' considered keywords?
TimToady they're traits, and we're still nailing down exactly which namespace nontype traits live in
masak ok.
TimToady but possibly they're keywords in a syntax category sense
masak u4x/TODO has them under 'declaration keywords'. 18:17
TimToady that is, there's a trait_name:sym<copy> that is only looked for within the trait parser
masak is 'cow' still with us?
TimToady I thought we just removed that
masak I see.
so if I wanted copy-on-write semantics...?
TimToady ask for a copy, and it's implementation defined whether to emulate copy with cow 18:18
which is the point of cow, after all
to look like a copy
masak yes.
very well.
pugs_svn r26902 | masak++ | [u4x/TODO] added 'copy' and 'ref' parameter traits 18:19
masak rakudo: my ($a is readonly) = 5; say $a; $a = 42; say $a
p6eval rakudo 79d0b9: OUTPUT«5␤42␤»
PerlJam heh
masak submits rakudobug
which behaviour do I expect? is the 5 assignment allowed? 18:20
probably not, right?
TimToady allowed
masak ok.
TimToady assignment semantic analyzer always has to look at left side to see if a declarator governs semantics
PerlJam surely the assignment must be allowed. How do you get a value otherwise?
masak PerlJam: my ($a is readonly = 5) 18:21
TimToady (my $a is readonly) = 5 would not be allowed
well, probably not
masak ok, so _not_ allowed... :) 18:22
PerlJam masak: well, there's 3 different initialization forms we just talked about. Which are you referring to? :)
TimToady only my form is disallowed
er
the form I said
PerlJam heh
masak PerlJam: the one TimToady just disallowed.
18:23 justatheory left
TimToady it's like difference between state $x = 0 and (state $x) = 0 18:23
masak everything you say will be used against you in the bug report :)
PerlJam my ($a is readonly, $b is readonly = 5) = 6; # does this work? 18:24
($a = 6 and $b = 5)
masak PerlJam: not if the '(my $a is readonly) = 5' doesn't work.
PerlJam: seems like the same situation with your $a.
TimToady no, it's not 18:25
masak :)
TimToady the my is outside
(my vs my (
masak oh!
I missed that!
important distinction...
TimToady I've been saying nothing else for a month
PerlJam gets masak some TimToady specs
18:25 jferrero left
TimToady well, a minute, anyway 18:26
masak sorry, I should pay more attention... :P
oh, ok. I see now.
there's no way I can explain this in the bug report save for quoting the whole thing, misunderstanding and all. :)
TimToady consider it an exercise in integrity :) 18:27
masak does that 18:28
rakudo: (my $a is readonly) = 5; say $a 18:30
p6eval rakudo 79d0b9: OUTPUT«5␤»
PerlJam rakudo: my ($a is readonly, $b is readonly = 5) = 6; .say for $a, $b; 18:31
p6eval rakudo 79d0b9: OUTPUT«6␤Use of uninitialized value␤␤»
TimToady rakudo: my ($a is readonly, $b is readonly = 5) := 6; .say for $a, $b; 18:32
p6eval rakudo 79d0b9: OUTPUT«rtype not set␤in Main (src/gen_setting.pm:3166)␤»
TimToady it should at least allow the binding, even if the assignment gets disallowed on such a sig 18:33
(which it isn't, but I can imagine some sigs that might be hard to figure out what assignment should mean other than binding) 18:34
but given that's the binding form is almost exactly what a normal signature binding means (including default to readonly), it should certainly work 18:36
18:36 [particle] joined 18:37 bacek left 18:43 desertm4x joined 18:52 jferrero joined 19:10 masak left 19:16 icwiener_ joined 19:17 icwiener left 19:20 donaldh left 19:21 donaldh joined 19:22 abra left 19:31 jonathanturner joined
japhb @tell masak re: proto -- graphdeps was more forward-thinking, not as useful right now, but helped me design the graph walker. So yes, add-on material, not really core. Also, I'd like to see your different take on the graph walker design. In the mean time, do you want me to split my change into smaller pieces? 19:32
lambdabot Consider it noted.
19:35 masak joined
masak . 19:35
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
masak @messages
lambdabot japhb said 3m 1s ago: re: proto -- graphdeps was more forward-thinking, not as useful right now, but helped me design the graph walker. So yes, add-on material, not really core. Also, I'd like to
see your different take on the graph walker design. In the mean time, do you want me to split my change into smaller pieces?
masak @clear
lambdabot Messages cleared.
japhb Ah, I thought you'd gone for the day
masak japhb: I'll be happy to write a sketch of what I imagine for the graph walker. 19:36
japhb masak: excellent
masak it's interesting to see you hitting upon many of the ideas I had too.
that tells me I'm on the right track.
PerlJam or you're both way off base ;)
masak PerlJam: or that :)
the main difference, I think, is that I want to make it a separate class, and make it independent of proto project installation. 19:37
japhb Part of why I want to see your design is that at least half of my design felt like it "fell out of the problem", and only a few details were open for decision.
masak that way, if someone finds they'll need a dependency graph walker for something else, they can just re-use.
so, in essence, it's differences in naming. 19:38
japhb masak: Actually, I thought that very thing, and almost did it that way! I only decided not to because I figured then you'd have a chicken and egg problem, since proto would be needed to install the dependency graph walker project ....
PerlJam btw, is there some "documentation" for create-new-project ?
japhb Of course, you can have the hard coded version in proto, and a more general one done separately. 19:39
masak PerlJam: not really, only the things the script itself prints.
PerlJam masak: well, I run it and it asks me a question and then dies when I answer it.
masak: and is it meant to be run from where ever proto lives or what?
masak japhb: yes, I'd keep the class in the proto project, and worry about dependencies when someone else needs it.
japhb: I try hard not to make proto a dependency of anything vital. 19:40
japhb nodnod
masak PerlJam: I think so. I'd love a bug report.
japhb: proto is ephemeral. it almost doesn't exist. :)
PerlJam masak: I'd like to just fix it, but I don't quite know what the intent is :)
japhb hah! And just after I get familiar with the implementation. :-) 19:41
masak PerlJam: if you have concrete questions, feel free to ask them. :)
PerlJam masak: btw, changing from /bin/sh to /bin/bash made it run to completion (with some errors that look like a result of me trying to run it from outside the proto tree)
19:42 clintongormley left
PerlJam masak: well, why shell and not perl (for instance)? 19:42
masak PerlJam: that's ephemeral, too :) mberends said he'd port it to Perl as soon as he got a chance. 19:43
PerlJam good, that's all I needed to know :)
19:43 donaldh left
masak PerlJam: I'll change it to /bin/bash. thanks. 19:43
PerlJam oh ... can get commit bit to proto or do you prefer patches/github forks ? 19:44
masak PerlJam: you can get a commit bit, but I advise you to use the patches/forks system (as japhb did) whenever you think you might be in danger of adding a feature :) 19:45
japhb masak: do you imagine a generalized graph walker operating on? I can imagine it working against a user-supplied graph object that 'does' an appropriate traversable role, and the graph walker just calls the appropriate methods as it needs to navigate, get deps lists for a node, and so on. Or it could be supplied with a series of callbacks, just like the ones that it calls when needing to fetch, build, etc.
19:45 donaldh joined
japhb ? 19:45
PerlJam gotcha.
19:46 icwiener_ left
PerlJam masak: I'm perlpilot on github if you're inclined to add me :) 19:46
masak PerlJam: I will.
pmichaud masak: DON'T DO I..... oh, I guess PerlJam is okay. :-)
masak a general warning: I might drop out at any given moment, my wifi connection is kinda weak.
PerlJam :-P
japhb Sounds like a value judgement. ;-) 19:47
masak pmichaud: every Perl 6 project owner already has a commitbit to proto. it's working really well. :)
pmichaud masak: I was just pulling PerlJam's chain :-)
PerlJam pm: one of the few true smiley moments IRL for me today in fact :) 19:48
pmichaud PerlJam: I'm soooo sorry to hear that.
PerlJam: things there must be really bad then :)
masak pmichaud: why pull his chain? what's he done? 19:49
masak is curious
pmichaud masak: oh, he's been bugging me for over 15 years. :-) :-)
19:49 icwiener joined
PerlJam masak: I made the mistake of taking OOP from pmichaud back in 1992. 19:49
masak pmichaud: :D
PerlJam: wow, cool.
pmichaud ....and then he came to work for me for almost 10 years 19:50
PerlJam back when we both had considerably more hair on the tops of our heads
pmichaud ....and one could conceivably blame PerlJam for my being involved in Perl 6 in the first place :-P 19:51
PerlJam pmichaud: did you stop by NRC3400 during your recent trip down here? Niall and James have a picture of you at your desk from the early 1990s taped to their door.
pmichaud PerlJam: I did not get a chance to do that, no.
I will do so next time I'm there :-)
masak PerlJam: patched create-new-project, added you to AUTHORS, and added you as a committer to proto on github. welcome aboard. :) 19:53
japhb: you too, welcome aboard. :)
PerlJam masak: thanks.
japhb masak: thank you!
masak japhb: I'd write the graph walker for you immediately, but I feel I have to work a bit on Web.pm and prepare for being away for the weekend. you'll get it early next week instead. 19:54
japhb masak: OK, no problem. I need to get back to hacking on HTTP::Daemon anyway. 19:55
finanalyst what is the perl6 idiom for separating an interpolated variable from following letters in a string? eg. "$filename_old" when the variable is $filename? in perl5 it was "${filename}_old" (i think) 19:56
PerlJam finanalyst: same for perl6 I think
(though it may not work in rakudo)
pmichaud not same for p6 19:57
masak finanalyst: you could do "{$filename}_old"
pmichaud in p6 it's "{$filename}_old"
PerlJam oh, right. p6 has better methods
finanalyst rakudo: my $x='fn'; say "aaawwww{$x}ssss" 19:58
p6eval rakudo 79d0b9: OUTPUT«aaawwwwfnssss␤»
finanalyst thanx
pmichaud rakudo: my $filename = 'foo'; say "{$filename}_old"
p6eval rakudo 79d0b9: OUTPUT«foo_old␤»
finanalyst so thats just a trivial variant of a code expression evaluated inside a string? 19:59
PerlJam rakudo: my $a = "fie"; say "fee{{$a}}foe";
p6eval rakudo 79d0b9: OUTPUT«feefiefoe␤»
PerlJam interesting 20:00
20:00 justatheory joined
PerlJam rakudo: my $a = "fie"; say "fee{$a}}foe"; 20:02
finanalyst rakudo: my %x=<a b c>Z 1,2,3; say "{%x<a>} and {%x<b>} is {%x<c>}"
p6eval rakudo 79d0b9: OUTPUT«feefie}foe␤»
rakudo 79d0b9: OUTPUT«1 and 2 is 3␤»
PerlJam even more interesting
masak finanalyst: mind you, that should also work without curly braces, but Rakudo isn't quite there yet.
TimToady exactly what I'd expect
masak yes, me too. note that I haven't submitted a rakudobug. :) 20:03
PerlJam indeed
now for the one that'll break it. :)
rakudo: my $a = "fie"; say "fee{{$a}foe";
masak braces himself
p6eval rakudo 79d0b9: OUTPUT«Statement not terminated properly at line 1, near "foe\";"␤in Main (src/gen_setting.pm:0)␤»
masak PerlJam: also what I'd expect. 20:04
PerlJam rakudo++
TimToady std: my $a = "fie"; say "fee{{$a}foe";
13:03 * masak braces himself
p6eval std 26902: OUTPUT«##### PARSE FAILED #####␤Statements must be separated with semicolon at /tmp/KCjs8TDptq line 1:␤------> my $a = "fie"; say "fee{{$a}foe";␤ expecting any of:␤ POST␤ blockoid␤ infix or meta-infix␤ infix stopper␤ postfix␤
..postfix_prefix_meta_operator␤ standard stopp…
TimToady o_O
masak stdbug?
TimToady no
std: {$a} foo 20:05
p6eval std 26902: OUTPUT«##### PARSE FAILED #####␤Statements must be separated with semicolon at /tmp/BXTpASLIop line 1:␤------> {$a} foo␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ standard stopper␤ statement␤ statement modifier loop␤ terminator␤Other
..potential difficulties:␤ …
TimToady std: {$a}; foo
p6eval std 26902: OUTPUT«Potential difficulties:␤ Variable $a is not predeclared at /tmp/q0A8DP9VVv line 1:␤------> {$a}; foo␤Undeclared routine:␤ foo used at 1 ␤ok 00:02 36m␤»
TimToady it's just not mindreading the programmer
masak dang,
PerlJam makes a note to "use ESP" 20:06
20:10 mizioumt1 left
masak is enjoying mberends++' excellent sandwich toppings 20:11
mberends: ingenious! I'm eating chocolate and learning Dutch at the same time! :)
20:14 finanalyst left 20:21 Kisu left 20:22 desertm4x left, Kisu joined, frew|work left 20:23 mizioumt joined 20:25 [particle] left 20:36 frew|work joined
masak rakudo: qq[q["'flip'.flip.say".flip.say].flip.say].flip.say 20:37
p6eval rakudo 79d0b9: OUTPUT«Syntax error at line 1, near "].flip.say"␤in Main (src/gen_setting.pm:0)␤»
masak hm. maybe []'s don't nest in qq[]'s. 20:38
rakudo: qq[q["'flip'.flip.say".flip.say\].flip.say].flip.say
p6eval rakudo 79d0b9: OUTPUT«yas.pilf.]yas.pilf."yas.pilf.'pilf'"[q␤»
20:41 donaldh left, donaldh joined, amoc left 20:52 pmurias joined
masak rakudo: sub foo($bar:) {}; 20:58
p6eval rakudo 79d0b9: OUTPUT«error:imcc:syntax error, unexpected IDENTIFIER ('self')␤ in file 'EVAL_17' line 67␤»
masak submits rakudobug
21:00 iblechbot left
Casan rakudo: say "I will not.." x 500 21:02
p6eval rakudo 79d0b9: OUTPUT«I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I will not..I
..will…
masak Bart Simpson, is that you?
Casan just pondering, I sort of expected the say would have a \n after each iteration, but I fear it may come after the cumulative "..."x500. but still I don't understand. 21:03
21:03 Whiteknight joined
masak Casan: well, the infix:<x> glues together 500 strings into one single string. 21:04
Casan say "I am not Bart, and I won't say but"
masak Casan: there's no \n until that long string reaches the 'say' function.
Casan I was just reminded by this old thing.. www.jeffpalm.com/fox/index.html
ok 21:05
masak if you want 500 linebreaks too, you'd go 'say "I will not.." for 1..500' or 'say "I will not.." for ^500'
Casan yeah did try the for 1.500 variant
jnthn masak: I think we already has a Rakudo bug for invocant syntax on non-methods. 21:06
Casan: Hi! How's things?
masak jnthn: ok. well, now you have at least one. :P
Casan: not 1.500, that's one number. 1..500 is a range. 21:07
jnthn masak: I think it'll be fixed once context vars are in because then it's easier to know what kinda routine we're parsing the sig for I guess...
For now it's a pain to fix.
Casan jnthn: hi! busy at school. exams and such. but I keep following parrot,rakudo,padre work on the side. want to clean up here in DK so I can move to France after summer. Lets hope summer will include a trip to Portugal. 21:09
21:09 ejs left
Casan masak: ahh yeah sorry, did that too, think I was a bit too lazy here on irc ;) 21:10
jnthn Casan: Ah, nice. Hope to see you in Portugal then. :-)
masak yay, portugal!
jnthn masak: You know, all of my trips during winter were to cold places. Most of my trips in summer are to hot places. 21:11
If it'd been the other way around, I woulda got some breaks from the heat in summer and some breaks from the cold in winter...
jnthn is starting to feel the summer heat 21:12
masak "extreme traveling".
yes, it's noticeable here too.
21:13 M_o_C left
jnthn had pondered living one place for summer and one for winter, but the cost/hassle of the move was kinda a pain. 21:14
masak jnthn: while in .nz, I met one guy who lived like that. 21:15
jnthn: I must admit to being a bit freaked out by Easter autumn leaves.
21:15 M_o_C joined
jnthn :-) 21:16
Casan jnthn: well, if my project in France doesn't work out, then I am pondering taking a year out of the calendar for working and personal reflection, which could mean winter in a cheap place with snow and summer in another place with a beach :) ohh .sk and .fr comes to mind hehe. 21:18
jnthn Casan: I'm liking .sk.
Language is...fun. :-) 21:19
Casan same here. missed my annual in sk this year.
ok time to. return dream($programming, $places); 21:21
masak jnthn: do function calls in return statements get turned into tailcalls in Rakudo? 21:22
jnthn masak: nie
masak jnthn: could they? 21:23
jnthn masak: Maybe.
masak: Thing is consider
sub foo returns Int { return bar() }; sub bar() { return "oh noes" }
So it's not aways safe to Just Do It.
masak good point. 21:24
rakudo: sub foo($n = 1000) { return "blow the stack" if !$n; return foo($n-1) }; foo
21:24 tulcod left
jnthn ...well that blew it. :-) 21:25
masak it's fast on my box. :)
jnthn same
wow. :-)
That backtrace is, uh, maybe in need of a little pruning. ;) 21:26
masak jnthn: something like '(repeated x 1000)'... :)
jnthn something like that.
masak TODO rakudobug?
jnthn If it bothers you.
masak not really. but it's better having it in RT than in the back of our minds. 21:27
jnthn rakudo: my Int @x; @x.push("fail")
oh noes our eval bot is has a sad.
masak I think p6eval is a bit busy blowing the stack... :/ 21:28
Casan rakudo: say $test;
jnthn Anyway, that type check fail doesn't say what the types were
But really I want to factor out the type fail errors into some common routie.
*routine
masak nod. 21:29
jnthn Task for not too distant future perhaps.
Tomorrow I hope to refactor object init/creation stuff a bit.
Hopefully then we can write BUILD routines that don't die of null pmc exceptions. 21:30
Casan jnthn: ++ on the error with die.
masak sounds nice. 21:31
jnthn: does that include BUILD?
jnthn masak: Indeed.
masak dang. gotta write that "Rakudo is teh sux" blog post before there's nothing left to complain about. :P
jnthn :-P
What, you mean you're running out of things to complain about?
;-)
Casan jnthn: I was wondering if a simple "say $test"; shouldn't also do the same, instead of: Scope not found for PAST::Var '$test' in in Main (src\gen_setting.pm:3149) ?
masak jnthn: well... perhaps a slight exaggeration... 21:32
jnthn Casan: The "in" line is epic fail, I want to get rid of that.
Casan: The issue is where the scope not found error comes from.
Casan ok 21:33
jnthn (The PAST => POST phase.)
But yes, we certainly should give a line number there.
It's just a bit trickier to fix for this case.
PerlJam there's already a line number ;)
jnthn PerlJam: Yeah, too bad it's ridiculously inaccurate. ;-) 21:34
Casan jnthn: but the expected output will be something like: fileofsay$test:linenumber right? 21:35
jnthn Yeah
Casan thnks
21:36 p6eval left, p6eval joined 21:40 [particle] joined 21:43 payload left, meppl left
dalek kudo: 5ed6dac | pmichaud++ | (2 files):
Use root_new opcode from parrot trunk. Bumps PARROT_REVISION.
21:47
pmichaud fixing the "Scope not found..." error line number is on my list of easily-fixed things. 21:49
21:50 skids left 21:58 justatheory left 21:59 wknight8111 joined, masak left 22:00 Whiteknight left
LylePerl rakudo: print $*CWD; 22:05
p6eval rakudo 5ed6da: OUTPUT«Use of uninitialized value␤»
LylePerl rakudo: chdir; 22:06
p6eval rakudo 5ed6da: OUTPUT«Could not find non-existent sub chdir␤»
22:06 kate21de left 22:07 ElectricHeavyLan joined
PerlJam does rakudo handle multidimensional arrays yet? 22:09
rakudo: my @x; @x[0][0] = 5; 22:10
pmichaud limited.
p6eval rakudo 5ed6da: OUTPUT«elements() not implemented in class 'Undef'␤in Main (/tmp/SqWqW2y9Uv:1)␤»
pmichaud it's still having difficulty with autovivification of elements
rakudo: my @x; x[0] = []; x[0][0] = 5; 22:11
p6eval rakudo 5ed6da: OUTPUT«Could not find non-existent sub x␤»
pmichaud rakudo: my @x; @x[0] = []; @x[0][0] = 5;
p6eval rakudo 5ed6da: ( no output )
PerlJam okay
22:12 payload joined 22:14 ispy_ left 22:16 payload left, payload joined 22:17 payload left 22:18 payload joined 22:20 payload left 22:26 nihiliad left
pmichaud std: say $x; 22:26
p6eval std 26902: OUTPUT«Potential difficulties:␤ Variable $x is not predeclared at /tmp/jL0eN2OE3r line 1:␤------> say $x;␤ok 00:02 36m␤»
PerlJam wishes rakudo's "Use of uninitialized value" message came with a line number and perhaps a variable name 22:31
22:34 gbacon left 22:35 mizioumt left
pmichaud line number should be doable 22:36
we just need to check the annotations in effect at the point of generating the message 22:37
See the "!throw_unhandled" method in src/classes/Failure.pir:84 22:38
add code there to check for whatever dynamic annotations are in effect and report those as a backtrace
(there should be a routine somewhere already to do that last part)
(it would be whatever jnthn++ added) 22:39
unless/until we attach variable names as properties on their containers; displaying a variable name might be a bit more difficult 22:40
in particular, the variable that "say" sees when it stringifies its argument(s) probably won't be the one the caller used to when calling say() 22:41
s/to when/when/
gist.github.com/115794 # better? 22:43
jnthn Yes, giving line number with warnings shouldn't be hard.
pmichaud: ftw! 22:44
pmichaud $ ./perl6
> say $x
Symbol '$x' not predeclared in <anonymous>
in Main (src/gen_setting.pm:3166)
lambdabot Not in scope: `say'
jnthn pmichaud: I plan to clear up that last line.
22:44 bacek joined
jnthn (As in, not show it...) 22:44
pmichaud jnthn: I clearly leave it up to you to clear up that last line. :-)
jnthn ;-) 22:45
pmichaud well, after moving PGE to use root_new instead of new we get about half of our performance back.
22:45 Kisu left
jnthn pmichaud: Yes, I ran the benchmarks in tools dir and noticed that. :-) 22:45
22:46 Kisu joined 22:47 frew|wor1 joined
pmichaud there are still several places (NQP, others) that need to be adjusted. 22:48
I might see if I can adjust PCT/NQP to avoid the extra "find_lex" and testing for null when it's clear we don't need them. 22:49
22:50 frew|work left
jnthn find_lex is quite the throwing-away-stuff-we-statically-know fail. 22:50
22:50 meppl joined
pmichaud the problem is that in some languages we can't know if the lexical has actually been instantiated yet 22:51
jnthn What do you mean by "instantiated" in this case? 22:52
For languages that add stuff to their lexpad at runtime rather than statically knowing their symbols?
22:53 Chillance left, Chillance joined
pmichaud there's a difference between "NULL" and "Undef" 22:53
i.e., it's the difference between 'exists' and 'defined' 22:54
so, a subroutine might have a lexical declared, but the lexical doesn't actually exist until someone assigns a value to it.
in such cases we have to explicitly check for the possibility of find_lex returning a Null PMC
and potentially auto-vivifying at that point, or returning an Undef 22:55
(or some other default)
jnthn My point was more about the process of finding the lexical.
pmichaud oh, that part
22:55 pmurias left
pmichaud yes, there are optimizations to potentially be had there also. 22:55
jnthn We statically know that a lexical is n blocks down in most cases.
Instead, we do n hash lookups.
At each block.
pmichaud it also be nice if once we did a find_lex we could re-use the register instead of repeatedly finding it again later. 22:56
(but we have to be careful of potential rebinding)
gotta go finish planting a tree -- bbl 22:57
jnthn And given a hash lookup is a call on a vtable method, which in turn is a call to something in Parrot's hash implementation, which I think then calls something else in the process of getting an answer...
We could potentially save quite a lot by just following n pointers. :-)
22:57 edenc left, edenc joined 22:58 BinGOs left, wayland76 joined 23:03 Bucciarati left, Bucciarati joined, kst` left, kst` joined
pmichaud or, even better, in a given context, remember the location of the lexical we just looked up 23:03
since it's not likely to change for that context, unless we do a "set_outer" 23:04
actually, I guess statically determining it would work also
each Sub PMC could keep track of it, though 23:05
and a "set_outer" would clear the cached 23:06
jnthn Aye, I'm not sure what the best implementation is.
pmichaud I like the idea of Sub PMCs keeping track of it.
jnthn Cache always adds memory overhead of course.
Yeah, same.
pmichaud This is a pretty small overhead.
Anyway, I might be able to do something with it when we review lexical handling (e.g., the prototype lexpads we discussed at NPW) 23:07
jnthn *nod*
BTW, I suspect I'm going to follow (or beat ;-)) your lead on that front for object creation.
So we'll have an instance that we clone each time when creating a new one. 23:08
Or at least instance storage unit.
That'll get traits right for one.
But also, means that BUILD isn't doing all of the figuring out the containers stuff. 23:09
And also that overriding BUILD will work.
pmichaud I totally agree with that approach
jnthn I hoped you would. :-) 23:10
pmichaud in some sense the protoobject should be the instance that we clone each time
jnthn yay and nay
pmichaud right, we don't want the protoobject-specific characteristics
jnthn Remember that the proto doesn't have instane storage.
pmichaud it doesn't? you mean conceptually, or really?
jnthn Conceptually for sure. 23:11
I'm pondering making it a "really" though.
But cloning also doesn't feel right to me on another angle.
pmichaud that feels wrongish.
jnthn We need to be able to clone a type-object and have it stay a type object.
(Think Dog{ :name<Spot> }
)
pmichaud sure, cloning a type object doesn't cause me difficulty either
last this was discussed, we were looking at having a "bit" that indicates whether something is an instance or a type object 23:12
accessors would only be defined for the objects that have the "I am an instance" bit
jnthn We can do it like that too. 23:13
pmichaud cloning a protoobject doesn't make it an instance, but calling BUILD on it does
jnthn What I was really hoping for though...
pmichaud or, instead of cloning the entire protoobject, we just clone the attributes
jnthn ...is to manage instantiation through the instantiate VTABLE.
pmichaud we do have to be careful of people overriding 'clone', too :-)
jnthn Which I think would put us in a better interop position. 23:14
With other Parrot stuff.
pmichaud I'm fine with looking at it through instantiate VTABLE
jnthn Anyway, lots of things to balance up.
pmichaud that makes a lot of sense to me. In some sense instantiate VTABLE does the CREATE/BUILDALL/BUILD sequence, I guess. 23:15
jnthn I'm kinda scared of attempting One Big Refactor in any sense.
pmichaud agreed, for the things where we can avoid it.
jnthn So am more planning baby steps towards where I want to go.
pmichaud +1
jnthn Even if they mean that temporarily we have a few hacks that get cleaned up later, getting to know what conceptually is going to work out will be a big help. 23:16
pmichaud Agreed.
jnthn (Where later = they should all be gone by the time I'm done with the grant, of course.) 23:17
23:18 exodist left 23:20 donaldh left, donaldh joined 23:21 bacek left, BinGOs joined 23:24 M_o_C left 23:25 bacek joined 23:26 skids joined 23:29 [particle] left 23:43 jferrero left 23:46 icwiener left 23:51 c9s left 23:56 vxnick joined 23:57 fridim_ left