pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
pugs_svn r19161 | dlo++ | [kp6] added newlines to the subroutine, minor cosmetic change 07:02
dlocaus [particle]: are you there? 07:26
pugs_svn r19162 | dlo++ | [kp6] I made subroutines work, by commenting out the (dollar).block.pad in Lit::Code, I think this is a mistake at this time, but the code works... dlocaus @ #perl6 irc.freenode.net 07:35
r19163 | dlo++ | [kp6] You can now combine -Bperl together
pugs_svn r19164 | dlo++ | [kp6] Oppps, I was right. I cannot block out the binding just to make subs work 07:42
r19165 | dlo++ | [kp6] undid changes to make subs work, broke other code 07:44
dlocaus moritz_ / pmurais: dev.pugscode.org/browser/v6/v6-Kind...Sub.pm#L39 07:52
on line 39 should "<.opt_ws>" be there? I thought that a space wasn't allowed between a subroutine name and the opening ( or {
lambdabot tinyurl.com/38hf2w
moritz_ where is opt_ws defined? 07:56
dlocaus good morngin 08:05
checking
I didn't wake you up did I moritz_?
moritz_ IRC can't wake me up ;)
it's 9AM here, btw ;)
dlocaus line 82 of Grammar.pm 08:06
I need to write to my congressman to move GMT to PDT.
moritz_ I see
dlocaus I'm trying to figure out how to get subs to work in perl6
The problem is that the current code converts 08:07
sub a{ ... } into
a = sub { ... }
moritz_ dlocaus: I think that whitespaces are allowed in sub declarations, but not in sub calls
dlocaus moritz_: that is a bit of a weird rule 08:08
moritz_ if it were &a := sub { ... } then you'd be fine
dlocaus: why? the 'sub' keyword disambugates parsing
dlocaus its just that "normally" white space is harmless. 08:09
but there is an actual problem w/ whitespace here.
mySub() is legal, but mySub () is not legal, but sub mySum () is also legal
mySub(); is legal... but mySub (); is not legal, but sub mySub () is legal. 08:10
moritz_ yes, declarations are more permissive than calls 08:11
dlocaus moritz_: do you know what pad is for? 08:12
moritz_ dlocaus: to hold the lexical pad, I think
dlocaus I thought it was for "keeping" the namespace for the runtime enviroment, but it also appears to be doing something for emiting the code.
moritz_ that is for scoping
dlocaus dev.pugscode.org/browser/v6/v6-Kind...Sub.pm#L44
lambdabot tinyurl.com/38hf2w
dlocaus scoping what?
moritz_ variable scoping 08:13
dlocaus by variables you mean the parameters? 08:14
moritz_ no, normal variables 08:15
dlocaus where are these normal variables coming from? 08:16
moritz_ what do you mean by "coming from"? 08:17
they are stored in a pad, I think 08:18
and declared by "my"
dlocaus if you look at line 44, you'll see there is no "place" to declare variables.
or rather, there is no place to "get" the variables.
sub .. name .. and { COMPILER::add_pad() } statements... 08:19
moritz_ the block of the sub is parsed by <exp_stmts>
dlocaus yes, but there is no place to get the variables
by get I mean "parse" 08:20
moritz_ you mean
sub foo { my $a };
couldn't be parsed?
dlocaus wouldn't "my $a" be parsed by <exp_stmts> 08:21
?
moritz_ yes
that's why I don't understand your confusion
dlocaus then what goes in in the pad?
moritz_ think of it as an item of a linked list that is a container for local variables 08:22
dlocaus perl5 meaning of "local"?
moritz_ no, lexical variables in general
dlocaus hurm.
but why is COMPILER::add_pad in the "grammar"/regex 08:23
moritz_ because there is compile time scoping 08:24
you can tell at compile time if a variable is in scope or not
dlocaus oh argh... 08:25
moritz_ s/compile time/parse time/
dlocaus global variables, local variables, our variables, lexical variables, and the symbol table.
and now static variables.
moritz_ take my comments with a grain of salt, though, I'm not a pad expert ;) 08:26
dlocaus how did perl5 ever come up with such a collection of variables ;)
moritz_ all of perl5 scopes allow variable checking at compile time 08:27
dlocaus I know but I remember some oddities that came up like 08:28
my %hash;
local $hash{a}=123;
I rarely use local now, but I remember that was a potential oddity
its a bit past my bed time now. My dog is looking at me funny. So, I have to go to bed. ;) 08:29
I'll hibernate on this problem for a while.
moritz_ sleep well 08:30
I'm off to university &
dlocaus The problem, for those reading the IRC log later, is that the ::BIND and ::PAD are screwing up the Emit::Perl6 display.
moritz_: have fun :)
To reproduce the "sub ok($num) { say $num };" for example, I don't need the pad, nor the bind. The bind does this to the sub 08:31
ok = sub ($num) { say $num };
or at least it wants to
the pad does
ok = sub ($num) {
my $num;
}
well, I'm off to bed... the dog is keeping my spot warm. Now, I just need to bully her off of that spot. 08:32
nice doggy...
wolverian oh wow a huge thread on p6l 13:30
brings back memories :)
wolverian didn't at first believe buffy's "128 new messages" was correct and blamed offlineimap
fglock wolverian: which thread you refer to? 14:45
lambdabot fglock: You have 1 new message. '/msg lambdabot @messages' to read it.
wolverian fglock, the xml one
fglock ah
moritz_ shudders at the thought of making XML "core" 14:46
nobody would make Text::Soundex core these days too 14:47
pugs_svn r19166 | fglock++ | [kp6] rm Runtime::Perl5::Code 15:07
fglock i'm getting this error on make: Invalid option linkage for "include|I=s@"
moritz_ tries it 15:09
you're builiding kp6, right? 15:10
ah, that's a script/run_tests.pl error 15:11
moritz_ the problem is the \$opt{include} 15:13
$opt{include} is a reference already, so push @{\$opt{include}}, $item will fail 15:14
probably broken in r19160 by dlo 15:15
moritz_ but simply removing the backslash causes parse failures of subsequent options 15:19
the simplest workaround might be to revert parts of that commit
dlo-- # he's got enough karma ;)
pugs_svn r19167 | ruoso++ | [yap6] YAP6__CORE__bytes, a lowlevel non-encoded string to be used in WHICH 16:15
moritz_ exp_evalbot and pugs_svnbot are currently down because their server is beeing moved 16:22
I hope to restore them ASAP
dlocaus ahhh, not my karma! 16:24
fglock: can you send me a bit more about the bug?
fglock dlocaus: make test gives: 16:25
/opt/local/bin/perl script/run_tests.pl --backend=perl5 16:26
Invalid option linkage for "include|I=s@" 16:27
make: *** [test] Error 255
moritz_ dlocaus: the line include|I=s@" => \$opt{include}, is wrong
pasteling "dlocaus" at 63.192.210.11 pasted "it runs for me..." (9 lines, 495B) at sial.org/pbot/29170
moritz_ $opt{include} is a reference alread 16:28
y
dlocaus this is odd, it runs for me.
let me look at that...
moritz_ and if I remove the backslash I get "t/kp6/16-what....................................Can't open -backend=perl5: No such file or directory at script/kp6 line 509. 16:29
dlocaus it works without the backslash too.
what version of Getopt are you using? 16:30
moritz_ 2.35
dlocaus kitty:~/perl6> perl -MGetopt::Long\ 999
Getopt::Long version 999 required--this is only version 2.37 at /usr/local/share/perl/5.8.8/Getopt/Long.pm line 1468.
BEGIN failed--compilation aborted.
moritz_ perl -MGetopt::Long -wle 'print $Getopt::Long::VERSION'
dlocaus moritz_: do you mind upgrading and see if you get the error?
moritz_ dlocaus: I won't upgrade because it's the Getopt::Long that's shipped with Debian, and I won't fiddle with their packages 16:31
dlocaus ok
I'll download it locally...
moritz_ however I have a perl 5.10.0 with Getopt::Long 2.37, and I get the same errors 16:32
dlocaus argh... why am I special? 16:33
moritz_ dlocaus: you have a dog ;)
pugs_svn r19168 | ruoso++ | [yap6] WHICH implemented to the int type... YAP6_WHICH(value) macro defined...
pmurias moritz_: i have got a cat ;) 16:34
moritz_ pmurias: does "make test" work for you? 16:35
pmurias no
moritz_ so it's the dog
pugs_svn r19169 | dlo++ | [kp6] \(dollar)opt{include} appears to be breaking for some people. This is a commit that just comments it out, it should still work fine, as perl5rx will still include the backend
pugs_svn r19170 | ruoso++ | [yap6] WHICH implemented to the bytes type... 16:37
r19171 | moritz++ | [yap6] small INSTALL nit 16:39
pugs_svn r19172 | dlo++ | [kp6] I am not able to reproduce the error, I have documented it further, and will leave it for someone else 16:50
Lorn does anybody know, where i can download audrey config file for svk? 17:06
feather.perl6.nl/svk.html <-- here, have cp ~audreyt/config ~/.svk/
lambdabot Title: SVK on Feather
pmurias Lorn: if you have a shell account on feather use cp 17:08
Lorn pmurias: i dont have
fglock Lorn: i think the file is only valid inside the feather environment 17:09
Lorn fglock: ah ok, thanks
dlocaus pmurias: for class Lit::Code (Visitor/Emit/Perl6.pm) 17:25
for @($.pad.variable_names) -> $name {
Does "variable_names" come from Runtime/Perl5/Pad.pm?
fglock dlocaus: yes 17:26
dlocaus cool 17:26
fglock variable declarations are collected during the parse
dlocaus ok 17:27
fglock there is a possible problem, 17:28
parameters and variables get declared together
dlocaus :)
I'm trying to sort that problem out :)
well, I'm trying to get subroutines to work atm. 17:29
dlocaus fglock: =head2 variable_names 17:30
XXX - this needs to be removed.
variable_names is the same as lexicals (below)
=cut
do you want me to remove variable_names and replace it with lexicals?
dev.pugscode.org/browser/v6/v6-Kind...ad.pm#L146
lambdabot tinyurl.com/39j8mg
fglock sure 17:31
dlocaus ok
pugs_svn r19173 | ruoso++ | [yap6] capture object no longer exists in the low level runtime... YAP6_APPLY should be called with a list instead. 17:32
r19174 | ruoso++ | [yap6] YAP6__CORE__List forward declaration. 17:35
fglock pugs: sub f ( $x ) { my $x; say $x+1 } f(3) 17:40
exp_evalbot OUTPUT[4␤]
fglock dlocaus: redeclaring params as my doesn't seem to be a problem 17:41
[particle] shouldn't be, should it? 17:42
[particle] pugs: { my $x = 2; my $x; say $x + 1; } 17:42
exp_evalbot OUTPUT[3␤]
pmurias fglock: declarators are parsed wrongly in kp6-kp6 17:44
fglock [particle]: just checking :) 17:46
pugs_svn r19175 | dlo++ | [kp6] Removed sub variable_names from Runtime/Perl5/Pad.pm and replaced all variable_names calls with lexicals 17:51
pmurias pugs: my $x;$x=1;my $x;say $x 17:55
exp_evalbot OUTPUT[1␤]
pugs_svn r19176 | ruoso++ | [yap6] implemented WHICH in all dispatchers. 18:00
pugs_svn r19177 | fglock++ | [kp6-perl6] some fixes in Perl 6 emitter 18:07
fglock make test doesn't work here: ......Can't open -backend=perl5: No such file or directory at script/kp6 line 509
moritz_ fglock: same here
pugs_svn r19178 | ruoso++ | [yap6] updating roadmap after removing capture from the low-level 18:08
dlocaus fglock: in regard to redeclaring params as my; it wasn't the "sub ok($num) { my $num;"
that was causing the problem. It is the "our $ok" that is causing the problem.
(later on, ok := sub ($num){ .. }; 18:09
fglock oops - my last commit broke &f := sub ...
dlocaus: i was meaning to fix that, but i broke it - looking 18:10
dlocaus It is the ::Pad that is doing it 18:10
it drops all variable_names regardless of type.
moritz_ ruoso: yap6 doesn't compile for me 18:12
pair_dispatcher.c:56: error: expected expression before ‘)’ token
ruoso moritz_, hmm..
wait
fglock dlocaus: Pad is ok; the problem is Var.emit 18:13
ruoso i've changed something right there now
fglock dlocaus: I'll revert as soon as i find out how :P
dlocaus :) 18:14
pugs_svn r19179 | ruoso++ | [yap6] Woops... fixing an dumb error... thanks moritz++ for reporting...
ruoso moritz_, try it now
moritz_ works like a charm 18:15
ruoso :)
do the tests pass?
moritz_ ruoso: Aye
ruoso the big thing now is to implement the YAP6__CORE__Hash 18:16
and the last simple types
like double and string
I was thinking about writing string suppor using iconv 18:17
yap6 looks a lot like perl 5
but instead of SV*, i have YAP6__CORE__Value*
and it's late dispatch all the way... 18:18
pmurias ruoso: is yap6 intended to be a seperate p6 implementation or a kp6 backend? 18:21
pugs_svn r19180 | ruoso++ | [yap6] 09_int_which.t was missing a refcnt_dec. 18:21
ruoso pmurias, a kp6 backend
pmurias the ROADMAP in the readme is a bit misleading 18:22
pugs_svn r19181 | fglock++ | [kp6-perl6] fixed Perl 6 emitter (broken in last commit) 18:23
pmurias 0.4.0-1.0.0
ruoso yeah... I thought about it already..
pugs_svn r19182 | ruoso++ | [yap6] as the readme is a roadmap, renaming README to ROADMAP 18:24
moritz_ d'oh, languages/PIR/ fails all test in current parrot 18:25
pugs_svn r19183 | fglock++ | [kp6-perl6] works with pugs: 18:27
r19183 | fglock++ | perl script/kp6 -Cperl6 -e ' sub f ( $x ) { my $x; say $x+1 }; f(3) ' | pugs
pugs_svn r19184 | fglock++ | [kp6-perl5] revert unneeded change 18:34
fglock taking a look at rubinius 18:39
it looks a bit unstable 18:44
[particle] what isn't, these days ;)
avar fglock: pypy looks awesome, check out the lecture on google video 18:47
ferreira hi, guys, I am back to writing the micro-articles on Perl 6 operators - if anyone has some idle time, please take a look at feather.perl6.nl/~ferreira/perl6-op...olean.html and give me suggestions/corrections 18:50
lambdabot Title: boolean.pod6
[particle] 'make' would be a good op to write on 18:51
ferreira hey, I didn't know that one ;-) 18:52
moritz_ ferreira: looks good, at first glance 18:53
ferreira [particle]: what 'make' are you talking about?
[particle] see S05 18:53
moritz_ wonders why his crack-attack score stopped at 1337 ;-)
fglock avar: looking 18:55
avar fglock: essentially we'd get free optimizations and all the yummy stuff we'd get if we emitted lisp, but on a different vm
ferreira [particle]: but it is a function. I will read a bit more about it. Thanks 18:56
moritz_: thanks for reading 18:57
fglock avar: i wonder if i'd better learn more lisp instead 18:58
avar I say lisp:) 18:59
fglock [particle]: kp6 can emit simplified Perl 6 already; not sure if it makes sense to feed this to nqp 19:00
[particle] fglock: nice!
i just got punie (perl1) converted to nqp, and am now getting some TODO tests passing
fglock [particle]: kp6 needs an efficient backend 19:02
[particle] reports are just in that punie is ~20% faster on nqp than tge 19:03
fglock is there a plan to develop Perl 6 on nqp? 19:04
you could start with a bootstrapped version 19:05
dlocaus fglock: I found the problem with the Getopt::Long. ( moritz_++ ) 19:06
Getopt::Long (older version) is lacking in some code that is present in the latest version.
[particle] perl6 is already being developed on nqp
fglock dlocaus++ # have your karma back
dlocaus quite possibly an undocumented bugfix.
[particle] it's not passing all the tests yet, but we've made solid progress
moritz_ [particle]: and what does it emit? PIR? 19:07
dlocaus fglock: what is policy to do, when people are not running "latest greatest" of verything?
verything, every-thing
[particle] we expect to have perl6 passing sanity tests before release day (18dec)
moritz_: yes, it emits pir
fglock dlocaus: kp6 doesn't require latest perl, plain 5.8.x should work
dlocaus fglock: this is perl, its Getopt::Long. 19:08
this is not perl, it is Getopt::Long
fglock dlocaus: just work around it 19:09
avar the nqp thing is just replacing the TGE part of the parser (last I looked at the code) 19:11
ops were still being implemented in PIR
pugs_svn r19185 | ruoso++ | [yap6] created the Hash test 19:15
[particle] avar: yep 19:16
well, we can implement builtins in nqp
but pct emits pir, which parrot runs
fglock: what do you need to start an nqp emitter for kp6? 19:17
fglock [particle]: documentation :P
some examples, maybe
[particle] well, then, compilers/nqp and languages/abc are good places to start 19:18
fglock can it build classes using the Parrot MOP?
[particle] oo support isn't all it will be yet
fglock that's the slow side of kp6 - i hoped nqp would have that 19:19
[particle] care to join irc.perl.org#parrot to discuss with pmichaud?
fglock i'm heading home, how about in an hour or so?
moritz_ ah, one of the channels I forgot to join after my last reboot
[particle] sure 19:20
fglock ok :)
home &
[particle] where's TimToady when you need him?
prepping for his daughter's wedding, or something else equally unimportant?
moritz_ I guess his position is mostly uncorrelated to your needs ;) 19:21
[particle] yeah, and he may even be just a few miles away from my position
pugs_svn r19186 | dlo++ | [kp6] Patched, NOT FIXED, the problem with Getopt::Long not support include=s@, which is due to a bug in older versions of Getopt::Long. 19:22
dlocaus brb. 19:29
b
kp6: say(&infix:<~>('ok ',1)); 19:32
exp_evalbot r19186: OUTPUT[syntax error at position 3, line 1 column 3:␤say(&infix:<~>('ok ',1))␤ ^ HERE␤]
dlocaus is "&infix:" legal perl6?
[particle] no &, so far as i know 19:34
dlocaus ok
avar & means the same thing as \& in p5 19:36
pugs_svn r19187 | ruoso++ | [yap6] created the scheleton for the hash dispatcher... 19:49
dlocaus can I do a partial match in kp6? ie
if ( $.name =~/^(infix|prefix|postfix)) ) { ...
or rather kp6's perl6.
Juerd I don't know about kp specifically, but in Perl 6 it'd be ~~ instead of =~ 19:52
dlocaus hurm...
dlocaus ferreira: hi! 20:19
avar $.name ~~ /^^ ( infix | prefix | postfix ) / 20:23
Juerd ^^ is begin of line, right? 20:25
moritz_ yes 20:26
like ^ in p5 with /m in effect
mncharity /me forgets that in python, lexically nested functions don't have normal lexically nested binding. /me cries. pines for p6. 21:07
pmurias mncharity: what do you mean exactly? 21:11
i.e. an example please?
pmurias mncharity: tried what i thought you mean but it worked right 21:32
mncharity def f()\n s = ""\n def g()\n s += "a"\n g()\n return s\n
assignment implicitly introduces a function level scope for a variable. outer scopes are read-only (prior to python 3.0) 21:33
pmurias mncharity: i must have a pythonic mind, tested something like that and assumed such behavior was right/normal 21:38
mncharity pmurias: perhaps the issue is, while there is agreement on "can see a variable in outer scope unless its masked in inner", and agreement that "declaration (should) mask", therein likes complication. 21:56
lambda calc had only decl by being a function argument. simula that plus explicit decl. languages wanting implicit decl for convenience are groping for conventions 21:57
python is decl on assignment. which prevents some nice idioms. and is introducing new decl keyword to get them back(?). 21:58
ruby had "even use in function arg doesnt mask", now realized to be a mistake, and is getting normal lambdas in ruby 2.0. 21:59
mncharity I like the "implicit decl *unless already declared in scope*" myself, but admittedly that introduces non-locality in understanding 22:01
the p6 "my" declares, with scope from beginning of block rather than declaration point, with repetitions redundant, seems a nice compromise (+short, +no need to predeclare to create scope, ~making sure only one use is a decl is non-critical (though nice), -requires OUTER, ?we'll see how it works in practice) 22:05
pmurias pugs: $x=1;my $x;say $x; 22:07
exp_evalbot OUTPUT[*** ␤ Unexpected "="␤ expecting "::"␤ Variable "$x" requires predeclaration or explicit package name␤ at /tmp/5MKvWSzKKD line 1, column 3␤]
pmurias mncharity: are you sure you can use a variable which is declared later on in the block? 22:08
moritz_ I think you can't
pmurias provisional calls are handled specialy so you likly can't 22:11
mncharity ^.^
mncharity out of date or simply confused
pmurias is tired 22:12
so can be wrong
pugs: if (0) {nonexistant()} 22:13
exp_evalbot RESULT[undef]
pmurias pugs: if (0) {nonexistant}
exp_evalbot RESULT[undef]
mncharity forgot to use sigils the other day in p6 test code. confusion strong candidate.
pmurias i think pugs is out of date regarding barewords 22:14