|
»ö« | perl6-projects.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot: perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by moritz_ on 27 June 2009. |
|||
|
00:06
sri_kraih left
00:07
sri_kraih joined,
sri_kraih left,
sri_kraih joined
00:08
explorer left
|
|||
| eternaleye | @seen diakopter | 00:09 | |
| lambdabot | Last time I saw diakopter was when I left ##english, ##freebsd, ##hrg, ##logic, #arch-haskell, #concatenative, #darcs, #dreamlinux-es, #friendly-coders, #functionaljava, #gentoo-haskell, #gentoo-uy, | ||
| #ghc, #haskell, #haskell-blah, #haskell-books, #haskell-freebsd, #haskell-in-depth, #haskell-overflow, #haskell-soc, #haskell.cz, #haskell.de, #haskell.dut, #haskell.es, #haskell.fi, #haskell.fr, # | |||
| haskell.hr, #haskell.it, #haskell.jp, #haskell.no, #haskell.ru, #haskell.se, #haskell_ru, #jhc, #jtiger, #macosx, #macosxdev, #novalang, #perl6, #rosettacode, #scala, #scannedinavian, #unicycling, # | |||
| xmonad and #yi 1m 13d 19h 18m 50s ago. | |||
| eternaleye | cj: ^^^ | ||
| cj: lambdabot commands have a leading @ | 00:10 | ||
| cj | thanks, eternaleye | ||
|
00:11
nihiliad joined,
ispy_ left
00:13
mikehh__ left,
mikehh__ joined
00:15
frew_ joined
00:22
Guest25711 joined
|
|||
| Guest25711 | www.codewithus.net << CODING COMMUNITY | 00:23 | |
|
00:23
Guest25711 left
|
|||
| colomon | Does anyone see any obvious reason why split(/\;\s*\n?/, $string) would work differently in Perl 6 than it did in Perl 5? | 00:30 | |
|
00:31
bucky left,
Whiteknight left
00:32
unitxt joined,
mikehh__ left
00:33
mikehh__ joined
|
|||
| TimToady | well it won't remove trailing null fields, for one | 00:33 | |
| in any case, \n? is useless after \s* | |||
| colomon | TimToady: actually, I'm now wondering if the P5 has been broken all along... | 00:36 | |
| Nope, the P5 does work. | 00:38 | ||
|
00:40
mikehh__ left
00:41
mikehh__ joined
|
|||
| colomon | Is there anything in that /\;\s*\n?/ that could eat text? Because that's what seems to be happening... | 00:41 | |
| TimToady | no, seems to work fine here, even with the completely useless \n? | 00:43 | |
|
00:43
alc joined
|
|||
| TimToady | how are you running it? | 00:44 | |
| colomon | for split(/\;\s*\n?/, %file_sections{"DATA"}) -> $entity | 00:45 | |
| TimToady | are you using rakudo? | ||
| colomon | Yes. | ||
| give me a moment, I'll see if I can reproduce in the small. | |||
|
00:45
meppl left
00:48
unitxt left
|
|||
| colomon | Okay, I've got a short test script and a short data file. Best way to send them on? | 00:52 | |
| literal | pastebin.com/ | ||
| or paste.lisp.org/new/perl6 | 00:53 | ||
| lisppaste3 | colomon pasted "repro.pl" at paste.lisp.org/display/83668 | 00:54 | |
| colomon pasted "test" at paste.lisp.org/display/83671 | 00:56 | ||
| ruoso doing a very tedious job of transcription of his talk at fisl, so he can post with english translation | 00:57 | ||
|
00:57
mikehh__ left
|
|||
| TimToady | seems to work fine here | 00:58 | |
| colomon | Do you get the #2146=NEXT_ASSEMBLY_USAGE_OCCURRENCE('rod-assembly_1','', line in the output? That's what's missing for me. | 00:59 | |
| TimToady | yes, I get that | 01:01 | |
| colomon | Hmm... guess I need to update rakudo? (either that or this is weird line ending mojo that gets lost in the pasting?) | 01:02 | |
|
01:04
yahooooo left
01:08
kate21de left
|
|||
| colomon | I get the same result with a fresh rakudo generated with "git pull". | 01:14 | |
|
01:16
yahooooo joined
|
|||
| colomon | If I pull down the paste and make a new test file, it works fine. | 01:16 | |
| something to do with the line endings, I bet. | 01:23 | ||
| Try it from ralf.org/~colomon/test.tar.gz | 01:25 | ||
| TimToady | it works, but the ^M sends the carriage return back to the beginning of the line and overwrites it when you print it out | 01:28 | |
| colomon | aha! | ||
| Sorry to waste your time on this, and thanks for the help. | |||
|
01:29
unitxt joined
|
|||
| TimToady | bbl & | 01:32 | |
|
01:47
frankshaw joined
01:51
frankshaw left,
frankshaw joined
02:02
athomason left
02:07
bucky joined
02:09
athomason joined
|
|||
| colomon | Fixed my real bug: was using $1 instead of $0. | 02:09 | |
|
02:15
KyleHa joined
|
|||
| bucky | p6eval: my %fruit_color = "apple", "red", "banana", "yellow" | 02:29 | |
| evalbot say my %fruit_color = "apple", "red", "banana", "yellow"; | 02:30 | ||
|
02:31
frew|work joined
02:41
cdarroch left
|
|||
| unitxt | p6eval: my %fruit_color = "apple", "red", "banana", "yellow"; say $fruit_color{$apple}; | 02:45 | |
|
02:51
Limbic_Region left
02:53
frankshaw left
|
|||
| StephenPollei | rakudo: my %fruit_color = "apple", "red", "banana", "yellow"; say $fruit_color{$apple}; | 02:56 | |
| p6eval | rakudo 9a7a1d: OUTPUT«Symbol '$fruit_color' not predeclared in <anonymous> (/tmp/Myrt4kJCo4:2)in Main (src/gen_setting.pm:3340)» | ||
| StephenPollei | rakudo: my %fruit_color = "apple", "red", "banana", "yellow"; say %fruit_color{"apple"}; | 02:58 | |
| p6eval | rakudo 9a7a1d: OUTPUT«red» | ||
| bucky | my @colors = %fruit_color.values; returns both the keys and the values ?? | ||
| in pugs | |||
| StephenPollei | unitxt and bucky I think thats more like how you want to test rakudo | 02:59 | |
| bucky | tnx | ||
| StephenPollei | pugs: my %fruit_color = "apple", "red", "banana", "yellow"; say %fruit_color.values; | ||
| p6eval | pugs: OUTPUT«apple redbanana yellow» | 03:00 | |
| StephenPollei | rakudo: my %fruit_color = "apple", "red", "banana", "yellow"; say %fruit_color.values; | ||
| p6eval | rakudo 9a7a1d: OUTPUT«yellowred» | ||
| StephenPollei | looks like pugs in wrong in that respect afaik | ||
|
03:01
KyleHa left
|
|||
| unitxt | StephenPollei: Thanks. I like that last way best 'my %fruit_color = "apple", "red", "banana", "yellow"; say %fruit_color.values;' :) | 03:03 | |
| bucky | hehe | ||
|
03:07
colomon left
|
|||
| StephenPollei | rakudo: my %fruit_color = "apple", "red", "banana", "yellow"; %fruit_color.values.join(' ').say; | 03:08 | |
| p6eval | rakudo 9a7a1d: OUTPUT«yellow red» | ||
| StephenPollei | of course having them not run into each other might be nice | 03:09 | |
| unitxt | :) | ||
|
03:11
alester left
03:13
alester joined,
alester left
|
|||
| bucky | is there a comprehensive tutorial to use rakudo from the command line interpreter shell ? | 03:13 | |
| i found something in the link from the /topic | 03:14 | ||
| this is fun | 03:15 | ||
| missingthepoint | bucky: the command line interpreter isn't very functional yet :( | ||
| it's known as a REPL | |||
| use.perl.org/~masak/journal/38279 | |||
| bucky: but you can set up your editor with a hotkey for 'execute in rakudo', i find that's helpful for experimenting :) | 03:17 | ||
|
03:19
kane___ left
03:20
donaldh left,
donaldh joined
|
|||
| bucky | hmm.. i'm still experimenting, when i execute a file it takes a couple milliseconds is that normal.. perl6 is a 4M executable and i still have a k7 | 03:20 | |
| that's with the release from GIT | 03:21 | ||
| does it have debugging symbols in it? | 03:22 | ||
| missingthepoint | bucky: not sure, you've exhausted my rakudo knowledge :) | ||
| but i suspect that slight delay on execute is normal (for now) | |||
| bucky | > sub { | 03:24 | |
| lambdabot | <no location info>: parse error (possibly incorrect indentation) | ||
| bucky | Unable to parse block; couldn't find final '}'... | ||
| yup.. hahaha | |||
| missingthepoint | rakudo devs: i LOVE rakudo. by "not very functional" i mean "perhaps not ready to be the subject of a tutorial" | 03:27 | |
| (though please correct me if i'm wrong on that point) | |||
|
03:27
hercynium_ left
|
|||
| missingthepoint | :) | 03:27 | |
|
03:32
alester joined
03:33
justatheory joined
03:36
ihrd joined
03:37
alester_ joined,
alester left
03:40
FurnaceBoy left
03:50
ihrd left
04:03
nihiliad left,
bucky left
04:04
alester_ left
04:15
nacho joined
04:17
alc left
04:18
jauaor left
04:21
iblechbot joined,
ihrd joined
04:22
skids joined
04:23
ihrd left
04:29
nacho_ joined,
nacho_ left
04:30
sri_kraih left
04:42
skids left
04:49
nacho left
04:52
ihrd joined
04:53
ihrd left
05:07
iblechbot left
05:23
justatheory left
|
|||
| ingy | TimToady: Where, exactly, does IO.pod live? | 05:36 | |
| phenny | ingy: 26 Jun 12:16Z <masak> tell ingy I'd be happy to help. where do I sign up? | ||
|
05:40
kate21de joined
05:49
kane_ joined
|
|||
| literal | ingy: svn.pugscode.org/pugs/docs/Perl6/Sp...ary/IO.pod | 05:53 | |
|
06:03
kimtaro joined
06:07
kane___ joined
06:19
molaf joined
06:21
frew|work left
|
|||
| dalek | ok: ca25edf | (Hinrik Örn Sigurðsson)++ | script/grok: Mention Exegeses/Apocalypses/articles in --help |
06:22 | |
| ok: e82aaa0 | (Hinrik Örn Sigurðsson)++ | (6 files): Add support for Perl 6 Table Index |
|||
| ok: 7f3e969 | (Hinrik Örn Sigurðsson)++ | (4 files): Bump version to 0.13 |
|||
| ok: 69dc1d9 | (Hinrik Örn Sigurðsson)++ | README: Update README |
|||
|
06:23
kane_ left
06:24
molaf left
06:36
kimtaro left
06:38
ihrd joined
|
|||
| moritz_ | missingthepoint: we all know that the REPL in rakudo isn't the best one, no need to apologize | 06:42 | |
| we call it "less than aweseome" ;-) | |||
|
06:47
DemoFreak joined,
alc joined
06:48
DemoFreak left
06:50
DemoFreak joined
06:51
barney joined,
DemoFreak left
06:54
DemoFreak joined
|
|||
| missingthepoint | moritz_: :) | 06:55 | |
|
06:57
alc left,
rfordinal joined
06:59
kane___ left
07:06
ihrd left
07:08
kate21de left
07:20
donaldh left
|
|||
| szabgab | I might have missed the answer, is there a built-in way to deduct the directory of the currently running script ? similar to $FinBin::Bin ? | 07:20 | |
|
07:20
donaldh joined
|
|||
| moritz_ | szabgab: if there is one, it's not yet implemented | 07:21 | |
| szabgab | I have not seen anything in the S28 | 07:22 | |
| and there is no basename, dirname either | |||
| moritz_ | maybe that's a task for a module, again | 07:23 | |
| szabgab | I'd be glad to add tests for basename, dirname if someone can suggest me where those functions should live ? | 07:25 | |
| or for now I'll write my own | |||
|
07:28
DemoFreak left
07:37
pmurias joined
|
|||
| pmurias | ruoso: hi | 07:37 | |
|
07:42
agentzh left
07:43
agentzh joined
|
|||
| Matt-W | Good morning | 07:45 | |
| pmurias | Matt-W: hi | 07:46 | |
|
08:04
rgrau joined
08:19
ejs1 joined
|
|||
| szabgab | rakudo: if ('abc' ~~ m/ (#.) /) { say "match" } | 08:27 | |
| p6eval | rakudo 9a7a1d: OUTPUT«match» | ||
| szabgab | is the () scoping the # comment ? | ||
| rakudo: if ('abc' ~~ m/ (#.) /) { say "match '$/'" } | 08:28 | ||
| p6eval | rakudo 9a7a1d: OUTPUT«match 'a'» | ||
| szabgab | hmm, now I am confused | ||
| rakudo: if ('abc' ~~ m/ (#) /) { say "match '$/'" } | |||
| p6eval | rakudo 9a7a1d: OUTPUT«Null PMC access in find_method()in Main (src/gen_setting.pm:3340)» | ||
| Matt-W | That seems odd | 08:30 | |
| moritz_ | indeed, it should complain about a parse error | ||
| std: if ('abc' ~~ m/ (#) /) { say "match '$/'" } | 08:31 | ||
| p6eval | std 27570: OUTPUT«##### PARSE FAILED #####Unrecognized regex metacharacter at /tmp/dMX8lnzK8s line 2:------> ; expecting any of: regex atom rxinfix termish whitespace wsFAILED 00:02 36m» | ||
| Matt-W | that's PGE at fault then? | ||
|
08:46
rfordinal left
08:47
rfordinal joined
08:52
pmurias left
08:53
agentzh1 joined
08:58
beggars joined
09:02
dakkar joined
09:10
agentzh left
09:11
explorer joined
09:16
molaf joined
09:20
explorer left
09:23
rfordinal left
|
|||
| szabgab | rakudo: 'abc' ~~ m/(.)/; say $0.perl | 09:31 | |
| p6eval | rakudo 9a7a1d: OUTPUT«Match.new( # WARNING: this is not working perl code # and for debugging purposes only ast => "a", Str => "a", from => 0, to => 1,)» | ||
| szabgab | interesting warning | ||
| more interesting in this case: | 09:32 | ||
| my %data; if ('name=foo' ~~ m/(.*)\=(.*)/) { %data{$0} = $1 }; say %data.perl | |||
| rakudo: my %data; if ('name=foo' ~~ m/(.*)\=(.*)/) { %data{$0} = $1 }; say %data.perl | |||
| p6eval | rakudo 9a7a1d: OUTPUT«{"name" => Match.new( # WARNING: this is not working perl code # and for debugging purposes only ast => "foo", Str => "foo", from => 5, to => 8,)}» | ||
| szabgab | rakudo: my %data; if ('name=foo' ~~ m/(.*)\=(.*)/) { %data{$0} = 1 }; say %data.perl | ||
| p6eval | rakudo 9a7a1d: OUTPUT«{"name" => 1}» | ||
| moritz_ | szabgab: (sorry, got called ayway) yes, the (#) seems like a PGE up - would you submit a bug report pleae? | ||
| *please | |||
| szabgab | I can but only with the title "something is odd here" as I don't understand it | 09:33 | |
| moritz_ | ok, I will then :-) | ||
| szabgab | better, as I don't even know what *should* be there | 09:34 | |
| anyway, this warning is a bit strange here | |||
| especially as I get it only on .perl -ing values I got from a regex | |||
| rakudo: my %data; if ('name=foo' ~~ m/(.*)\=(.*)/) { %data{$0} = "$1" }; say %data.perl | 09:35 | ||
| p6eval | rakudo 9a7a1d: OUTPUT«{"name" => "foo"}» | ||
| moritz_ | that's because we can't yet create match objects from Perl 6 code in any reasonable way | ||
| szabgab | and not if I stringify it | 09:36 | |
| moritz_ | so Match.perl is really only for debugging | ||
|
09:36
DemoFreak joined
|
|||
| szabgab | ic | 09:37 | |
| moritz_ | basically masak++ complained often enough about how hard introspection of match objects were | 09:38 | |
| szabgab: submitted as RT #67612, thanks for finding it | 09:39 | ||
| szabgab | finding bugs, any time :-) | 09:41 | |
|
09:43
clintongormley joined
09:44
zamolxes joined
09:46
meppl joined
09:49
payload left
09:50
M_o_C joined
09:57
colomon joined
10:02
sri_kraih joined
10:19
pmurias joined
10:27
sri_kraih left
10:28
sri_kraih joined
10:30
azawawi_ joined
|
|||
| azawawi_ | ahmadzawawi.blogspot.com/2009/07/pa...lease.html | 10:30 | |
|
10:30
azawawi joined
|
|||
| Matt-W | azawawi: hurrah! | 10:31 | |
|
10:33
azawawi_ left,
azawawi left
10:34
jlaire left,
payload joined
10:36
Stu joined,
Stu is now known as S2,
S2 is now known as Stu
|
|||
| Stu | Hi folks. | 10:37 | |
| Today is the first time I've written any Perl 6, and I must say I'm enjoying it so far. | |||
| moritz_ | great. | 10:38 | |
| BinGOs | Don't do it, it's a trap! | 10:39 | |
| Stu | It's going to take me roughly a million years to get used to new regex changes though. | ||
| moritz_ | aye, that takes time | 10:40 | |
| but especially for non-trivial regexes and grammars its really worth it | |||
| Stu | I'm playing with a grammar at the moment, actually. | ||
| I keep getting a strange error when performing a grammar.parse($string) in an if statement though. | 10:41 | ||
| Like if(grammar.parse($string)) { say "Hello."; } | |||
| moritz_ | ah | ||
| Stu | Statement not terminated properly at line 17, near "{\n say 'Y" | ||
| moritz_ | if() is interpreted as a subroutine call | ||
|
10:41
payload left,
payload1 joined
|
|||
| moritz_ | if $grammar.parse($string) { say "hello" } | 10:42 | |
| Stu | hmmm | ||
| Intriguing | |||
| Matt-W | or you can say if ($grammar.parse($string)) | ||
| moritz_ | basically anthing that ends in () is interpreted as sub/method call | ||
| Matt-W | but the brackets are no longer necessary, so most of us don't use them | ||
| Stu | I won't bother then. | ||
| It's tough to find many Perl 6 examples that are in-date and worth taking notes from. | |||
| moritz_ | that way you can define subroutines with the same name as keywords, if you file like | ||
| Stu: aye. perl6-projects.org has a few pointers | 10:43 | ||
| Stu | If I wanted to override the if "sub" | ||
| That'd get confusing pretty quickly. | |||
| Matt-W | IT would | ||
| Just because you can, doesn't mean you should :) | |||
| moritz_ | rakudo: sub if($x) { say $x }; if('foo') | ||
| p6eval | rakudo 9a7a1d: OUTPUT«foo» | 10:44 | |
|
10:44
frankshaw joined
|
|||
| Matt-W | As for example code... | 10:44 | |
| moritz_ | github.com/perl6/perl6-examples/tree/master contains much example code, most if it still working | ||
| Matt-W | What moritz_++ said | ||
| Stu | That's excellent. I'll bookmark that. | 10:48 | |
| Turns out my grammar must be incorrect anyway as nothing gets printed. Oh well. Time to delve back into that. | 10:49 | ||
| I should have started with something a little simpler than a UK postcode validator, I think. | |||
| Matt-W | Grammars can be a little sticky to debug | ||
| hah maybe :) | |||
| Stu | yeah | ||
| colomon | Speaking of regexes, I'm trying to figure out how to do multiple matches in one go. | ||
| S05 seems to imply it's possible, but I can't make it work in rakudo. | 10:50 | ||
| Not sure if my syntax is wrong, or it's not implemented yet. | |||
| moritz_ | colomon: might be not yet implemented. | 10:52 | |
| colomon: which syntax do you use? | |||
| colomon | (%entity{$entity_needed} ~~ /:g (\#\d+)/ | ||
| moritz_ | Stu: with grammars you should start with a very simple one (at most 2 simple rules), and incrementally improve it, testing it all the way | 10:53 | |
| yes, :g is NYI | |||
| Stu | moritz_, I had intended to do that, but then I ended up just blowing that away and trying to write a huge one. I might have to simplify it and start building it up again afterwards. | ||
|
10:54
M_o_C left
|
|||
| colomon | moritz_: is there another way to do it currently? | 10:54 | |
| It's a shame, it would be a beautiful bit of code if it worked. :) | |||
|
10:55
rjh left
10:57
rjh joined,
ruoso left
|
|||
| moritz_ | colomon: yes, you can do my @matches; %entity{$entity_needed}.match(rx/\#\d/, { @matches.push: $_ }, :g) | 10:58 | |
| it's a bit clumsy, but it should work | |||
| rakudo: my @m; "a 34 b56y7".match(rx/\#\d+/, { @m.push: $_ }); say @m.join(':') | 10:59 | ||
| p6eval | rakudo 9a7a1d: OUTPUT«too many arguments passed (3) - 2 params expectedin Main (/tmp/auwWdiIAhL:2)» | ||
| moritz_ | bah no, I'm stupid | 11:00 | |
| rakudo: my @m; "a 34 b56y7".subst(rx/\#\d+/, { @m.push: $_ }, :g); say @m.join(':') | |||
| p6eval | rakudo 9a7a1d: OUTPUT«» | ||
| moritz_ | rakudo: my @m; "a #34 b#56y#7".subst(rx/\#\d+/, { @m.push: $_ }, :g); say @m.join(':') | ||
| p6eval | rakudo 9a7a1d: OUTPUT«#34:#56:#7» | ||
| Stu | What do we say now instead of "Nothing was printed to the command line"? | ||
| "Nothing was said on the command line"? | |||
| moritz_ | colomon: that's a workaround | 11:01 | |
| Stu: "no output"? | |||
| Stu | I think I like "My script didn't say anything" | ||
| Ah, lunch time, I'll be back in a while. | 11:02 | ||
|
11:12
icwiener joined
|
|||
| colomon | moritz_: I'm getting "too many arguments passed (5) - 2 params expected" from it? | 11:14 | |
| moritz_ | colomon: from what? | ||
| colomon | This line: | ||
| %entity{$entity_needed}.match(rx/\#\d+/, { @matches.push: $_ }, :g); | |||
| moritz_ | (note that I used subst in the working example, not match) | ||
| yes, my first example was wrong. use the last one instead. | 11:15 | ||
| s/match/subst/ and you're done | |||
| colomon | will subst leave the string unchanged in this context? | ||
| moritz_ | yes. | ||
| it will return a modified copy | |||
| which you just discard, because you only care for the side effect | |||
| it's an ugly hack, but it works :-) | |||
| colomon | gotcha! | 11:16 | |
| I forgot subst doesn't modify the variable it is called on. | |||
| Definitely does the matching. Thanks! | |||
|
11:17
missingthepoint left
11:20
donaldh left,
donaldh joined
11:27
frankshaw left
11:39
DemoFreak left
11:43
ejs2 joined
11:48
payload1 left
11:52
ejs1 left
11:54
dukeleto left
11:57
ruoso joined
12:01
rgrau left
12:03
cviorel joined
|
|||
| cviorel | hi, can someone help me about a little problem using PDF::Table? | 12:04 | |
| takadonet | morning everyone | 12:06 | |
| pmurias | ruoso: hi | 12:17 | |
| cviorel: try #perl for perl 5 questions | |||
|
12:18
jauaor joined
|
|||
| ruoso | hi pmurias | 12:31 | |
| pmurias | ruoso: what would be a good syntax for adding a RI type annotation to m0ld? | 12:32 | |
| i'm currently using RI($capture,"capture"); | 12:33 | ||
|
12:33
cviorel left
|
|||
| ruoso | pmurias, what do you mean by "RI type annotation" | 12:33 | |
| pmurias | this register contains an object of a given RI | 12:34 | |
| ruoso in a unconfortable sprint of meetings | 12:35 | ||
| pmurias, ah... right... | |||
| pmurias, I see... | |||
| pmurias, what about my capture $x? | |||
|
12:36
ejs1 joined,
ejs2 left
|
|||
| Lorn | hi, how i access foo key? <code>my %hash = ( 'foo' => 1, 'bar' => 2);</code> | 12:37 | |
| pugs_svn | r27571 | pmurias++ | [re-smop] remove useless statement | ||
| pmurias | Lorn: %hash<foo> | ||
| ruoso: that's an important case, can we assume $x RI? | 12:38 | ||
| pugs_svn | r27572 | pmurias++ | [re-smop] m0ld recognises RI($capture,"capture") and treats positional | ||
| r27572 | pmurias++ | method specialy | |||
| Lorn | rakudo: my %hash = ('foo' => 1, 'bar' => 2); say %hash<foo>; | ||
| p6eval | rakudo 9a7a1d: OUTPUT«1» | ||
| ruoso | pmurias, that's the point, sometimes the context allow us to assume the RI | 12:40 | |
| for instance... | |||
| (btw... the snippet I wrote was m0ld code, not Perl 6) | 12:42 | ||
| but in Perl 6 code like: "my $a = 1; say $a" we do can assume that $a is a S1P__Scalar | |||
| ruoso going to another meeting & | 12:43 | ||
|
12:44
ruoso left
12:58
ejs1 left
13:01
ejs1 joined
13:05
icwiener left
13:11
ruoso joined
|
|||
| ruoso back | 13:18 | ||
| pmurias, the notation you're talking about is to providing more semantics to m0ld code, right? | |||
| pmurias | ruoso: yes | 13:20 | |
| ruoso | pmurias, so i was thinking that in the m0ld code you can do "my type $x" | ||
| (that wasn't Perl 6 code) | 13:21 | ||
| pmurias | noticed that after reading the btw. note | ||
| ruoso: what we need to have eventually is to support many variants of the same yeast frame with different assumptions | 13:24 | ||
| ruoso | pmurias, that'd be cool | 13:25 | |
| but it's also possible to do ifs to set different frame->pc values | |||
| pmurias | you mean the first time the frame it sets the frame->pc depending on the RI of the externally set registers? | 13:27 | |
| or just starting from a different point? | 13:29 | ||
| ruoso | pmurias, using frame->pc to set paths of execution according to the implementatino types | 13:32 | |
|
13:35
szabgab left
|
|||
| pmurias | ruoso: do you think we could sketch a roadmap for the RI-based optimalisations? | 13:37 | |
|
13:37
M_o_C joined
|
|||
| ruoso | pmurias, later today, tes | 13:38 | |
| *yes | |||
|
13:40
yahooooo left
|
|||
| pmurias | ruoso: what i think would very usefull for optimalisation would be having a SSA form for m0ld | 13:47 | |
| ruoso | SSA? | 13:50 | |
| pmurias | single static assignment | ||
| ruoso | ah... right | 13:51 | |
|
13:56
szabgab joined
13:57
frew_ left
14:04
skids joined
14:16
FurnaceBoy joined
|
|||
| [particle] | pmurias: have you looked at gcc's tree-ssa? | 14:17 | |
|
14:19
kane_ joined,
yahooooo joined
14:22
szabgab left,
szabgab joined
14:25
szabgab left
14:26
szabgab joined
|
|||
| pmurias looks at tree-ssa | 14:27 | ||
|
14:30
cbk left
14:32
KyleHa joined,
ejs1 left
14:36
justatheory joined
14:41
justatheory left,
szabgab left
14:47
ejs joined,
ejs left
14:48
ejs joined
|
|||
| ruoso later & | 14:50 | ||
|
14:53
ruoso left
14:56
ejs left,
kidd_` joined
14:57
ejs joined,
beggars left
15:03
nihiliad joined,
nihiliad left,
nihiliad joined
15:15
Exodist joined
15:20
donaldh left
15:21
donaldh joined,
ejs left
15:30
nihiliad left,
nihiliad joined,
nihiliad left
15:31
nihiliad joined
15:37
justatheory joined
15:38
dLux joined
|
|||
| pugs_svn | r27573 | kyle++ | [t/spec] Test for RT #62732 | 15:39 | |
| r27574 | kyle++ | [t/spec] Test for RT #62772 | |||
| KyleHa | Is it true that the Test.pm used for spectest is in the Rakudo repo, not in Pugs? | ||
| pugs_svn | r27575 | kyle++ | [t/spec] Test for RT #63014 | ||
| r27576 | kyle++ | [misc] Messing with test-reporter.pl | |||
| r27577 | kyle++ | [t/spec] Fix fudge for RT #63014 | 15:40 | ||
| r27578 | kyle++ | [t/spec] Test for RT #63894 | |||
| r27579 | kyle++ | [t/spec] Test for RT #63900 | |||
| moritz_ | somebody used git-svn it seems :-) | ||
| KyleHa: yes, true | |||
| pugs_svn | r27580 | kyle++ | [t/spec] Test for RT #64116 | ||
| r27581 | kyle++ | [t/spec] Test for RT #64344 | |||
| r27582 | kyle++ | [t/spec] Fix test g00f | |||
| moritz_ | KyleHa: if you have patches for it, I can apply those | ||
| KyleHa | I'd like to have dies_ok be a fail if the death is from Null PMC access. | ||
| Yeah, I was offline all day yesterday with git-svn. | 15:41 | ||
| moritz_ | that's an interesting suggestion - wonder what pmichaud and jnthn think about it | ||
| KyleHa | I've already tried running the spectests with that change, and there are some failures it turns up. | 15:42 | |
| pmichaud | Good morning #perl6 | ||
| KyleHa | Looks like 14 tests, all told. | ||
| moritz_ | rakudo: my %h = {1, 2, 3, 4}; say %h.perl | 15:43 | |
| p6eval | rakudo 9a7a1d: OUTPUT«Odd number of elements found where hash expectedin Main (/tmp/pgrAvwCCRF:2)» | ||
| moritz_ | KyleHa: that seems a worthy tradeoff for improved quality | ||
| [particle] | should that work? | ||
| moritz_ | dunno | 15:44 | |
| TimToady | nope | ||
| [particle] | rakudo: my %h = {1 => 2, 3 => 4}; say %h.perl | ||
| p6eval | rakudo 9a7a1d: OUTPUT«{"1" => 2, "3" => 4}» | ||
|
15:44
dakkar left
|
|||
| PerlJam | rakudo: my %h := { 1, 2, 3, 4 }; say %h.perl | 15:44 | |
| TimToady | try := | ||
| p6eval | rakudo 9a7a1d: OUTPUT«{ ... }» | ||
| PerlJam | as long as that one works. | ||
| Hmm. | |||
| rakudo: my %h = 1,2,3,4; say %h.perl; | |||
| KyleHa | I was looking at a number of tickets for things that rightfully should die, but not with Null PMC like they do now. I didn't want to write a test that says "dies, but not with Null PMC", so I thought of folding it into dies_ok. | ||
| p6eval | rakudo 9a7a1d: OUTPUT«{"1" => 2, "3" => 4}» | ||
| KyleHa | Anyway, I have a patch. | 15:45 | |
| PerlJam | so rakudo took the bare {} as a Code thingy? | ||
| TimToady | no, as a Hash thingy | ||
| but there's only one of it | |||
| pmichaud | I think rakudo thinks { 1, 2, 3, 4 } is a Code thingy. | ||
| TimToady | for the same reason @foo = [1,2,3] makes one element in @foo | ||
| pmichaud | rakudo: my $a = { 1, 2, 3, 4}; say $a.WHAT | ||
| p6eval | rakudo 9a7a1d: OUTPUT«Block()» | ||
| moritz_ | r27580 introduced $obj.env = { hash }, where .env is an rw hash attribute | ||
| TimToady | well, it's still a single thingy | 15:46 | |
| moritz_ | just wanted to check that that's sensible | ||
| pmichaud | and { 1, 2, 3, 4} *is* a Code thingy according to the spec, yes ? | ||
| TimToady | yes | ||
| pmichaud | okay. :-) | ||
| PerlJam | ah, right. no pairs | ||
| TimToady | I was thinking y'all were asking about the => form | 15:47 | |
| moritz_ was, initially, but forgot that the forms are different | |||
| pmichaud: what do you think about KyleHa++'s suggestion to dies_ok? | |||
| pmichaud | moritz_: I can go either way on it at the moment | 15:48 | |
| moritz_ | ok | ||
| I like that idea | |||
| pmichaud | It would mean that Test.pm becomes rakudo-specific | ||
| PerlJam | %h := { } seems like it should warn if perl thinks the {} is anything other than a Hash | ||
| KyleHa | Given that it's in the Rakudo repo, I thought it was Rakudo-specific already. | ||
|
15:48
bionoid left
|
|||
| moritz_ | PerlJam: not warn, type-check fail | 15:49 | |
| pmichaud | KyleHa: afaik, there's nothing about Test.pm at the moment that limits it to Rakudo. | ||
| TimToady | the proper generalization would be "dies ok with this error and not some other" | ||
| pmichaud | PerlJam: I agree, I thought that one should be an error also. | ||
| PerlJam | moritz_: oh, indeed. | ||
| pmichaud | I agree with TimToady++ -- proper would be to say what error is expected | ||
| moritz_ | TimToady: right, but since we don't have error categories yet, that seems a bit far off | ||
|
15:49
Exodist left,
skids left,
simcop2387 left,
japhb left,
Hale-Bopp left
|
|||
| PerlJam | moritz_: we could start by making one for just this specific situation :) | 15:50 | |
| KyleHa | I agree also, I'd like to specify the correct error, but often I don't know that. I'd like to be able to at least say 'not this one', and it's always true that Null PMC is wrong. | ||
| pmichaud | KyleHa: yes, but Null PMC is also Rakudo-specific. | ||
| KyleHa | Yep. | ||
| moritz_ | right | ||
| that's why it should go into Test.pm, not the spectests | 15:51 | ||
| pmichaud | We've been attempting to keep Test.pm in a form that other implementations could use | ||
| moritz_ | until the better generalization is available | ||
| KyleHa | Here's a question...do we think that "Null PMC access" will be a correct error on any implementation, ever? | ||
| moritz_ | KyleHa: I think all implementations will have some kind of internal error, whatever it will be | ||
| maybe we can just introduce X::Internal | 15:52 | ||
| and massage rakudo somehow to always turn a Null PMC access into X::Internal | |||
|
15:52
Exodist joined,
skids joined,
simcop2387 joined,
japhb joined,
cookys joined,
gfldex joined,
Hale-Bopp joined
|
|||
| moritz_ | (at least when it's caught) | 15:52 | |
|
15:53
ruoso joined
|
|||
| pmichaud | KyleHa: anyway, please submit the patch. At the moment I'm inclined to go ahead and apply it. | 15:53 | |
| moritz_ too | |||
| PerlJam | If we just make a way to register errors that should fail and then provide another module that registers all of the known rakudo specific ones, then it could be "use Test; use Rakudo::Fail; ..." or something | ||
| moritz_ | PerlJam: that should still not go into the test suite | ||
| pmichaud | PerlJam: but we don't want to modify the spectests with "use Rakudo::Fail" | 15:54 | |
|
15:54
cognominal_ joined,
cookys_ joined
|
|||
| moritz_ | we do test rakudo regressions there, because all other implementations must also not have the same regressions | 15:54 | |
|
15:54
bionoid joined
|
|||
| KyleHa | OK, I'm off to try to follow the patch submission instructions... | 15:54 | |
|
15:54
bionoid is now known as Guest78406
|
|||
| PerlJam | pmichaud: then make it part of fudge somehow ... ? | 15:54 | |
| moritz_ | KyleHa: just git-format-patch and mail to [email@hidden.address] | 15:55 | |
| pmichaud | PerlJam: Seems like the better approach would be to start defining the expected errors | ||
| moritz_ | aye. | ||
| I had long hoped that somebody else would do that :/ | |||
|
15:57
cmarcelo joined
15:58
japhb left,
skids left,
Exodist left,
cookys left,
Hale-Bopp left,
gfldex left,
simcop2387 left,
cmarcelo left
15:59
Exodist joined,
skids joined,
simcop2387 joined,
japhb joined,
gfldex joined,
Hale-Bopp joined
16:03
eiro joined
16:08
barney left,
Stu left
16:11
rfordinal joined
|
|||
| TimToady | the main problem with defining the expected errors is that, however we do it, it'll be wrong :) | 16:12 | |
| but perhaps less wrong than not doing it | |||
| moritz_ | would you think tha a type per error is appropriate? | 16:13 | |
| KyleHa | I finally got my patch up. It's RT #67622. | ||
| TimToady | it's at least an enum per error, which is more like a value per error that can also convey type | 16:14 | |
| KyleHa | I'd be tempted to define an error importance, for when some line has many errors, and we have to decide which to report. | ||
| moritz_ | KyleHa: typically the compiler will abort after the first detected error | 16:15 | |
| TimToady | importance is probably impossible to determine in reality | ||
| what the computer thinks is least important is probably why the rocket blew up | |||
| KyleHa | Not every compiler will detect the same "first" error in the same situation, I suppose... | 16:16 | |
| TimToady | because if it had been considered important in the first place, the rocket would have been designed differently | ||
| KyleHa | But I don't know that much about compilers. | ||
| moritz_ | KyleHa: I think we can leave some room there | ||
| anyway, I want checking for errors with smart matching | 16:18 | ||
| so that one can say given $! { when X::Syntax { ... }; when X::Internal { say "Rakudo was very bad" } } | |||
| TimToady | the most important thing is unique identity; other grouping info can be inflicted externally | 16:19 | |
| include "importance" | |||
| *including | |||
| moritz_ | so... simply a number wrapped in an object? | ||
| TimToady | if an enum could be a member of multiple types without being in a fixed hierarchy, that'd be ideal | 16:20 | |
| moritz_ | aye | ||
| maybe with subset types? | 16:21 | ||
| a big enum with all individual errors | |||
| TimToady | inside-out exception types? | ||
| "do you think you're this type?" | |||
| moritz_ | and then a subset X::Syntax of X where any (X::SyntaxFoo, X::SyntaxBar) | 16:22 | |
| KyleHa | It's not unusual for error messages to be listed in a file for i18n purposes. They all have to have some handle somehow. | ||
| TimToady | yes, though often the key is just the original format string | ||
| KyleHa | Crude FTW. | 16:23 | |
| TimToady | what's the simplest thing that will work, for all values of "work"? | 16:24 | |
| and the mapping of format string to unique coded identifier could also be external to the in-line code | 16:25 | ||
| handled by the error formatter/constructor | |||
| and if there's no match in the database, each formatter probably has its own default | 16:26 | ||
| the parser's panic method defaults to "X::ParseFail" or some such | |||
| moritz_ | sounds sane | 16:27 | |
| but I wouldn't include the Fail in the name | |||
|
16:27
lucs joined,
nihiliad left
|
|||
| TimToady | all names are subject to bikeshedding :) | 16:27 | |
|
16:28
nihiliad joined
|
|||
| moritz_ | sure. | 16:28 | |
| but my bike shed has the nicer color :-) | |||
|
16:28
kane_ left
16:29
rfordinal left
|
|||
| moritz_ | TimToady: can I convince you to write something like that up in a draft synopsis? | 16:33 | |
| TimToady | I don't need convincing; I need free time and gumption. :) | 16:40 | |
| takadonet | gumption? | 16:42 | |
| TimToady | www.thefreedictionary.com/gumption | 16:44 | |
| KyleHa | While offline yesterday, I wrote S02-*/nil.t which has something I found a little odd. | 16:45 | |
| rakudo: sub n { return }; say n ~~ Nil; say n() ~~ Nil; | |||
| p6eval | rakudo 9a7a1d: OUTPUT«1» | ||
| KyleHa | What's the difference between 'n' and 'n()' ? | 16:46 | |
| TimToady | n is a listop | 16:49 | |
| and will misparse the following ~~ Nil | |||
| should probably put in something to catch the non-sensical doubling stringification | |||
| *double | 16:50 | ||
| pmichaud | KyleHa: n ~~ Nil is the same as n( ~( ~Nil ) ) | ||
| TimToady | biab & | 16:51 | |
| KyleHa | pmichaud: Is that how it should be or just how it is right now? | 16:53 | |
| pmichaud | Well, unless we special-case prefix;<~~> to do something else, that's "how it should be" | 16:54 | |
| i.e., it's the same as n ~ ~ Nil | |||
| KyleHa | OK, then I probably need to fix my test. | 16:55 | |
|
17:03
Psyche^ joined,
kane_ joined
17:05
jauaor left
|
|||
| KyleHa | Who should I bug to change the status of a ticket that I think is resolved or should be merged, or whatever? | 17:06 | |
| Or is it best just to put a note in the ticket and let someone deal with it when it comes around for a review? | |||
| pugs_svn | r27583 | kyle++ | [t/spec] Fix the 63894 test. | 17:10 | |
| pmichaud | KyleHa: I can do it | 17:11 | |
| KyleHa | I'd reject #63894. | ||
| moritz_ | pmichaud: you can also give KyleHa admin privs. | 17:12 | |
| (bug admin, that is) | |||
| KyleHa | These three are the same (should be merged): 61960 62758 63892 | ||
|
17:13
donaldh left
|
|||
| pmichaud | KyleHa: what's your username on RT? | 17:13 | |
| KyleHa | rakudo: my $a if 0; say $a; | ||
| p6eval | rakudo 9a7a1d: OUTPUT«Null PMC access in isa()in Main (/tmp/QhO3nFeXfm:2)» | 17:14 | |
| KyleHa | pmichaud: Looks like it's 'KyleHa'. | ||
| I always log in with my email address, [email@hidden.address] | |||
|
17:15
Patterner left,
Psyche^ is now known as Patterner
17:16
justatheory left
17:18
zamolxes left
|
|||
| pmichaud | KyleHa now added as a bugadmin | 17:19 | |
| KyleHa | Thank you! | 17:20 | |
| pmichaud | I'll do the ticket merge | ||
| actually, I'll let you do it :-) | |||
| so, navigate to ticket #62758 | 17:21 | ||
| click on "Links" in the upper left menu | |||
| put "61960" in the "Merge into" box and hit "Save Changes" | |||
| do the same for 63892 | |||
| in general I tend to merge later tickets into earlier ones, instead of vice-versa | 17:22 | ||
|
17:24
donaldh joined
17:25
asciiville joined
|
|||
| KyleHa | Oh, while you were typing that, I was figuring it out on my own. Thanks, though!! | 17:26 | |
| Alright, I'm going to consider nourishment before I get into anything else. | 17:28 | ||
|
17:34
asciiville is now known as curious_one
17:40
justatheory joined
17:45
curious_one is now known as asciiville
17:52
cdarroch joined
|
|||
| asciiville | x | 17:52 | |
|
17:54
DemoFreak joined
17:55
szabgab joined
|
|||
| asciiville | Does anyone know if SQLite3 interface is working correctly in Rakudo/Parrot? My PM group is planning for a Perl 6 project and I'm self-tasked with investigating the database interface layer at this point. | 17:56 | |
| moritz_ has no idea | 17:58 | ||
| but you can just try it | |||
| should be in the parrot repo somewhere under examples/ or so | |||
|
18:02
kidd_` left
18:03
kidd_` joined
18:18
alester joined,
stevan_ joined,
coke_ joined
|
|||
| coke_ | perl6 - regarding RT#63894 - is there a Deparse for perl6? | 18:18 | |
|
18:19
coke_ is now known as [Coke]
18:20
stevan_ left,
stevan_ joined
18:27
FCO left
18:28
SmokeMachine joined
|
|||
| ruoso | pmurias, hi | 18:30 | |
| pmurias | ruoso: rehi | ||
| ruoso | so... I finally have 2 hours without a meeting :) | 18:31 | |
| Tene | [Coke]: --target=parse ? | ||
| [Coke] | tene;perl6, not rakudo. | ||
| Tene | ah | ||
| ruoso | [Coke], you mean STD? | ||
| [Coke] | that's more of a standalone thing, no? | 18:32 | |
| ruoso | [Coke], yeah... but rakudo is one perl6 | ||
| but as you was asking for something that wasn't rakudo | |||
| I was suggesting one of the other meanings of perl6 | |||
| Tene | fwiw, prefix:~~ should at least be a parse-time warning... | 18:33 | |
| [Coke] | ruoso: no, I'm asking for something that is standard, not "in a particular version of perl6" | ||
| ruoso | [Coke], in that case you want STD | ||
| [Coke] | ruoso: no, I don't. =-) | ||
| ruoso | std: say 'Hello' | ||
| p6eval | std 27583: OUTPUT«ok 00:02 36m» | ||
| ruoso | [Coke], ok, not just STD, but STD after passing through gimme5 or viv... that will give you a parse tree | 18:34 | |
| [Coke] | ruoso: no. that's not what I'm after, either. | ||
| I'm asking if there's a plan for something core, not in a particular implementation, even if that implementation is larry's. | |||
| ruoso | ok... so I really don't know what you're after | ||
| pmurias | [Coke]: you mean a standard way to deparse things? | 18:35 | |
| [Coke] | pmurias: Yes. | ||
| ruoso just notice the "de" in "deparse" | 18:36 | ||
| Tene | [Coke]: for doing it by hand, at least, there's probably "Match some text against the Perl 6 grammar and then print the .perl of the match object returned" | ||
| Not quite an answer, though. | |||
| pmurias | deparsing is turning an AST into source code? | ||
| ruoso | yeah... that was the part I didn't notice before | ||
| [Coke], no... there isn't any deparse implemented yet afaik | 18:37 | ||
| [Coke] | like B::Deparse. =-) | ||
|
18:37
stevan_ left
|
|||
| ruoso | [Coke], but it would certainly be cool :) | 18:37 | |
| ruoso challenging^Wnot really suggesting [Coke] to implement one :) | 18:38 | ||
| moritz_ | rakudo.de/rakudo-flow.png | ||
| that's what I spent my last hour on (including slowly learning inkscape) | |||
| pmurias | ruoso: we need to sketch the optimalisation ROADMAP as i tend to procrastinate withought a plan | 18:40 | |
|
18:42
xinming_ joined
|
|||
| ruoso | pmurias, I was about to call you in pvt to start that ;) | 18:42 | |
|
18:42
terje_ joined,
terje_ left
|
|||
| asciiville | [moritz_], nice flow diagram! | 18:42 | |
| moritz_ | I just wonder if I should remove the dynops/dynpmc part | 18:44 | |
| and instead mark which parts belong to parrot, and which belong to PCT | |||
|
18:47
justatheory left
|
|||
| asciiville | Hmmm. I'm not sure I can answer that. :) | 18:47 | |
|
18:49
icwiener joined
|
|||
| moritz_ | rakudo.de/rakudo-flow-2.png another attempt | 18:58 | |
|
18:59
xinming left
|
|||
| moritz_ | feedback welcome. If none comes, I'll blog it. | 19:00 | |
| asciiville | [moritz_], the context blocks make it even clearer. | ||
| TimToady | viv deparses the AST when you use -6 | 19:01 | |
| pugs_svn | r27584 | lwall++ | [STD] recognize certain uses of infix where term expected | 19:03 | |
|
19:07
alester left
19:12
justatheory joined
|
|||
| TimToady | std: say > 27584 | 19:12 | |
| p6eval | std 27583: OUTPUT«ok 00:02 36m» | ||
| ruoso | o.O | 19:13 | |
| TimToady | std: say ~~ 27584 | 19:16 | |
| p6eval | std 27583: OUTPUT«ok 00:02 38m» | ||
|
19:20
donaldh left,
donaldh joined
|
|||
| TimToady | std: say ?? 27584 | 19:21 | |
| p6eval | std 27583: OUTPUT«ok 00:02 38m» | ||
| TimToady | std: say ~~ 27584 | 19:25 | |
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix ~~ instead at /tmp/7WQalrg4dc line 1:------> say ~~ 27584FAILED 00:02 36m» | ||
| TimToady | std: say >= 27584 | ||
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix >= instead at /tmp/aw62TgXZkV line 1:------> say >= 27584FAILED 00:02 36m» | 19:26 | |
| TimToady | std: say »XRXRX« 27584 | ||
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix »XRXRX« instead at /tmp/YdodT3y6wX line 1:------> say »XRXRX« 27584 expecting any of: infix or meta-infix infix stopper standard stopper terminatorFAILED 00:02 36m» | ||
| TimToady | std: say !== 27584 | 19:27 | |
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix == instead at /tmp/nXf1My9Ys1 line 1:------> say !== 27584FAILED 00:02 38m» | ||
| TimToady | std: say != 27584 | ||
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix = instead at /tmp/Y30xGhhwgw line 1:------> say != 27584FAILED 00:02 38m» | ||
| TimToady | heh | ||
| std: foo == 27584 | 19:31 | ||
| p6eval | std 27584: OUTPUT«##### PARSE FAILED #####Preceding operator expects term, but found infix == instead at /tmp/6RCZ4CVV3Q line 1:------> foo == 27584FAILED 00:02 36m» | ||
| KyleHa | std: my $a if 0; say $a; | 19:32 | |
| p6eval | std 27584: OUTPUT«ok 00:02 37m» | ||
| KyleHa | rakudo: my $a if 0; say $a; | 19:33 | |
| p6eval | rakudo 9a7a1d: OUTPUT«Null PMC access in isa()in Main (/tmp/yRt740AO5p:2)» | ||
| pmichaud | $a isn't being initialized. | ||
| (because of the "if 0" part) | |||
| KyleHa | So that should live? | ||
| pmichaud | I don't know. | 19:34 | |
| TimToady | variables should be born undef, not Null PMCs :) | ||
| this is specced in CATCH | |||
| pmichaud | TimToady: agreed -- the question is when they are "born" :-) | ||
|
19:34
szabgab left
|
|||
| pmichaud | in the "my $a if 0" case -- when is $a born? | 19:35 | |
| TimToady | do { 1/0; my $x; CATCH { when /division/ { say $x.defined } } should work | ||
| pmichaud | or in the case just given with CATCH -- when is $x born? | 19:36 | |
| TimToady | all lexicals that are visible to the CATCH should be undef when the block starts | ||
|
19:36
takadonet left
|
|||
| pmichaud | okay, so all lexicals are "born" at the start of the block? | 19:37 | |
| (even if they're not visible at the start of the block) | |||
|
19:38
alester joined
|
|||
| TimToady | likewise { eval 'say not OUTER::<$x>.defined'; my $x } should say 1 | 19:42 | |
| should also work if you s/OUTER/SETTING/ | 19:43 | ||
| pmichaud | that sounds like the answer to my question above is "yes", then :-) | ||
| the lexical exists as of the start of the block | |||
| how about: | |||
| ruoso | pmichaud, yes... that also fits with "my $x; my $x;" doesn't declare a new variable | 19:44 | |
| pmichaud | do { 1/0; my Int $x; CATCH { when /division/ { say $x ~~ Int } } # true | ||
| ruoso: I envision that as being something different | |||
| ruoso: in that case, the second "my $x;" just refers back to the already existing one. | |||
| ruoso: but it doesn't say anything about when $x was vivified | |||
| (or bound, or whatever) | |||
| ruoso | pmichaud, the point is that there is only one lexpad for each block | 19:45 | |
| TimToady | I think if we know the variable is Int at compile time, it should be borned that way | ||
| pmichaud | TimToady: right, I agree. | ||
| ruoso: I never felt otherwise. | |||
| "Null PMC" in rakudo generally means an unbound variable. | |||
| TimToady | eval '$x = "abc"'; my Int $x; | ||
| ruoso | ah... | ||
| TimToady | that should have a type error on assignment | ||
| ruoso | I see what you're asking now | ||
| pmichaud | TimToady: works for me | 19:46 | |
| ruoso | pmichaud, I don't think there's a way to have an unbound variable in the lexpad | ||
| it needs to be bound to *something* | |||
| there's no NULL | 19:47 | ||
| pmichaud | ruoso: in Parrot, symbols default to binding to the Null PMC | ||
| ruoso | pmichaud, right... so rakudo should initialize it to the proper container when initializing the lexpad | ||
| pmichaud | which is just a PMC that throws exceptions whenever you try to do anything with it other than test it for nullness | ||
| ruoso: rakudo doesn't have a separate "initialize the lexpad" step. | |||
| (at least, it doesn't have one yet) | 19:48 | ||
|
19:48
rfordinal joined
|
|||
| TimToady | seems like HLLness should let you substitute Object as the null object | 19:48 | |
| pmichaud | lexpads are statically attached to subroutines when they are compiled | ||
| TimToady: yes, that would be nice (more) | |||
| But that wouldn't help us in the case of "my Int $x" | |||
| ruoso | pmichaud, it looks to me you need a "initialize the lexpad" step | ||
| TimToady | trew | ||
| pmichaud | ruoso: yes, but that wasn't clear to me until TimToady said that lexicals are born at the start of their enclosing block | 19:49 | |
| jnthn++ and I have been discussing that we would attach lexpad initializers to subs, similar to how we do signatures now | |||
| ruoso | ah... ok... that was what I was trying to say... | ||
| pmichaud | so that the first thing that happens upon entering a block is that all of its lexicals are initialized from the prototype lexpad | 19:50 | |
| actually, we'd like *parrot* to work that way as well, but we're going to proof-of-concept the idea in Rakudo | |||
| TimToady | the only alternative is to put a guard around any access that might produce NULLness to translate that to Objectness | ||
| pmichaud | that's the alternative that PCT provides (but Rakudo doesn't use) | 19:51 | |
| because it gets expensive. | |||
| TimToady | nodnodnod | ||
| sjohnson | :) | ||
| pmichaud | PCT didn't want to impose the notion of "all lexicals are born at the start of the block", since there could be languages where that's not the case. | ||
| TimToady | *grumble* *grumble* *"managed code"* *grumble* *grumble* | 19:52 | |
| pmichaud misses the reference. | 19:53 | ||
| TimToady | "managed code" is the C# notion of code that can't coredump | ||
| sort of the Java notion as well | 19:54 | ||
| except C# explicitly allows for "unmanaged code" | |||
| pmichaud | ah, okay. | ||
| TimToady | seems like parrot doesn't do much to help us make the distinction currently... | ||
|
19:55
alester left
|
|||
| TimToady | (if we count Null PMC as a variety of core dump) | 19:55 | |
| pmichaud | anyway, when we refactor rakudo so that each block gets its lexicals initialized from a prototype lexpad upon block invocation, then all of the above should work as expected. | ||
| Actually, I think Null PMC is explicitly Parrot's notion of "I caught something that might've coredumped" | |||
| KyleHa | So, if all lexicals are born at the start of the block, does that mean { $a = 7; my $a } works? | ||
| pmichaud | KyleHa: you'd get "$a not declared" | ||
| KyleHa | OK, thanks. | 19:56 | |
|
19:56
sri_kraih_ joined
|
|||
| pmichaud | since at the point where we encounter $a in the parse, $a hasn't been declared yet. | 19:56 | |
| pmurias | perl6: sub foo {say "hi"};{eval('&foo := sub {say "hello"}');foo();} | ||
| p6eval | pugs: OUTPUT«hello» | ||
| ..elf 27584: OUTPUT«/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError) from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each' from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map' from | |||
| ../home/evalenv/pugs/misc… | |||
| ..rakudo 9a7a1d: OUTPUT«hi» | |||
| KyleHa | And the part of the spec for this is S04 ? | 19:57 | |
| pmichaud | S02, I think. | ||
| KyleHa | Ah, in fact S04-declarations/my.t has tests like this already: eval_dies_ok('$x; my $x = 42' | 19:58 | |
| pmichaud | nope, S04 | ||
| TimToady | S04:1200 | ||
| that's for meaning of $x before elaboration | 19:59 | ||
| though it's only claiming Objectness there, not Intness | 20:00 | ||
| pmichaud | I'm fine with applying RT #67622 for now. | 20:01 | |
| KyleHa | I don't think I have commit to Rakudo. | 20:02 | |
| Just in case that's in question. | |||
|
20:04
cspencer joined
|
|||
| TimToady | also back around line 60 for when 'my $x' introduces the new symbol, and relationship to OUTER::<$x> | 20:06 | |
|
20:12
sri_kraih left
|
|||
| pmurias | perl6: sub foo {say "hi"}; {&foo := sub {say 'monkey patch foo'}};foo() | 20:12 | |
| p6eval | elf 27584: OUTPUT«/home/evalenv/pugs/misc/STD_red/match.rb:141:in `block in to_dump0': undefined method `to_dump0' for true:TrueClass (NoMethodError) from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `each' from /home/evalenv/pugs/misc/STD_red/match.rb:140:in `map' from | ||
| ../home/evalenv/pugs/misc… | |||
| ..rakudo 9a7a1d: OUTPUT«hi» | |||
| ..pugs: OUTPUT«monkey patch foo» | |||
| ruoso | hmmm... seems like a mis-optimization by rakudo | 20:13 | |
| TimToady, right? | 20:14 | ||
|
20:14
rfordinal3643 joined
|
|||
| ruoso | TimToady, or maybe that falls into the "the multi candidate list is fixed" category? | 20:15 | |
|
20:16
icwiener_ joined
|
|||
| jeekobu | Just like many elections | 20:17 | |
| pmichaud | speaking of lexical initialization and types.... I suspect this question has been asked (and answered) before, but I don't recall the answer.... (more) | 20:19 | |
| What happens with... | |||
| my $a = 'xyz'; my Str $b := $a; $a = 3; | |||
| Tene | pmichaud: well, what happens with: my Str $a = 'xyz'; my $b := $a; $b = 3; ? | 20:21 | |
| Is that specced, or just a restatement of the problem? | |||
| pmichaud | Tene: I don't know the answer, which is why I'm asking. | 20:22 | |
| Tene | pmichaud: is a Str constraint different from an 'ro' constraint? | ||
| pmichaud | Tene: okay, your question is confusing me. :-| | 20:23 | |
| Tene | pmichaud: then ignore it. :) | ||
|
20:24
molaf left
|
|||
| pmichaud | Tene: however, there's an answer to what you just asked about 'ro'.... (more) | 20:24 | |
| rakudo: my $a = 5; sub foo($b) { $a = 6; }; foo($a) | 20:25 | ||
| p6eval | rakudo 9a7a1d: ( no output ) | ||
| pmichaud | even though $b is read only, it doesn't impose read-only-ness on $a | ||
| so to generalize that... | 20:26 | ||
| Tene | rakudo: my $a = 5; sub foo($b) { $b = 6; }; foo($a); say $a; | ||
| pmichaud | rakudo: my $a = 'xyz'; sub foo(Str $b) { $a = 3; }; foo($a) | ||
| p6eval | rakudo 9a7a1d: OUTPUT«Cannot assign to readonly variable.in sub foo (/tmp/scVaeabKpZ:2)Null PMC access in get_pmc_keyed()current instr.: 'perl6;Perl6;Compiler;eval' pc 289208 (src/gen_actions.pir:24161) (src/gen_setting.pm:3340)» | ||
| rakudo 9a7a1d: ( no output ) | |||
| pmichaud | rakudo: my $a = 'xyz'; sub foo(Str $b) { $a = 3; say $b; }; foo($a) | ||
|
20:26
rfordinal left
|
|||
| p6eval | rakudo 9a7a1d: OUTPUT«3» | 20:26 | |
| Tene | rakudo: my $a = 5; sub foo($b) { my $c is rw := $b; $c = 6; }; foo($a); say $a; | ||
| p6eval | rakudo 9a7a1d: OUTPUT«Cannot assign to readonly variable.in sub foo (/tmp/LxHjOOVtEH:2)Null PMC access in get_pmc_keyed()current instr.: 'perl6;Perl6;Compiler;eval' pc 289208 (src/gen_actions.pir:24161) (src/gen_setting.pm:3340)» | ||
|
20:31
icwiener left
|
|||
| pmichaud | anyway, I think I see where this is going. | 20:32 | |
| Tene | Then I'm probably confused. Nevermind. | ||
| pmichaud | I think we end up with the following interesting case, though. | 20:33 | |
| my $a = 5; sub foo($b) { say $a =:= $b; $a = 6; #(ok) $b = 6; #(fails) } | |||
| where the output would be "1" because $a =:= $b | 20:34 | ||
|
20:35
buubot left
|
|||
| pmichaud | but even though $a and $b are the "same", we can write to $a but not to $b | 20:35 | |
|
20:35
buubot joined
|
|||
| pmichaud | I don't have a problem with that, if nobody else does :-) | 20:35 | |
| moritz_ finds that rather intuitive | 20:36 | ||
| colomon | Is there any standard way to get the perlcabal.org Perl 6 documentation downloaded as a whole? I'd like to have it with me on the road this weekend... | ||
| pugs_svn | r27585 | kyle++ | [t/spec] Test for RT #62766 | ||
| pmichaud | colomon: the pod files are available from the pugs repository in /pugs/docs/Perl6/Spec | ||
| jeekobu | pmichaud: Sounds like a mechanism for public/private/friend type semantics | ||
| pmichaud | moritz_: I just think someone could be surprised that even though $a =:= $b, one can perform operations on $a that can't be performed on $b | 20:37 | |
| colomon | pmichaud: so I already have them! Thanks. | ||
| moritz_ | colomon: you can also check out the pugs repository and use the tool in util/smartlinks.pl to generate the HTML from them | ||
| KyleHa | pmichaud: In light of previous discussion, I wrote these tests which I'd really like reviewed: dev.pugscode.org/changeset/27585 | 20:38 | |
| pmichaud | KyleHa: reviewing | ||
| moritz_ | pmichaud: I know; but I can live with thinking that ro-ness is stored in the lexical table, not as part of the container | ||
| colomon | moritz_: better yet. Thanks! | ||
| pmichaud | moritz_: but I'm think that then becomes true for typeness also | ||
| (which is fine) | |||
|
20:38
japhb left
|
|||
| pmichaud | *thinking | 20:38 | |
| thus | 20:39 | ||
| moritz_ | it makes me ask how you can manipulate such properties (for example for writing custom traits) | ||
| pmichaud | my $a = 5; sub foo(Int $b is rw) { say $a =:= $b #(1); $a = 'xyz' #(ok); $b = 'xyz' #(fails) }; foo($a) | 20:40 | |
|
20:40
justatheory_ joined
|
|||
| pmichaud | and thus in answer to my earlier question | 20:40 | |
| my $a = 'xyz'; my Str $b := $a; $a = 3 #(ok); | |||
| with the odd result that $b at that point no longer holds a Str | |||
| moritz_ | pmichaud: btw have you seen <rakudo.de/rakudo-flow-2.png>? any comments | ||
| uhm, that's a bit weirder IMHO | 20:41 | ||
| pmichaud | it's the same in the sub examples I just gave | ||
| after doing the assignment to $a, the value of $b has changed to something that is incompatible with the type of $b | |||
|
20:41
kate21de joined
|
|||
| moritz_ | so binding to a variable makes it forget the container constraints? | 20:41 | |
| pmichaud | no, it's just that the bound constraints don't overload the existing variable's constraints | 20:42 | |
| moritz_ | ah well, I should backlog before asking such questions ;-) | ||
| ruoso | moritz_, the contraints are implemented by the container | ||
| binding replaces the container | |||
| pmichaud | ruoso: that's not entirely true -- see the sub examples above | ||
| ruoso | pmichaud, in that case the signature needs to implement a proxy container which defines additional contraints | 20:44 | |
|
20:44
pmichaud_ joined
|
|||
| pmichaud_ | ugh, connection to feather is hosed | 20:44 | |
| ruoso | I'm not sure it stays the same after you add additional constraints | ||
| pmichaud_ | if the signature implements a proxy container, then the binding operator could do much the same | 20:45 | |
| but either way, the point is that signature binding doesn't change the constraints of the thing being bound | |||
| ruoso | but that's a different example then the other | 20:47 | |
| pmichaud_ | I'm not sure it's supposed to be different. | ||
| ruoso | my Int $a; my Str $b; $a := $b | ||
| in that case the original container for $a simply vanished | |||
| so the constraints associated with it are gone as well | 20:48 | ||
|
20:48
pmichaud1 joined,
pmichaud left
|
|||
| pmichaud_ | I'm willing to accept that; I'd like to see it clearly spelled out somewhere that this is the case. | 20:48 | |
| ruoso | fair enough | ||
| pmichaud_ | it does mean that signature binding is different from := binding. That's fine with me also, but I hadn't come across anything that implied to me that they were different. I was under the impression that we were trying to make them the same. | 20:49 | |
| ruoso | hmm.. if we make them the same | 20:51 | |
| my Int $a; my Str $b; $a := $b | |||
| should fail | |||
| pmichaud_ | correct. | ||
| just like my Int $a; sub foo(Str $b) { ... }; foo($a); # fails | |||
| ruoso | but, in fact... I've been thinking $a := $b as different than :($a) := \($b) | 20:52 | |
| in mildew | |||
| $a := $b is actually | 20:53 | ||
| VAR($A).BIND($b) | |||
| pmichaud_ | I can't say that I had a clear guide for how := should work -- but I had never considered the case of typed binding until the earlier discussion on lexical initialization prompted me to think about it again | ||
| ruoso | or, more explicitly | ||
| pmichaud_ | currently Rakudo does the "replace the container" semantic as well, I think. | ||
| ruoso | in smop we use the bvalue concept to support it | 20:54 | |
| $scope.<$a>.BIND($b) | |||
| pmichaud_ | I'm just curious as to what the ultimate result will be :-) | ||
| ruoso | so $scope<$a> returns a bvalue | ||
| which is a "lazy lookup" | |||
| pmichaud_ | Parrot makes bvalue semantics particularly difficult -- we have to implement proxies for it | ||
| ruoso | we do with proxies as well | ||
|
20:55
pmichaud1 left,
sri_kraih_ left
|
|||
| pmichaud_ | TimToady: your opinions on the above would be very helpful to us :-) | 20:55 | |
| (when you get a chance, not urgent) | |||
| ruoso | btw... in SMOP, I've been using .STORE, .FETCH and .BIND for that matter | ||
|
20:56
pmichaud joined
|
|||
| ruoso | I'm not sure that is correct | 20:56 | |
|
20:56
justatheory left
|
|||
| pmichaud_ | well, if we get an opinion on the correct semantics of the examples above, that will tell us where we have to go :-) | 20:56 | |
|
20:56
colomon left
|
|||
| ruoso time to decommute & | 20:58 | ||
|
20:59
justatheory joined
21:00
justatheory__ joined,
justatheory left
21:01
justatheory joined,
pmichaud_ left
21:02
ruoso left
21:05
justatheory___ joined,
davef joined
|
|||
| pmichaud | moritz_: the graphic looks pretty good to me | 21:06 | |
|
21:06
justatheory____ joined,
justatheory_ left
21:07
justatheory____ left,
justatheory_ joined,
justatheory__ left
|
|||
| moritz_ | ok, I'll tune the opacity a bit and blog it ;-) | 21:07 | |
| pmichaud: should I also add the svg (inkscape) to docs/ in rakudo? | |||
|
21:08
jauaor joined
|
|||
| pmichaud | moritz_: yes, please | 21:08 | |
| moritz++ | |||
|
21:10
clintongormley left
|
|||
| davef | std: my %book of Hash of Array of Str; | 21:15 | |
| p6eval | std 27585: OUTPUT«ok 00:02 37m» | ||
|
21:17
kborer_ joined,
Limbic_Region joined,
PZt joined
21:19
Guest78406 is now known as bionoid
|
|||
| pugs_svn | r27586 | cspencer++ | Skip a test requiring lazy lists. | 21:20 | |
| davef | hi - given rakudo doesn't yet support ' Array of Array of Num @v4', what's the alternative format to declare this? | ||
|
21:20
explorer joined
|
|||
| Tene | davef: one alternative is to just not delare at all. | 21:21 | |
| moritz_ | I don't know if Array is parametric yet, but maybe you can say 'my Positional[Num] @a' | ||
| rakudo: say "a\nb\nc".subst(/^^/, '# ', :g); | 21:22 | ||
| p6eval | rakudo 9a7a1d: ( no output ) | ||
| moritz_ | rakudo: say 'a' | ||
| p6eval | rakudo 9a7a1d: OUTPUT«a» | ||
|
21:22
justatheory left
|
|||
| moritz_ | bah, that loops | 21:23 | |
| Tene | moritz_: repeated zero-width match | ||
| moritz_: pm says he might fix it during the upcoming big PGE refactor. | 21:24 | ||
|
21:24
justatheory___ left
|
|||
| moritz_ | I wanted to use that in Test.pm's diag() function | 21:24 | |
| davef | any idea when 'Array of Array' etc is due in rakudo, is it imminent or low priority? | 21:26 | |
| moritz_ | not iminent I think | 21:28 | |
| typed arrays are pretty annoying anway | |||
| my Int @a = (1, 2, 3, 4); # type check failure, (1, 2, 3, 4) is just a List, not a List[Int] | |||
| KyleHa | yay/nay on this? dev.pugscode.org/changeset/27585 | 21:32 | |
| I should look at the log; maybe I missed it. | |||
| moritz_ | I just looked at it | ||
| davef | std allows ' my Int @a[][]; @a[0,0] = 44;', (rakudo doesn't) is that the same as Array of Array of Int? | ||
| moritz_ | the one that loops infinitely is known | 21:33 | |
| davef: it's a multi-dimensional array, which is not quite the same | |||
| (but similar) | |||
| std: my $a;my $x if 0;$a = $x', 'my $x if 0 | |||
| p6eval | std 27586: OUTPUT«##### PARSE FAILED #####Syntax error (two terms in a row?) at /tmp/5M0dmAQpqV line 1:------> my $a;my $x if 0;$a = $x', 'my $x if 0 expecting any of: POST infix or meta-infix infix stopper postfix postfix_prefix_meta_operator | ||
| ..standard stopper statement mo… | |||
| moritz_ | std: my $a;my $x if 0;$a = $x | 21:34 | |
| p6eval | std 27586: OUTPUT«ok 00:02 37m» | ||
|
21:34
kborer left
|
|||
| davef | think I need to get a bigger brain for Lisbon :0 -- thanks for your help. | 21:35 | |
|
21:35
icwiener_ left
|
|||
| moritz_ | KyleHa: the last one looks pretty scary | 21:35 | |
| KyleHa: basically it disallows line numbers in the error message | |||
| KyleHa | Oh, good point. I hadn't thought of that. | ||
|
21:36
Chillance joined
|
|||
| moritz_ | KyleHa: btw your "How I came to contribute to Perl 6" post on perlmonks is best of the week ;-) | 21:37 | |
| KyleHa | Yeah. 8-) | 21:38 | |
| It's in the 10 best of the month now too. | |||
|
21:38
justatheory_ is now known as justatheory,
Exodist left
|
|||
| moritz_ | it's good to see that the perl monks aren't tired hearing about Perl 6 | 21:39 | |
| KyleHa | The monks are nothing if not patient. | ||
| rakudo: my Int $x = "abc" | 21:40 | ||
| p6eval | rakudo 9a7a1d: OUTPUT«Assignment type check failed; expected Int, but got StrNull PMC access in get_pmc_keyed()current instr.: 'perl6;Perl6;Compiler;eval' pc 289208 (src/gen_actions.pir:24161) (src/gen_setting.pm:3340)» | 21:41 | |
| moritz_ | except with those who don't read the docs ;-) | ||
| pmichaud | KyleHa: still looking at the changes | ||
|
21:41
moritz_ sets mode: +oo pmichaud KyleHa
|
|||
| KyleHa | pmichaud: Thanks! I thought maybe you'd moved on to something else. | 21:41 | |
| pmichaud | I did get interrupted here, yes (sorry) | ||
| KyleHa | No problem. | 21:42 | |
| So that gives the right error message AND a Null PMC. | |||
| pmichaud | eval '$x = "abc"; my Int $x'; | ||
| looks wrong to me. | |||
| it should die, but not due to a type error. | |||
| it should instead complain that $x is not declared | 21:43 | ||
| (line 228) | |||
| KyleHa | I can see that. | ||
| I was looking at this at the time: irclog.perlgeek.de/perl6/2009-07-16#i_1322205 | |||
| I'm glad I asked for a review. There's a lot of alligators in there. | 21:44 | ||
| pmichaud | the difference between line 228 and the irclog is the position of the closing ' | ||
| KyleHa | Aha. Good catch. | 21:45 | |
| moritz_ | KyleHa++ # attacking the alligators nonetheless | ||
| pugs_svn | r27587 | kyle++ | [t/spec] fix tests after review from pmichaud++ and moritz++ | 21:51 | |
| KyleHa | OK, gotta commute. | ||
| Thanks again for your attention, moritz++ and pmichaud++ | |||
|
21:52
pmurias left
|
|||
| pmichaud | KyleHa: thanks for the outstanding tests | 21:52 | |
| KyleHa | *bow* | ||
| pmichaud | applying the patch for eval_lives_ok gives me a bunch of spectest failures, though. | 21:53 | |
| KyleHa | That was my experience too. | ||
| pmichaud | oh. we need to fix those failures before I can apply the patch, then | ||
| (where "fix" can also mean "fudge") | |||
| KyleHa | I suspect those are places that actually need attention, but I didn't look at them to confirm. | ||
| moritz_ | I also have slight worries, see my e-mail reply | 21:54 | |
| basically it's rather confusing | |||
| to have a dying test code that still fails dies_ok | |||
| a diag() could help with some explanataion | |||
| but I didn't have enough focus to hack it in myself | |||
| KyleHa | The way I think of it is: | ||
| A Null PMC is not an "ok" death. | 21:55 | ||
| It only dies "ok" if it dies some other way. | |||
| moritz_ | KyleHa: I know, I'm not arguing about that | ||
| KyleHa | OK. I didn't actually read your email. | ||
| I'll have a look at it at a traffic light on the way home. | |||
| moritz_ | ;-) | ||
| KyleHa | Gotta run. | ||
|
21:55
KyleHa left
22:01
nihiliad left
22:03
davef left,
justatheory_ joined
|
|||
| pmichaud | here's a related item on the binding issue | 22:04 | |
| what should happen with | |||
| our $x = 'xyz'; { our Int $x; say $x; } | 22:05 | ||
| in some sense "our Int $x" seems to me like it should be close to the same as "my Int $x := PACKAGE::<$x>" | 22:06 | ||
| (module the use of "PACKAGE" there) | |||
|
22:09
justatheory__ joined
|
|||
| pmichaud | and at the moment, I'm thinking it'd be really nice if := binding did the same as signature binding. I could solve a number of Rakudo bugs that way. | 22:09 | |
| moritz_ | interestingly enough Perl 5 heads along a similar direction | 22:10 | |
| pmichaud | Yes. | ||
| In particular, I could quickly fix hash and array element binding in Rakudo if it acts like signature binding. | |||
|
22:11
justatheory___ joined
|
|||
| moritz_ | chip is working on binding, because it's needed for the formal parameters he wants to introduce | 22:11 | |
| pmichaud | and I can do some very nice refactors of the existing binding and lexical code | 22:12 | |
| moritz_ | to come back to your issue, I always understood 'our' as aliasing to a package variable, so identifiying it with binding to a lexical seems sane to me | 22:13 | |
| pmichaud | yes. | ||
| but then the question becomes... does the underlying package variable have constraints? If so, what sets them? | 22:15 | ||
| moritz_ | it seems to follow that you can't declare those using 'our' | ||
| or maybe just the first 'our' wins, and conflicting restraints later on throw an error | 22:16 | ||
| I mean if you want to temporarily replace those constants, you can still use 'let' | |||
| pmichaud | if rand() { our Int $x = 3; } else { our Str $x = 'xyz'; } # which one wins? ;-) | 22:17 | |
| moritz_ | it's at compile time, of course | ||
| ;-) | 22:18 | ||
| Int wins, and Str says "OH NOEZ" | |||
|
22:19
kidd_` left
|
|||
| pmichaud | afk for a bit | 22:19 | |
|
22:19
justatheory left
22:20
kborer joined
22:22
justatheory_ left
|
|||
| TimToady | std: if rand() { our Int $x = 3; } else { our Str $x = 'xyz'; } # which one wins? ;-) | 22:27 | |
| p6eval | std 27587: OUTPUT«##### PARSE FAILED #####Obsolete use of rand(); in Perl 6 please use rand instead at /tmp/oUJmwmRkSQ line 1:------> if rand() { our Int $x = 3; } else { our Str $x FAILED 00:02 36m» | ||
| TimToady | std: if rand { our Int $x = 3; } else { our Str $x = 'xyz'; } # which one wins? ;-) | ||
| p6eval | std 27587: OUTPUT«ok 00:02 37m» | ||
|
22:28
justatheory__ left
22:29
justatheory___ left
22:36
explorer left,
kborer_ left
22:38
kate21de left,
kate21de joined
22:50
ihrd joined
22:56
kborer_ joined
22:59
cdarroch left
23:03
payload joined
23:04
ihrd left
23:10
DemoFreak left
23:13
yahooooo left
23:14
M_o_C left
23:15
kborer left
23:16
kborer_ is now known as kborer,
yahooooo joined
23:19
kborer_ joined
23:20
donaldh left,
donaldh joined
23:21
justatheory joined
23:36
kborer left
23:39
yahooooo left
23:40
kborer joined,
elmex left
23:41
elmex joined
23:42
elmex left
23:43
elmex joined
23:46
ihrd joined,
ihrd left
23:47
ihrd joined,
ihrd left
23:49
payload left
23:50
yahooooo joined
23:56
kborer_ left
23:58
Whiteknight joined
|
|||