»ö« | 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:04 H1N1 joined 00:38 kst joined 00:43 aindilis joined 00:45 bacek joined 00:47 agentzh joined 01:08 alc joined 01:19 LadyLuna1y joined 01:20 agentzh joined 01:23 ZuLuuuuuu joined 01:24 alc joined 01:28 eternaleye joined 01:33 eternaleye joined 01:40 kst joined 01:41 Kisu joined 01:58 agentzh joined
meppl good night 02:09
02:15 eternaleye joined 02:21 eternaleye joined 02:25 eternaleye joined 02:33 eternaleye joined 02:34 davidad joined 02:41 justatheory joined, alester joined 02:47 eternaleye joined
JDlugosz hi all. 02:49
all hi 02:50
02:56 eternaleye joined 02:57 agentzh joined
JDlugosz is this syntax for returning a typed array correct: 02:57
sub foo of Type @ { ... }
02:59 eternaleye joined 03:03 eternaleye joined
wayland76 Don't think so 03:08
S02 says...
03:08 eternaleye joined
wayland76 (among other options): sub get_pet() of Animal {...} 03:09
so I'd imagine it'd be something like sub get_pet() of Array {...}
JDlugosz That syntax came up before, in the mailing list. 03:10
wayland76 (In case I haven't said, I'm no expert -- I don't even have a working Perl 6 installation at the moment :) ) 03:11
JDlugosz I'd argue that there is no such thing.
wayland76 Well, but I mean, no installed Rakudo or SMOP or anything like that
I'm getting closer, though. See, I'm not going to install Rakudo until I can turn it into an RPM, and thanks to Parrot changes over the weekend, I'm one step closer :) 03:12
JDlugosz Care to read something (not too long)? 03:13
wayland76 Btw, when you say "That syntax", do you mean what I said, or what you said?
JDlugosz What I said.
wayland76 I'd be happy to, if I can finish it before my compile finishes
JDlugosz Still editing, but I'll push it up...
wayland76 Well, mailing list tends to be golfy. Who said it? 03:14
if it was Moritz, it's probably right :)
rakudo: sub foo of Type @ { ... }
p6eval rakudo 23718a: OUTPUT«Malformed routine definition at line 1, near "foo of Typ"␤in Main (src/gen_setting.pm:0)␤»
wayland76 rakudo: sub foo of Type @ { say "hi" }
p6eval rakudo 23718a: OUTPUT«Malformed routine definition at line 1, near "foo of Typ"␤in Main (src/gen_setting.pm:0)␤»
wayland76 rakudo: sub foo as Type @ { say "hi" }
p6eval rakudo 23718a: OUTPUT«Malformed routine definition at line 1, near "foo as Typ"␤in Main (src/gen_setting.pm:0)␤»
wayland76 rakudo: sub foo as Array { say "hi" } 03:15
p6eval rakudo 23718a: OUTPUT«Malformed routine definition at line 1, near "foo as Arr"␤in Main (src/gen_setting.pm:0)␤»
wayland76 rakudo: sub foo returns Array { say "hi" }
p6eval rakudo 23718a: ( no output )
wayland76 rakudo: sub foo returns Array { say "hi" }; foo()
p6eval rakudo 23718a: OUTPUT«hi␤»
wayland76 rakudo: sub foo returns Array { return ("hi") }; say foo()
p6eval rakudo 23718a: OUTPUT«Type check failed on return value␤in sub foo (/tmp/E4kfYo8Xvh:1)␤called from Main (/tmp/E4kfYo8Xvh:1)␤»
JDlugosz <www.dlugosz.com/Perl6/web/code.html>
wayland76 That last golf I did there is something that might be heading in the direction you want :) 03:16
JDlugosz Who? I'd have to look back and check. August, I think.
Oh, 'returns' is gone as a synonym for 'of'.
wayland76 Maybe, but S02 still says it's there :) 03:17
03:17 eternaleye joined
wayland76 Oh, have you looked at S32/Callable? 03:18
JDlugosz I saw it disappear in a diff, S06, "subroutine traits".
I see old example in S02, par for the course. 03:19
Check "blame" for S06 to make sure that was done on purpose.
03:21 agentzh joined
wayland76 JDlugosz: Not sure I followed that 03:21
I was referring to: svn.pugscode.org/pugs/docs/Perl6/Sp...llable.pod
oops, 03:22
perlcabal.org/syn/S32/Callable.html
JDlugosz "blame" is a command on version control systems. Shows who changed each line last.
Change 23431 larry on S06
Yes, that changed returns to of. No more returns trait. 03:23
^^^^ Larry -- that was on purpose, right? 03:24
wayland76 JDlugosz: Ah, I understand. I thought you were talking about Callable, and was confused :)
ping TimToady (this may make his IRC client go "bing" :) 03:25
03:25 eternaleye joined
JDlugosz No need to bother him, he looks back at the log. 03:25
wayland76 Sorry, it's my sense of instant gratification :) 03:26
JDlugosz Tim Nelson... that you?
wayland76 I'm exemplifying one of the Perl virtues -- impatience
JDlugosz: Yes, that's me
JDlugosz I see your name on the S32 you just cited.
wayland76 Yeah, that's right 03:27
JDlugosz It is dated Feb this year, but does not cover any of the stuff that was discussed on the mailing list last summer.
wayland76 Basically, I have no clue, but write synopses in hopes of provoking someone to improve them :)
JDlugosz Including "Code" being an obsolete name for Callable, before Roles were introduced and the name changed to be an adjective.
So.... how about updating that based on the HTML file I just showed you?
wayland76 Well, I think pretty much everything I wrote was drawn from other specs 03:28
JDlugosz: I'd love it if you'd do that
JDlugosz I'm reworking my old "proposal" doc to be up to date and more imperitive than speculative, and makeing syntax current.
Yea... nobody was updating the docs based on discussions. Pestering them on that is why I now have commit access myself.
I lovingly went through and fixed all the Code/Callable and used concrete types where sensable, but nobody merged in until this week. 03:29
wayland76 I was hoping that eventually, S32 would become a sort of "object/role reference manual", and other docs could be written to say things like "See S32/whatever for details"
JDlugosz Anyway, check out my link. Does that make sense?
Sounds good to me.
03:29 eternaleye joined
wayland76 So far, but remember, I'm no expert, so I have to take it slowly :) 03:30
JDlugosz The sigs I mentioned I gathered from mentions in the
Synopses, too. Just fixed contradictions. Probably you did the same.
no expert... well, is anyone? These classes need to be properly engineered based on rough ideas of uses cases. Until that is done and accepted, nobody can be an expert. 03:31
I can answer some of you questions you wrote. 03:32
"what does do return.... method body?
wayland76 Well, yes, but the person who should really be checking this is probably Moritz -- he'll make the time, etc
JDlugosz Hmm, well, I can answer it for Routine. Does it make sence to have it on the abstract base class? 03:33
Did you look at my HTML file? 03:34
wayland76 I'm in the process of reading it. But like I said, I have to take it slowly :)
JDlugosz Ah, I missed .assuming, mentioned in S02. 03:37
03:37 eternaleye joined
JDlugosz Oh, no I didn't. 03:37
03:40 nihiliad joined 03:41 davidad joined
wayland76 I haven't finished reading it yet, but I'm being called for lunch. afk& 03:41
03:45 eternaleye joined 04:00 eternaleye joined 04:02 alester joined
JDlugosz Uh... this doesn't make sense in S03 04:04
my $args = \(@foo: @bar);
is instead equivalent to:
@foo.push(@bar);
Taking the capture doesn't cause the method to be called. In contrast to the previous example, the second line is missing. Should it also say: push |$args;
In that case, push becomes a method call because the |$args contains the invocant. But we don't keep track of it as such anymore (it's just the fist positional), and it only parses if push is already a function anyway... ?
04:07 eternaleye joined 04:09 eternaleye joined
pugs_svn r26929 | jdlugosz++ | Code to Callable, clarify "Type" under smart matching (see <irclog.perlgeek.de/perl6/2009-05-24...171474> 04:10
04:22 eternaleye joined
wayland76 JDlugosz: I'm not very good about this myself, but it's customary to put the name of the Spec(s) changed into the commit message 04:22
ie. "[S01] Made some changes here" 04:23
JDlugosz You mean svn doesn't know?!
wayland76 Oh, it does, but you'll notice the message on the IRC channel didn't say
JDlugosz I see.
wayland76 It doesn't actually matter, but if you're only changing one or two specs, then that can be helpful to people :) 04:24
(and like I implied, I often forget myself)
JDlugosz I'll keep it in mind. 04:25
wayland76 Oh, you wrote "upwrap" in your essay. I suspect you mean "unwrap" :) 04:26
04:26 eternaleye joined 04:28 szabgab joined 04:30 eternaleye joined
wayland76 I was surprised that the document ended where it did :) 04:36
I was sort of expecting something more conclusion-y on the end :)
But for the sort of document this is, that's find :) 04:37
04:49 ssm joined 05:03 Kisu joined
wayland76 s/find/fine/ 05:06
05:09 hanekomu joined 05:44 iblechbot joined 05:46 araujo joined 05:47 justatheory joined 06:52 lu_zero joined
lu_zero hi 06:52
I just tried to build rakudo with an installed parrot 1.2.0
is help needed to get the process in shape or it's just too early and everything is fine? 06:53
TimToady well, you don't say what went wrong 06:54
moritz_ currently compiling against an installed parrot is not supported
patches to change that are welcome.
lu_zero TimToady basically it could break in parrot_config stating the build dir but not the install dir 06:55
and rakudo asking for something it isn't currently installed
like PCT.pbc 06:56
moritz_ that's installed if you did a 'make install-dev'
lu_zero (and using the build dir value)
moritz_ good to know =)
lu_zero updates that part
06:57 lambdabot joined
moritz_ (oh, and you'd need the Stockholm release, not the current HEAD, because that requires a newer parrot than 1.2.0) 06:57
06:57 davidad joined
lu_zero I was planning to package that one 06:58
btw which is the version scheme?
06:58 sri_kraih_ joined
lu_zero right now versions have a plain number (17) but the package has a snapshot date (2009-5) 06:59
/tools/* like dynpmc.pl are still missing 07:06
07:08 DemoFreak joined
wayland76 I'm actually working on related problems 07:14
I'm turning rakudo into an RPM
lu_zero: What Distro? 07:15
lu_zero wayland76 gentoo
wayland76 Ah, ok
I'm doing Fedora 10 at the moment
I'm also finding that I need extra Parrot files 07:16
lu_zero so once I beat the Makefile to submission I have to handle the fact parrot still report build location instead the right ones...
wayland76 But I suspect that RPM works differently than eg. emerge in that regard
Maybe :)
lu_zero wayland76 not that different
07:16 ZuLuuuuuu joined
wayland76 Do you want a copy of my current patch? 07:17
lu_zero would be useful
wayland76 send me your e-mail address in a private message :)
lu_zero btw do you have a bug tracking rakudo for fedora ?
wayland76 Not sure
I've been working on getting some necessary stuff into Parrot for Rakudo install process 07:18
And that just came through today
I may've created a bug ages ago, but I forget :)
07:21 iblechbot_ joined 07:22 agentzh joined
wayland76 Btw, I should say that parts of the patch came from something Allison was doing ages ago 07:24
So I don't understand it all 100%
lu_zero hmm
wayland76 Especially the makefile stuff :)
But it seemed to improve the situation
Am I correct in guessing you know who Allison is? 07:25
lu_zero the makefile part from what I see just need a PARROT_DIR variable that points at the installed dir more or less
wayland76 no ^^
wayland76 Ok, Allison is one of the big Parrot people (big = notable :) 07:26
When I was doing stuff on Parrot, and no-one else could help me, then we had to bother Allison :) 07:27
lu_zero I see 07:29
wayland76 So that's why I trust her patches 07:31
At least, to a certain extent :)
But any bugs in it are problably mine 07:34
Unless they're due to bitrot :)
lu_zero ^^; 07:35
wayland76 The main bit I'm unsure about is the changes to t/harness 07:36
07:38 amoc joined
wayland76 The patch is basically everything I hacked together 2 months ago, adapted to today's Rakudo, but with no more updates than that 07:41
lu_zero the patch looks working 07:42
let me see how much =)
wayland76 Also, I forgot some files in the first e-mail (git diff didn't pick them up), so I just sent them
Just stick them in the "build" dir
Are you making an official Gentoo package? 07:43
I'm not doing anything official for the RPM, just making something that works
lu_zero I aim to have an official package 07:44
hmm
could you please send me the git diff as file?
wayland76 Done. I presume you mean as an attachment. 07:46
How does the Gentoo packaging creation setup work? 07:47
With RPM, you just make a spec file, and that contains everything
But I know on Debian, they create a whole directory structure with a bunch of different files
07:48 agentzh joined
lu_zero in gentoo you make an ebuild file and that's all more or less 07:52
wayland76 Ok. Anyway, we should be able to pool our work on the build system for the most part then 07:54
You'll notice that a new version of tools/dev/install_files.pl was checked into to Parrot over the weekend 07:55
I'm planning to rely on this for doing the actual installation
Basically, we make a manifest like the one that Parrot has, and hopefully the scripts will be able to do most of the rest 07:56
lu_zero hmm 07:57
the patch broke Configure.pl
wayland76 In what way?
lu_zero Global symbol "$short" requires explicit package name at Configure.pl line 76.
and %valid_options being %options now
wayland76 Ah, I think I know the problem. Let me check 07:58
Oh, it does it to me too 07:59
My build must've broken before I got to there
I'll fix it
lu_zero ok
I have to run
wayland76 ok 08:02
I've sent the fixes
Just problems created by trying to integrate last month's code with this month's :)
lu_zero btw 08:04
this is the gentoo tracking bug for parrot bugs.gentoo.org/show_bug.cgi?id=247125 08:05
wayland76 ok
lu_zero I appended a rakudo bug that's currently empty ^^
now I must run ^^
wayland76 bye
lu_zero btw 08:08
+RAKUDO_DYNEXT = @buildroot@@slash@usr@slash@lib@slash@rakudo@slash@@rakudoversion@@slash@dynext doesn't look right if I understood where it will be used
08:10 masak joined
wayland76 What's wrong with it? 08:11
08:13 agentzh joined 08:16 padd173_ joined 08:43 agentzh joined 08:51 dakkar joined, meppl joined 09:08 xinming joined 09:15 SamuraiJack joined 09:19 riffraff joined, LadyLunacy joined 09:27 agentzh joined 09:32 pmurias joined 09:43 jferrero joined 10:15 DanielC joined
DanielC Hello. What does the dot (.) mean when it comes before a function (such as .print .odd .whatever). What does it do? Thanks. 10:17
lambdabot DanielC: You have 1 new message. '/msg lambdabot @messages' to read it.
jnthn DanielC: It means "call on $_" 10:18
DanielC ah
So .print means print $_
jnthn Well, $_.print
Though those two are about equivalent. 10:19
DanielC ?? Is print now a method?
lambdabot Plugin `compose' failed with: Unknown command: ""
jnthn You can call it as a method, yes.
It's available as a function too.
Seem for .say
erm,
*same 10:20
And most other things that were just functions in Perl 5.
DanielC So with Perl 6 you'll be able to write $myString.print or print $myString ?
jnthn Right.
DanielC That's interesting.
jnthn There's no list of "functions that take $_ by default" any more.
You use the .foo construct instead.
DanielC Ok. That sounds like a good change (more rationalized).
jnthn Yes, Perl 6 is very much trying to get rid of lists that you have to memorize. 10:21
DanielC So... when do I get to use Perl 6 in production? :-)
jnthn Hard to say, and depends what your demands are for using something in production (as with anything, there's those that are in a position to early adopt, and those who have stability needs meaning they don't deploy anything too shiny and new.) 10:23
The Rakudo implementation is coming along pretty well, feature wise.
sjohnson DanielC: do you mean like, $string.trim; ? 10:24
DanielC Ok. When can an early adopter expect to use it?
Is Rakudo going to be the "official" Perl 6? I know it's the one that compiles to the Parrot VM.
jnthn I guess when they feel comfortable doing so. Personally I wouldn't yet, on the other hand I know people who have written little Perl 6 scripts to do useful bits here and there. 10:25
wayland76 An early adopter who doesn't demand feature completeness or many libraries can use it now
jnthn Right.
There's no "official" Perl 6.
Other than the spec and test suite.
DanielC ok
wayland76 The "official" Perl 6 is the Specs, the tests, and the standard grammar (called STD) 10:26
jnthn The implementations are all equally official (or unofficial). :-)
wayland76 There will be multiple implementations
DanielC Is the language still in flux? Or is the language decided and we just need to wait for the implementations?
wayland76 The ones that are seeing progress are Rakudo and SMOP
The language changes, but it's mostly when the spec is unclear, it's clarified
But occasionally there's something completely new 10:27
DanielC Ok. That gives me an idea of where things are.
wayland76 Mostly as a result of arguments about clarity
jnthn Much of the spec are pretty stable now, but implementations tend to run across bits that need clarification.
Other bits of the spec are still in flux, but not so much things I'd consider "core".
wayland76 (like threads :) )
jnthn Right, the concurrency stuff is still muchly in flux. On the other hand, the spec for the object model is mostly just in clarifications mode. 10:28
DanielC wayland76: What is SMOP? I don't know that one. I thought Pugs was the most complete implementation. 10:29
wayland76 Btw, I saw someone point out that the problem with the threads-on-events model is that it requires co-operative multithreading, not pre-emptive
SMOP is the C version that's intending to integrate well with Perl 5
jnthn DanielC: Rakudo has in many areas caught up with and in others surpassed Pugs now. 10:30
wayland76 Rakudo is the Perl 6 on Parrot one, and I suspect it's more feature-complete than Pugs now, since there's no Pugs activity at the moment
10:30 Chillance joined
jnthn Still behind it in some (e.g. lazy lists). 10:30
DanielC ok
thanks
If you Google for Perl 6 you hit Pugs.
wayland76 Parts of Rakudo are being written in Perl 6 now :)
DanielC: Yeah, our Google-foo probably needs some work 10:31
But if I write www.rakudo.org/ Perl 6 perl 6 perl 6 in the IRC log, it will probably help :)
DanielC :-)
wayland76 Although the Official Perl 6 is really at perlcabal.org/syn/ 10:32
Rakudo is just the implementation that I personally lean towards
DanielC I would say that Perl 6 is "production ready" when Rakudo is self-hosting, because Rakudo is far more complex than anything I'll ever write.
wayland76 Because I've adopted the Parrot dream :)
Carl Masak has written a wiki that runs on Rakudo :) 10:33
DanielC neat
wayland76 It's called "November"
DanielC notices that Rakudo's website is PHP-based ... 10:34
wayland76 He's using it to develop a suite of modules that we're calling Web.pm
Oh, definitely. We haven't gotten to the CMS stage yet
DanielC I understand. I like Drupal anyways. Rakudo's website uses Drupal. 10:35
wayland76 That's the third project on my list after I have a Rakudo RPM :)
jnthn Heh, rakudo.org running on a web-app written using Rakudo would be kinda neat.
10:35 agentzh joined
wayland76 jnthn: Why stop there. I want to run perl.org on Rakudo :) 10:35
(well, I want someone to, anyway :) ) 10:36
(just to clarify, I don't run perl.org)
DanielC I just expected rakudo.org to run on Perl 5. I just thought it was funny that it used a PHP CMS (nothing against PHP, Drupal is a good CMS).
10:37 _Chillance_ joined
jnthn DanielC: We're generally a pragmatic bunch. If the best tool for the job is Drupal, who cares what it's written in. :-) 10:38
wayland76 Besides, it's only temporary :) 10:39
jnthn Not to mention that some of those working on Rakudo also work more generally on Parrot, and thus are working towards dynamic language interoperability anyway.
DanielC Yeah. In fact, I use Drupal myself, even though I like Perl better than PHP.
10:40 icwiener joined
DanielC Anyways, now I have a much better idea of where Perl 6 / Rakudo is ("wiki -> yes, CMS -> no"). 10:41
wayland76 Probably a fairly basic Wiki compared to MediaWiki, though :) 10:47
10:52 hcchien_ joined
avar someone make a mediawiki grammar in perl6 :) 10:54
wayland76 I don't doubt that it will happen :) 10:55
I'm hoping we can get a complete collection of grammars for /etc too :) 10:57
10:57 hcchien joined
avar even /etc/mail/sendmail.cf ?:) 10:57
masak avar: November has a partial MediaWiki grammar. 11:02
11:02 payload joined
wayland76 avar: Well, there *are* limits :) 11:02
Then again, if someone sent one in, I'd include it :)
11:08 DemoFreak joined 11:13 hcchien_ joined 11:15 hanekomu_ joined 11:17 clkao joined 11:23 payload joined 11:25 tulcod joined 11:28 hcchien joined 11:34 ruoso joined 11:35 SamuraiJack left 11:41 tulcod joined, DanielC joined 11:49 Kisu joined 11:51 orafu joined
masak I'm thinking about .reduce and MMD again. It's an interesting issue, because the argument are in a list, not all of which need match for the MMD to be successful. After that, the process is repeated. 12:01
wayland76 I'll happily enter the lists to present the argument on MMD's part, and reduce the other argument to nothing :) 12:03
masak example: multi foo(Num $a, Num $b) { $a + $b }; multi foo(Num $a, Str $b) { $a + $b.chars };
wayland76 (actually, I won't, I just wanted to say that :) sorry )
masak and then [1, 2, 3, "grok", 5].reduce(&foo)
12:04 Kisu joined
masak hm, it's an example of reduce and MMD, but not a good example of why it's different from just normal MMD... 12:04
jnthn I suspect if anything is going to happen here, reduce will just need to be a bit smarter about how it uses MMD, rather than introducing special casses into MMD itself. 12:05
12:06 Whiteknight joined
masak jnthn: guess so. 12:07
jnthn: if one of the candidates has a slurpy param, MMD will be much easier. :) 12:08
hm, the reduce-on-URLs that ruoso has been toying with might be a good use case for how one wants reduce/MMD to work... 12:09
ruoso masak, yes... I'm wating anxiously for that ;) 12:11
regex-based dispatch is cool
but multi-based dispatch is even cooler
wayland76 How about using a grammar of regexes to recognise them, and MMD to dispatch each one as a separate, event-firing thread! 12:12
masak ruoso: what I meant was that maybe such an application needs to be written before we know exactly how reduce/MMD needs to behave.
wayland76 (sorry, I'm getting carried away here :) )
masak wayland76: you're not very much off the mark, actually. 12:13
ruoso masak, hmm... I see...
but is there that many options?
masak ruoso: I don't know. my brane hertz when I think about it.
wayland76 ...and if you keep going, in Megahertz? 12:14
jnthn Mine too, which is why I wonder if we really want this to be something built-in to reduce...
wayland76 s/in/it/
pmurias ruoso: hi
masak jnthn: we might, if there turns out to be a really simple but amazingly cool way to resolve things. :)
ruoso hi pmurias
wayland76 masak: I'd settle for it even if it was mundane :) 12:15
pmurias unsigned char foo = 0;
while (1) {
foo++;
printf("%d\n",foo);
sorry
jnthn masak: Sure. Maybe first step is to write a reduce that does what's needed as something non-core and then propose it to be official.
pmurias touchpad--
12:15 finanalyst joined
pmurias ruoso: i'm blocking on the circularity cause by $?BLOCK 12:17
finanalyst pmichaud: i worked last night to get a small program to replicate a segfault I was hitting. I sent to rakudobug, but didnt add [BUG] to the start. Ticket has ID of [perl #65956]
12:18 clintongormley joined
finanalyst the script made Parrot run out of memory 12:18
ruoso pmurias, that's why we included WEAKREF
pmurias how will we expose weakrefs to Perl 6? 12:21
ruoso a SMOP-specific macro, maybe? 12:22
pmurias SMOPWeakRef seems dicouraging enough 12:23
or SMOP::WeakRef
ruoso or even 12:24
SMOP::WEAKREF
pmurias ruoso: do you think any of the automatic cycle removal algorithms could work for smop? 12:25
ruoso pmurias, I'm not that familiar with that kind of solution... is there any of that which works in refcount gc? 12:26
12:29 ZuLuuuuuu joined
pmurias i found some stuff on google (a few papers and a mention on wikipedia) but i haven't fully groked the algorithms yet 12:29
www.research.ibm.com/people/d/dfb/p...urrent.pdf 12:30
12:40 payload1 joined 12:41 hanekomu joined 12:45 mizioumt joined
DanielC If Perl 6 is a spec rather than an implementation, will there still be point releases? 6.1, 6.2, 6.3, etc? Will you be able to write something like "use 6.2" ? 12:51
pmurias DanielC: the spec will be versioned
DanielC ok
Will you get to write "use 6.2" or similar? 12:52
pmurias ruoso: weak-refs delegate all method calls?
masak DanielC: 'use v6.2', probably.
DanielC thanks.
masak DanielC: have you tried Rakudo yet?
DanielC I haven't. Until just now I thought it was not very mature. 12:53
masak DanielC: it's pretty impressive, I would say.
not done yet, mind you, but there's lots you can do already. 12:54
clintongormley I just wish you guys would hurry up and finish it! (Not in the sense of "you're so slow", but in the sense of "I can't wait!") :)
masak people are already writing sizeable applications in top of Rakudo.
DanielC I wouldn't mind using it for my personal scripts.
masak clintongormley: wait for what, exactly? some specific feature you'd like?
wayland76 Admittedly, the ROADMAP needs an update :)
masak wayland76: no, not anymore. :) 12:55
pmichaud++
wayland76 Oh? YAY!
masak \o/
DanielC If I use Rakudo for my personal scripts, it won't matter if it's "production ready" or not.
clintongormley i've downloaded and tried it out a few times, with varying degrees of success
masak DanielC: that's the spirit!
clintongormley actually, the biggest block is not knowing about all the new stuff
wayland76 Why wasn't that sent to my local newspaper as a world-changing story :)
clintongormley and not having the time to investigate properly
masak clintongormley: feel free to ask about anything at all.
clintongormley wishes for more time
wayland76 ...and the antidote to that block is to hang out here :)
wayland76 suggests polyphasic sleep to clintongormley 12:56
clintongormley masak: thanks for the offer. i read all the p6 posts I can find
wayland76 clintongormley: Have you seen JDlugosz's stuff?
masak clintongormley: I've found that the very best way to learn is to have an itch and scratch it with Perl 6.
clintongormley it's one of those "i don't know what i don't know until i try to do something"
masak clintongormley: exactly.
start with a small script, and see how far you get. 12:57
clintongormley wayland76: i've seen some of his stuff - i find his writing quite difficult to follow
wayland76 ...or a small grammar :)
Really?
clintongormley well, he tends to write long essays about eg the meaning of undef
i think he has a CS background, which I don't, so i tend to get a bit lost 12:58
masak I find JDlugosz hard to follow too sometimes. his texts are quite high-level.
DanielC masak: You said people are writing sizeable apps with Rakudo. Can you name a couple? I know about a wiki called "November".
wayland76 I thought he was quite good when he was in tutorial mode. His main problem seems to be that he's writing before he has an up-to-date spec in his mind :)
clintongormley i haven't seen his tutorials
masak DanielC: that's one. I wrote a 3D board game called Druid. and there's a project installer called Proto. :)
DanielC That sounds impressive. 12:59
clintongormley i've tried to get involved with dev a couple of times, but there is so much you need to know before being useful, that my efforts have been failures
masak DanielC: then there's the Pod parser by mberends, and the Form port by Matt-W.
clintongormley ENOTENOUGHTIME
masak DanielC: yes, try my board game! I'd like some feedback on it.
DanielC: you can download it using proto. :)
DanielC masak: Sure, I enjoy games. Where can I find it?
masak clintongormley: we all have little time here.
wayland76 clintongormley: Did you see the one on "Meditations on a loop"?
clintongormley wayland76: no - link? 13:00
masak DanielC: github.com/masak/druid/
DanielC *click*
wayland76 clintongormley: Well, it's wrong, so I hesitate to provide a link. But the link is www.dlugosz.com/Perl6/web/med-loop.html
When I say "Wrong", I mean that bits of the syntax were wrong when I read it. He may've updated it now 13:01
masak: Do you remember whether he has?
masak wayland76: no idea.
13:01 abra joined
clintongormley gaaah - i look at that and my eyes glaze over 13:01
wayland76 Ok
I guess to me it reads like a Tom Christiansen FMTEYEWTK, and I like those 13:02
masak clintongormley: that's not the desired effect. maybe start at the other end? :)
clintongormley masak: at the bottom?
masak (I mean, by writing code instead of trying to read it)
clintongormley ah yes :) exactly
wayland76 clintongormley: Keep in mind, though, I've been doing Perl 5 for ... Wow, approaching 15 years (well, maybe 14 or so) 13:03
clintongormley wayland76: me for 12
i'm in design mode at the moment, which makes me scurry off to find snippets of things to read to avoid actually designing. but there is this elemental contention between work and work-avoidance, so long tutorials lose
wayland76 oh, ok.
clintongormley the last time i had actual free time to play on new stuff was between christmas and new year 13:04
</sigh>
wayland76 :)
Just out of interest, what did you think of Tom C's FMTEYEWTK documents? 13:05
clintongormley wayland76: the last time i looked at them was probably 12 years ago, when they were way over my head. 13:06
wayland76 Oh, ok. The thing I liked about them was that they would take an example of a short but complex piece of code, and explain it *completely* 13:07
Maybe 5 lines or so
clintongormley i should take another look
my perlfoo is reasonable (excluding anything to do with C)
wayland76 I'll link you the one that I liked
www.perl.com/doc/FMTEYEWTK/sort.html 13:09
clintongormley that looks good 13:10
wayland76 It may be moderately basic for you now, but I thought it was good.
(well, the pieces may be basic; I suspect the algorithm is clever :) ) 13:12
clintongormley yes - pretty much a schwartzian transform
but nicely written
13:12 mizioumt joined
masak did you know that Perl 6 has the Schwartzian transform built-in? 13:12
clintongormley yes i've seen that 13:13
wayland76 Well, it was written by Randal Schwartz, what do you expect :)
clintongormley :)
wayland76 (ie. the code in the FMTEYEWTK was written by Randal, with Tom explaining) 13:14
clintongormley yes
one question (and i don't that Perl6 doesn't have builtin keywords), but from my frequent glances at p6, it looks like there is an explosion of keywords
wayland76 Ok, so you like the FMTEYEWTK, but not JDlugosz's stuff
It has builtin keywords, but not functions
Well, and some built-in types
clintongormley ah right, ok - but the question remains
what i'm wondering is if we're going to need a PHP style index, to make head or tail of it 13:15
(this coming from a by-stander, rather than somebody immersed in p6)
wayland76 Well, something like that, and a good point
masak moritz_: I see you license under a cc license. do you think it's risk-free, if I want to borrow parts of your p5-to-p6 tutorial, to copy-and-adapt things into u4x, which is licensed under Artistic 2.0?
wayland76 S32 heads in that direction. masak, will your u4x project cover that? 13:16
clintongormley i suppose a lot of them are convenience methods, which obviate writing the same thing from scratch (as we'd have to do in p5 now)
so as soon as you discover them, you stop doing it manually
wayland76 ( clintongormley: u4x = userdocs for Christmas = user-friendly documentation)
pmurias masak: do you think moritz_ would sue you?
clintongormley wayland76: yes - i saw that mentioned previously. last time i looked i didn't see any docs (but it was a while ago)
wayland76 clintongormley: There's some of that. .say and .slurp for example 13:17
clintongormley yes
masak pmurias: no. and I do think he's ok with it.
pmurias: I'm mostly interested about the interactions between cc and Artistic in the abstract.
afk & 13:18
clintongormley although, most of the new keywords seem to either be pretty obvious, or easy to remember once explained
it's probably the punctuation that is going to hurt my head initially :) 13:19
wayland76: here's an example of why i'm not crazy about JDuglosz's stuff: 13:20
The result of the expression now looks like this: ⋖ ⋖ ⋖ ⋖ ⋖ Nil ⋗ ⋗, ⋖ ⋖ 2 ⋗ ⋗, ⋖ ⋖ 3 ⋗ ⋗, ⋖ ⋖ Nil ⋗ ⋗, ⋖ ⋖ 5 ⋗ ⋗, ⋖ ⋖ Nil ⋗ ⋗, ⋖ ⋖ 7 ⋗ ⋗, … ⋗ ⋗ ⋗ with the 93 iterations not shown in the ellipses.
wayland76 Those all show up here as a box with an X in it :) 13:25
clintongormley ah :)
i'm going to give him some feedback - don't like talking about the guy behind his back!
wayland76 Oh, yes, I see them when I look at the document 13:26
Well, I expect he backlogs :). But I could be wrong
clintongormley i think it's just a matter of style really
wayland76 I've already sent him some feedback
clintongormley i'll msg him
wayland76 Then again, I've just spent a week looking at Unicode parentheses, so it's no problem for me :)
clintongormley heh 13:27
wayland76 Get used to unicode, though :) It's going to be a part of life in Perl 6
www.fileformat.info/info/unicode/ca.../index.htm 13:28
clintongormley oh sure - i'm happy with that
wayland76 Click on a category. Then choose "list". It has all the characters there
clintongormley but that same info could have been presented with nesting, and have been more readable
wayland76 There are 4 special categories for parentheses
I agree it could've been improved :) 13:29
Incidentally, if you have autocomplete in your IRC client, you can spell JDlugosz's name correctly by typing "JD" and pressing tab :) 13:31
I find it makes it easier for me :)
clintongormley Waaaay! I'm using pidgin - i had no idea it could do that! 13:32
DanielC Woot! Rakudo comes with an interactive shell. I've always wanted that for Perl.
I always use Python as a calculator because Perl 5 isn't an interactive shell.
clintongormley perl -de 5
perl -e print 5 + 10 13:33
perl -e 'print 5 + 10' :)
DanielC clingtongormley: I usually want to do a lot more than just one calculation.
wayland76 I use bash as my calculator
$(( 5 + 10 ))
DanielC I appreciate having a real shell where I can create functions, variables, etc.
wayland76 echo $(( 5 + 10 )) 13:34
But it only does integer division :(
DanielC so a real interactive shell is much better than perl -e 'print 5+4' or $(( 4 + 3 )). 13:35
clintongormley DanielC: why not just put perl into debugger mode: perl -de 5 13:36
DanielC My only annoyance with the Rakudo shell is that it doesn't display the result of each calculation.
clintongormley i live in the debugger
DanielC clintongormley: I didn't know about that option.
clintongormley perl -de 5 13:37
> x $a = 5 + 10
> x $a ^ 2
lambdabot <no location info>: parse error on input `='
Couldn't match expected type `a -> b'
finanalyst what is the syntax to make rakudo emit the pbc for a program?
clintongormley heh :)
DanielC With Rakudo you have to say 'say'.
clintongormley with the perl debugger, you just use 'x'
DanielC What does x do?
clintongormley which acts like a dumper
it's similar to : print Data::Dumper::Dumper(....) 13:38
in the p5 debugger, just type 'h' for help
13:38 araujo joined
clintongormley there will be lots of options that you won't need initially, but just ignore those until you do need them 13:38
DanielC I just played with it a little. It feels a bit like a hack. I think I'd still use python for that (even though I don't actually like python).
What annoys me about python is that if you do "3 / 2" it does integer division, which is almost never what I want. 13:39
clintongormley notes that the p5 debugger DWIM ;) 13:40
DanielC :-)
I think it would be groovy if the Rakudo shell had a flag or something to make Perl output the return value of each statement (just add an implicit 'say' before every line). 13:42
wayland76 I think it would be groovy if it output the flag of a random country as ASCII art :) 13:44
clintongormley that'd be cool until the return value is a large object, which results in a 4,000 line dump
wayland76 Better idea, though; a repl container function :)
lu_zero ^^;
DanielC clintongormley: Somehow that has never been a problem for me, and I have been using the Python shell for at least a decade. 13:45
clintongormley maybe it returns the equivalent of MyClass=HASH(0x7c1838) 13:46
DanielC Maybe.
clintongormley depends what you use it for, i suppose
DanielC I would consider MyClass=HASH(0x7c1838) to be a sensible output for the shell, as long as it still does the right thing for simple numbers and arrays. 13:47
I would not expect a shell to print out the contents of a hash.
(without an explicit command to do so) 13:48
clintongormley sure
13:48 FurnaceBoy joined
clintongormley i was being facetious :) 13:48
DanielC Any Rakudo developers here? Where do I submit a feature request?
pmurias the shell should propably print out .perl of the value 13:50
DanielC What is .perl? 13:51
pmurias perl6: say [1,2,3].perl 13:52
p6eval elf 26929: OUTPUT«[1,2,3]␤»
..rakudo 23718a: OUTPUT«[1, 2, 3]␤»
..pugs: OUTPUT«\(1, 2, 3)␤»
13:52 FurnaceBoy left
DanielC I just experimented a little. I like the output of .perl, it looks sensible for a shell. 13:54
13:54 skids joined
DanielC Hmm... It looks like you can't define variables in the Rakudo shell. 13:54
$foo = 1 gives "Symbol '$foo' not predeclared in <anonymous> in Main ..." 13:55
clintongormley my $foo ? 13:56
DanielC That works.
Is there a reason why the my is mandatory in the shell?
13:57 finanalyst1 joined
pmurias use strict is default in Perl6 13:58
13:58 PacoLinux joined
DanielC pmurias: Really? I thought it wasn't going to be. 13:58
e.g. for one-line programs, use strict seems wrong. 13:59
But I assume that the Perl6 guys know what they are doing.
jnthn DanielC: my should be optional in -e "..." 14:00
(Though isn't yet.)
In the REPL, not so sure what's right there... 14:01
DanielC ok
That sounds fine then. So in a real program 'use strict' is on by default but in "perl -e" it is off by default.
masak DanielC: I think I agree that the return value should be printed by default in the REPL. 14:04
DanielC: but have you discovered the largest deficiency yet with the current Rakudo REPL?
DanielC REPL == shell?
masak DanielC: yes. 14:05
DanielC No, I haven't. What's the largest deficiency?
masak DanielC: Read, Eval, Print, Loop :)
DanielC ah
jnthn masak: Is that the deficiency? ;-)
masak DanielC: the deficiency is that variables don't survive.
jnthn masak wants a REPRL
masak from one evaluation to the next. 14:06
jnthn Read, Eval, Print, Remember, Loop
DanielC Man... you are right.
say $foo => gives an error.
masak DanielC: cf this post. use.perl.org/~masak/journal/38279
DanielC Even though the previous line clearly said 'my $foo = 1'
*click* 14:07
jnthn DanielC: It's exactly the same semantics as if you eval'd each line (at the moment). 14:08
If you eval('my $foo = 42') you wouldn't expect $foo to exist after that eval.
masak that's the reason, but it still sucks.
DanielC And that's probably how it works internally.
jnthn I agree it's not the most helpful behavior in the REPL though.
Yes, that's almost exaclty how it wroks internally. :-)
DanielC I once wrote my own Perl shell that did exactly that: while(1) { print eval (<STDIN>) }. I stopped using it after a few hours. 14:09
masak I'd argue that the keep-variables behaviour would be good not only for Rakudo, but for all PCT languages.
jnthn masak: And conveniently enough, the places we really need to solve this are probably outside of Rakudo. :-) 14:12
And in PCT.
DanielC What is PCT?
masak DanielC: it's the toolkit for creating new compilers, i.e. new languages under Rakudo.
DanielC ok 14:13
masak s/Rakudo/Parrot/, sorry. :)
DanielC ok
PCT = Parrot Compiler Toolkit?
jnthn DanielC: Yes 14:15
Too many TLAs!
DanielC heh
jnthn OK, time for me to hack on Rakudo some. :-) 14:17
clintongormley cheers : GO JNTHN GO!
masak oh, is today a Rakudo day? 14:18
jnthn masak: No, but I haz a grant. ;-)
DanielC Paul Graham opines one of the things that makes a language successful is the ability to make quick throw-away programs with it. Maybe we can extrapolate from that that "perl -e" and an interactive shell are important. 14:19
masak jnthn: \o/
DanielC I can tell you that those are some of my favourite features of Perl and Python (resp). Most of my Perl programs are "perl -e". I don't know if I'm alone in that.
masak DanielC: using the up and down arrows, tab completion, interactive help... 14:20
all those would make throw-away programming easier.
DanielC nods 14:21
jnthn already did a bit of his grant and should blog about it. 14:22
DanielC Why is it so hard to make an interactive shell for Perl? Is it something I would understand or is it very complicated?
jnthn The persisting lexicals issue is a tad tricky. 14:23
masak DanielC: no, it's simple. the community as a whole doesn't seem very interested in creating tools that are externally impressive.
jnthn But solvable.
clintongormley jnthn: why would lexicals need to persist? as opposed to just turning off strict and using globals?
jnthn That's the only hard technical blocker I'm aware of.
masak they can be technologically impressive on the inside. but they seldom have the glitz that Ruby and Python manages to add to their REPLs and other apps.
clintongormley: that wouldn't always be what one wants. 14:24
jnthn clintongormley: 'cus people will still type my $x = 42; <nl> say "omg the answer is $x"
And expect it to work.
clintongormley ok
jnthn So it's probably best that we make it work. :-) 14:25
clintongormley well, you don't seem to have much else on your plate ;)
clintongormley waits 14:26
is it done yet?
masak & jnthn? you both going to YAPC::EU this year?
jnthn clintongormley: :-P 14:27
clintongormley: I'm going to YAPC::EU, yes. Speaking even. :-)
clintongormley i wouldn't expect any less :)
we've passed each other in previous YAPCs
but i don't think we've spoken
i'll introduce myself this time round 14:28
DanielC Dang. I'll be away on 3-5 August so I can't go to the conference.
DanielC makes a mental note to look up more Perl conferences in Europe.
clintongormley where are you DanielC?
DanielC Germany.
On the side close to France. 14:29
clintongormley i'm in spain, on the side close to france :)
barcelona
jnthn I'm in Slovakia, on the side close(st) to France. ;-)
clintongormley heh
you in bratislava?
jnthn Aye. 14:30
clintongormley is the IP still going?
jnthn IP?
.oO( my IP address is still fine... )
clintongormley Irish Pub
jnthn Oh, in Stare Mesto? I think so...
clintongormley which was about the only restaurant worth going to about 12 years ago 14:31
jnthn I believe there is one centrally anyways.
clintongormley (according to the friends i was visiting)
jnthn I don't tend to go out in the center so much...
clintongormley i bet it's changed a lot since then
like prague has
ok laters all - must crack on 14:32
jnthn Most probably, but no idea. First time I came here was only a couple of years back.
Well, yes, I have an idea from what I've been told, but not from personal experience. :-)
jnthn was still doing high school 12 years ago. 14:33
OK, time to re-arrange Object.pir some and hopefully not break excessively much.
DanielC masak: In your post you write about Ruby's ri... What does ri / u4x have that perldoc doesn't have?
I have always thought highly of perldoc. 14:34
masak DanielC: me too. perldoc does a lot of things right. 14:35
DanielC: here's what I imagine. svn.pugscode.org/pugs/docs/u4x/README
DanielC *click*
masak: So you'll be able to run "grok map" to learn how the map function works instead of going to "perldoc perlfunc" ? 14:37
masak DanielC: correct.
clintongormley what about adding a "Perl6 Concepts" page, to navigate your way through roles, adverbs, sigils, slang etc
masak clintongormley: there will likely be tutorials, perhaps connected through something like that. 14:38
clintongormley cool
DanielC I think I like where you are going with this "grok" program.
masak see svn.pugscode.org/pugs/docs/u4x/TODO for what we currently think we'll document.
DanielC: glad to hear it.
DanielC: literal is tasked to write it as a GSoC project this summer. 14:39
erm, I mean literal++.
DanielC cool
I remember that one of the things I loved about Perl when I began learning it was perldoc.
masak yes. this will be like that, only more so. :) 14:40
clintongormley btw, DanielC do you know about the form: "perldoc -f map"
DanielC I liked that perldoc had both great tutorials and great reference (and not just one or the other).
masak DanielC: indeed.
DanielC clintongormley: No, I didn't know that. Thanks.
masak: Will grok also support the documentation for all the CPAN modules the way perldoc does? 14:43
masak DanielC: I don't know. I don't have 20/20 vision forwards. 14:44
DanielC Ok.
masak but it sounds desirable. 14:45
I'm presently thinking about how best to store the documentation tied to Perl 6 itself (core subs, classes, operators) in such a way that the 'grok' program can easily access it. 14:46
DanielC What's wrong with the current man page format?
masak that's a different question, but I think we can do better than that. 14:47
I liked the color-coded version of the ri output, for example.
at least as an option.
HTML should be another option.
DanielC My ri is not in colour...
masak DanielC: no, not by default.
see _why's tutorial linked from my blog post. 14:48
DanielC ok
masak we'll probably want to put u4x docs on the web as early as possible, autogenerated just like the specs.
DanielC I don't think u4x is a very memorable name (neither is ri). I think "perldoc" and "grok" are much better names. 14:49
masak me too. 14:50
u4x is a throwaway name.
14:50 payload joined
masak it's just the name of the effort to write the documentation for grok. 14:50
and perhaps to write grok itself.
I chose it because I think that the thought of Christmas is a decent way to motivate people to think about documentation. 14:51
people realize that if Christmas ever comes, we'll need to be ready, I think.
DanielC ok
masak it would be quite embarassing to have all other aspects of Perl 6 ready, but to have no or very poor documentation. 14:52
DanielC Indeed.
masak like it or not, people go a lot by first impressions.
DanielC Especially since documentation has "always" been one of the selling points of Perl.
masak indeed.
it's one of the things we have to rebuild from scratch, and that naturally takes time. 14:53
DanielC Perl6 will still use POD, so at least that won't change.
masak DanielC: sure, but there's also Pod, a new version written for Perl 6. 14:54
I expect that the u4x documentation will be written in Pod. 15:00
DanielC The new pod is almost the same as the old pod, isn't it? 15:01
masak no, I wouldn't say that.
DanielC ok 15:02
masak it has a great number of similarities, but just as the rest of Perl 6, it's a cleaned-up version with lots of cruft removed and lots of neat ideas put in.
DanielC Is there a guide to the new pod somewhere?
masak and just as the rest of Perl 6, it hadn't really congealed yet. TheDamian is allegedly working on a new draft.
DanielC: there's S26. and the CPAN module Perl6::Pod. 15:03
DanielC: and lots of email discussion scattered on p6l around 2006.
DanielC finds S26 and starts reading 15:04
15:11 iblechbot joined 15:19 sri_kraih joined
ruoso pmurias, weak-refs do delegate all the calls 15:20
15:23 icwiener joined 15:32 Gothmog_ joined 15:33 Gothmog_ joined 15:36 ejs joined 15:46 abra joined 15:47 orafu joined 15:49 simcop2387 joined
literal DanielC: masak probably meant to say Perl6::Perldoc, not Perl6::Pod 15:49
masak oh, right. aye. 15:51
it currently resides in the perl6-examples repository on github. 15:52
jnthn *sigh*
So I think I've got a refactor about right...apart from it fails one spectest. A really bizzare one to fail too. :-| 15:53
literal masak: no, Pod::Parser is in perl6-examples :)
Perl6::Perldoc is the Perl 5 module on CPAN
masak yes. my brain isn't 100% today.
arranging Esperanto Youth meetings tends to sap one's powers a bit, at least mine. :) 15:54
jnthn rakudo: role C { }; class HasC { has C $.x is rw; }; HasC.new.x = 42; say "alive"
p6eval rakudo 23718a: OUTPUT«Type mismatch in assignment; expected something matching type but got something of type Int()␤in Main (/tmp/n7Ah6FMEon:1)␤»
masak and I'm sneezing a bit to often, which makes me suspect that I'm on my way to getting a cold if I don't watch out...
rakudo++ 15:55
jnthn masak: Yeah, bizzarely it fails to fail after the refactor I did. But nothing else anywhere else fails. :-|
It's like...why *that* test...
masak :) 15:56
it's today's puzzle.
jnthn I guess I shouldn't complain. It was a fairly major-ish change that I did, so to only hit this issue is kinda not so bad. 15:57
oh hmmm, I think I know what's up with it. 15:59
masak even better than today's puzzle is _solving_ today's puzzle. :) 16:02
jnthn rakudo: class A { has Int $.x is rw; }; my $y = A.new; $y.x = "oh noes";
p6eval rakudo 23718a: OUTPUT«Type mismatch in assignment; expected something matching type Int but got something of type Str()␤in Main (/tmp/edV7WWyPnS:1)␤»
jnthn gah
OK, so our spectests are missing a test or ten. 16:03
masak o_O
masak submits rakudobug
jnthn masak: Erm
The above output is correct.
masak oh, right.
I misread.
jnthn masak: The point is we don't have a test for that.
masak thought things went wrong at construction.
man, I'm really not working at full speed today. :/ 16:04
jnthn So it turns out actually I didn't break just attributes typed with roles (which woulda been SO weird) but just typed scalar attributes in general.
Which makes complete sense.
masak ah.
jnthn I was just pretty sure I'd fail other tests, that's all.
masak & # going swimming 16:05
literal < DanielC> masak: So you'll be able to run "grok map" to learn how the map function works instead of going to "perldoc perlfunc" ?
DanielC: you can already do "perldoc -f map" :)
oh, it seems someone already told you about it 16:07
JDlugosz Howdy y'all. 16:08
I just got to the stuff about me in the backlog... 16:09
If "meditations on a loop" isn't correct now, let me know. It's been updated based on the initial readings' feedback.
I'm also marking the status within the document, though in this case it was at the bottom. 16:10
For those interested, my current attempts at writing something have run into issues, but that's how I find such issues in my knowledge (as well as in the spec), by organizing it and writing about it. Writing is a great way to learn. 16:12
In the 90's I wrote a lot for magazines.
literal does the guy who created the Period Table of Perl 6 Operators hang out here?
JDlugosz Yes, I have a degree in Computer Science.
literal Periodic
clintongormley JDlugosz: hiya John i sent you a number of messages - not sure if you got them 16:13
JDlugosz What (where) is "FMTEYEWTK"?
clintongormley www.perl.com/doc/FMTEYEWTK/index.html
JDlugosz Messages: I'll try now. But lambdabot's didn't mentionanything when I came back.
clintongormley JDlugosz: no sorry - i meant direct IRC, as opposed to in #perl6 16:14
JDlugosz I'm up to 13:12 UTC in the backlog.
clintongormley ok - i suppose it depends on your IRC client :) 16:15
JDlugosz "⋖ ⋖ ⋖ ⋖ ⋖ Nil" ... well, I'm trying to show what goes on underneith. Using parens would conflict with the meaning I'm explaining of how parens wrap things up in a Capture. 16:16
16:16 iblechbot joined
clintongormley i was thinking more about nesting, there 16:16
sorry - vertical whitespace
dalek kudo: 3eb18eb | jnthn++ | src/classes/Object.pir:
Refactor class creation somewhat. We now have a kind of proto-instance (which ain't - yet anyway - the proto-object) that we set up once with all of the containers, and then we clone it. This is a step on the road to being able to do traits on attributes right and also to allowing custom BUILDs. We temporarily regress on 1 spectest (not 1 file, just 1 test).
16:17
JDlugosz How might I describe it other than nesting, since the layers of wrappers is what I'm pointing out?
clintongormley < 16:18
<
<
JDlugosz vertical whitespace? You mean make it on multiple lines? OK.
Never wrote in LISP, I take it?
clintongormley heh - no :)
JDlugosz I don't see any "messages to me". 16:20
In the backlog on the web site, that is. My client reset at some point so nothing before 10:39 UTC. 16:21
pugs_svn r26930 | hinrik++ | Add some links to other Perl 6 docs 16:22
clintongormley JDlugosz: here's what i wrote: 16:23
I have 12 years experience with p5, but don't have a CS background, and I find your tutorials quite hard to read. I have to really sit and study them.
the result is, I either skim, or get bored and leave - either way not doing your content justice
i would suggest:
- smaller blocks of text
- single concepts, rather than trying to explain too much in one place
- better layout, eg show nested data structures with line breaks, rather than on a single line
- trim the words to what is necessary, eg "Wow, the built in Int class has a .prime method! Well, no, it doesn’t. Once upon a time methods that were not found would fail-over to ordinary sub calls. That has been removed and this example was not updated. Perl 6 is a moving target!"
I appreciate the effort you're putting into it, which is why i'm giving you my feedback - I'd like to use your docs in the future :) Hope I haven't caused any offence
Since I wrote that, I've thought more about your tutorials, and maybe they're aimed at somebody who knows more about p6 than I do currently (ie very little) 16:24
in which case, the level may be appropriate 16:25
JDlugosz Thanks, noted. 16:27
skids JDlugosz: just wanted to make sure you knew about this: www.perlfoundation.org/perl6/index.cgi?WITCH 16:28
JDlugosz skids: what about it? 16:29
skids Just that it exists 16:30
In case it's foldable somehow into what your doing
JDlugosz OK, I bookmarked it.
And I'll keep it in mind if I write about one of those.
16:31 DemoFreak joined
skids It's not necessarily aimed at linking just to the spec -- it only started that way because I layed out the initial stuff onmy first read through the synopsis. 16:32
So it could link into u4x pages as well.
Does u4x have a stable web location yet, or will it be prone to move around for a bit? 16:34
16:35 eMaX joined
literal I'm not sure 16:36
will be in pugs svn for now
JDlugosz Why not start a github for something new?
literal it might end up there, I think we first have to figure out the layout of the docs and such 16:37
skids
.oO(If roads moved as much as websites...)
16:38
16:42 nsh joined 16:45 Psyche^ joined
DanielC Doesn't ~~ man something special in Perl 6? But ~~ is already used by the i18n module (search.cpan.org/~audreyt/i18n-0.10/lib/i18n.pm) 16:54
s/man/mean/
skids ~~ is smart match in Perl6. 16:57
(and in perl 5.10 I am told)
DanielC So there is a conflict with i18n... What is a smart match? 16:58
literal I think they intentinally left ~~ unused so they could use it later, and i18n was written before 5.10 :P 16:59
skids perlbuzz.com/2007/12/perl-510-now-available.html (5.10 version)
were il8n to be Perl6-ified likely it would use a cusom defined set of flags to Q. 17:02
jnthn rakudo: class A { has Int $.x is rw }; my $x = A.new; $x.x = "dies" 17:09
p6eval rakudo 3eb18e: ( no output )
jnthn (dies now locally) 17:11
skids jnthn: I was looking into making (...) xx * work (to the limit that Ranges currently work) but wonder where would .Iterator get jammed ... that is what's the internal class of an in-progress list operation lke that? 17:13
I'm guessing we would not want one class per kind of list operation, nor a per-instance anonymous role... 17:14
jnthn As far as I know, Iterator is a role and we'd hand back something that does Iterator. 17:17
Which may be the thingy itself.
I'm not quite sure how it'll play out for List and Array.
skids Well, externally it will just look like a list, but we need some hook to hanf the state and the logic that actually performs the iteration on. 17:18
s/hanf/hang/
e.g. right now, 1..* hangs RangIterator in Range. 17:19
But I'm guessing we don't want ReplicationIterator, ZIPiterator, etc, etc.
jnthn Well, I think it returns a RangeIterator when you ask for .iterator on a range.
17:20 LadyLuna1y joined
jnthn No, we don't, but since I believe all of those would - like map and grep - be buildable on the gather/take primitive... 17:20
17:20 fridim_ joined
skids Yeah, in that case they are just subs... 17:21
jnthn Then I expect it will all fall out of making gather/take lazy.
skids was kind of thinking to be able to do something in the interim.
So maybe I should just make an internal Any class that we hope will vanish later. 17:22
erm subclass.
jnthn Perhaps, yeah. I kinda fear any workaround is going to get messy though. 17:23
17:23 nbrown_ joined
skids Well, just follow Range's example :-) 17:23
Excep hide it away. 17:24
jnthn Yeah but even Range isn't very lazy.
Not when you stick it into a for loop anyway.
skids Ah, I guess not. I thought I remembered 1..* working more than it does. 17:26
jnthn I appreciate that you want the laziness, but my own experience of trying to get us in that direction is that it's just going to be even more work that trying to do laziness proper. I suspect that more productive in the long run, if you want to work on this area, is looking at re-writing the operators that need to be lazy in terms of gather/take. 17:27
(also note pmichaud has thought this stuff through more than me...) 17:28
It's possible to write operators in the setting now.
So looking at moving a couple to work in terms of gather/take that will need to is probably a quite interesting thing to try. 17:29
skids I already have zip/roundrobin eritten in those terms (pending slices)
jnthn ah, cool
skids (Even have a workaround using PIR to get around binding array elements so it lvalues properly) 17:30
It does feel a bit wrong though knowing any callbacks with takes that users are expecting to go to an outer gather in them are going to blow up. 17:33
moritz_ @tell masak Artistic 2.0 is fine 17:37
lambdabot Consider it noted.
finanalyst1 moritz_: hi. i was looking at your blog on making an executable 17:38
moritz_ somebody looks at my blog ;-) 17:39
finanalyst1: I have to run now, but I'll backlog, if you have any questions
finanalyst1 is it possible to get part way there? eg. is it possible to have perl6 emit pbc, which can then be used with parrot? 17:40
moritz_ yes
finanalyst1 i read your blog at least once a week
moritz_ if the rakudo runtime is available
dinner &
finanalyst1 bon appetite
i need to go eat too
dalek kudo: b0e33e2 | jnthn++ | (4 files):
Add a stub p6opaque, and start making objects we create use that instead of Object as their repr. Fill out its clone vtable method enough to un-regress the test my last commit had us fail. This also lays the foundations for starting dispatch refactor.
17:48
18:03 DanielC joined
skids ponders slice laziness. 18:05
Essentially, can a function return two or more infinite lists as captures.
And at the same time support these "flatten in list" behaviors. 18:06
When there's no want-like construct...
I suppose just return <some lazy object> for each slice. 18:12
Or rather ( <some lazy object> ) I guess. 18:15
18:15 sjohnson1 joined 18:17 justatheory joined 18:18 mizioumt joined 18:34 sjohnson1 joined 18:39 rjbs joined
rjbs Camelia. Cute! 18:40
Hm. Is S26 (perlcabal.org/syn/S26.html) still the latest, more or less?
18:42 r0bby_ joined 18:44 sjohnson2 joined, r0bby joined
skids rakudo: y sub a { return gather for 1..3 { take ( gather {take 1; take 2; take 3;} ) } }; a().perl.say 18:52
p6eval rakudo b0e33e: OUTPUT«Could not find non-existent sub y␤»
skids rakudo: my sub a { return gather for 1..3 { take ( gather {take 1; take 2; take 3;} ) } }; a().perl.say
p6eval rakudo b0e33e: OUTPUT«[1, 2, 3, 1, 2, 3, 1, 2, 3]␤»
skids rakudo: my sub a { return gather for 1..3 { take \( gather {take 1; take 2; take 3;} ) } }; a().perl.say
moritz_ oops, t/spec/S12-methods/indirect_notation.t aborts after 11 tests
18:52 mizioumt joined 18:54 jferrero joined
skids hrm evalbot seems to take much longer for that to fail than on my system. 18:55
cmon ulimit, u can do it.
moritz_ it's on a rather slow machine
jnthn moritz_: On current Rakudo? 18:56
moritz_: With the Parrot in PARROT_REVISION?
moritz_ jnthn: with rakudo b0e33e21a689a91176805a32be5971298c6df24f 18:57
p6eval rakudo b0e33e: OUTPUT«maximum recursion depth exceeded␤in method List::list (src/gen_setting.pm:722)␤called from method Any::map (src/gen_setting.pm:34)␤called from method List::perl (src/gen_setting.pm:732)␤called from method Any::map (src/gen_setting.pm:732)␤called from method List::perl
..(src/gen_sett…
moritz_ jnthn: and parrot r39159
which is a bit newer than required
jnthn moritz_: OK. Maybe it's heisenbug, or maybe it's an issue in Parrot. 18:58
18:59 kst joined
moritz_ maybe time for another realclean 18:59
19:00 sjohnson3 joined
skids rakudo: (\(1,2),\(3,4)).perl.say # .perl of any list of captures will explode 19:02
moritz_ skids: then please don't make evalbot explode in such a way
skids is that bad?
moritz_ well, it wastes resources, and evalbot isn't available to others during that time 19:03
dalek kudo: d23ef7a | moritz++ | t/spectest.data:
[t/spectest.data] three more passing test files
skids oh, I thought it was pretty much fair game for abuse, sorry.
moritz_ it's fair game for use ;-) 19:04
just like it's not safe against run()/qx and that kind of fun
skids hunts for preexisting RT
p6eval rakudo d23ef7: OUTPUT«maximum recursion depth exceeded␤in method List::list (src/gen_setting.pm:722)␤called from method Any::map (src/gen_setting.pm:34)␤called from method List::perl (src/gen_setting.pm:732)␤called from method Any::map (src/gen_setting.pm:732)␤called from method List::perl 19:06
..(src/gen_sett…
19:07 rjbs left 19:15 hanekomu_ joined 19:17 icwiener_ joined 19:22 TheMyster joined 19:24 pmurias joined 19:25 finanalyst joined
pugs_svn r26931 | moritz++ | [ext] kill Sudoku, it was wrong in several ways, and rather outdated. 19:33
r26931 | moritz++ | I'll probably redo do it on perl6-examples for rakudo
r26932 | moritz++ | [ext] some small syntax updates (and a few WTF comments) 19:36
19:37 jferrero joined
jnthn rakudo: say grep * % 2, 0..6; 19:40
p6eval rakudo d23ef7: OUTPUT«135␤»
moritz_ jnthn: btw, congratulations to your now accepted grant 19:43
TimToady rakudo: say grep * !% 2, 0..6
p6eval rakudo d23ef7: OUTPUT«Statement not terminated properly at line 1, near "!% 2, 0..6"␤in Main (src/gen_setting.pm:0)␤»
jnthn moritz_: Thanks 19:44
moritz_: Already working away at it. :-)
moritz_ TimToady: should that work? I thought ! as a prefix infix meta op was only available for operators that return Bool 19:45
jnthn TimToady: Is that classed as a meta-op?
moritz_ std: 3 !% 2
p6eval std 26932: OUTPUT«ok 00:02 35m␤»
moritz_ std: 1A2
p6eval std 26932: OUTPUT«Can't call method "cursor_fresh" on an undefined value at STD.pm line 40804.␤FAILED 00:02 35m␤»
moritz_ the shortest script that can crash STD.pm ;-)
TimToady o_O
moritz_ std: 1A 19:46
p6eval std 26932: OUTPUT«Can't call method "cursor_fresh" on an undefined value at STD.pm line 40804.␤FAILED 00:02 35m␤»
moritz_ ah, even shorter
jnthn std: A
p6eval std 26932: OUTPUT«Undeclared name:␤ A used at 1 ␤ok 00:02 35m␤»
jnthn phew :-)
std: =
p6eval std 26932: OUTPUT«Undefined␤ok 00:02 35m␤»
TimToady S03 allows !% as a special case
moritz_ ah
19:47 sjohnson3 joined
moritz_ ouch, perlcabal.org/syn/S03.html shows an encoding mess 19:47
TimToady has a BOM on the front 19:48
19:49 lichtkind joined
pugs_svn r26933 | moritz++ | [S03] maybe a newline after the BOM unconfuses the POD parser? 19:50
moritz_ so it returns a Bool? 19:52
lichtkind do i can access the internal perl objects via perl 6?
moritz_ what do you mean by "internal perl objects"? 19:53
TimToady !% returns a Bool
% doesn't, of course
moritz_ right 19:54
jnthn TimToady: So it's really just an op in its own right rather than falling out of anything else?
oh
token infix:sym<%> ( --> Multiplicative) { <sym> <?{ $<O><iffy> = 1; }> } # Allow !% operator
TimToady it can be viewed either as a metaop or not, doesn't much matter, except unless there's an LTM conflict
pugs_svn r26934 | moritz++ | [t/spec] test !% from S03 19:55
moritz_ std: 1 !!% 2
TimToady but as you can see, STD views it as a metaop
p6eval std 26934: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/dn5YqBmWYQ line 1:␤------> 1 !!% 2␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ infix_prefix_meta_operator␤ standard stopper␤ statement modifier loop␤ terminator␤FAILED
..00:02 35m␤»
jnthn *nod* 19:56
TimToady ! disallows !!
since !! usually means ??!!
moritz_ I just read it in S03, and wondered what the error message would be
skids std: 1 ?% 2 19:57
p6eval std 26934: OUTPUT«##### PARSE FAILED #####␤Obsolete use of ?: for the conditional operator; in Perl 6 please use ??!! instead at /tmp/iUY90kxwUc line 1:␤------> 1 ?% 2␤FAILED 00:02 35m␤»
skids not that I actually would use that...
19:58 dduncan joined, ilogger2 joined
moritz_ I found that the very accurate hilighting of the error position makes the error message much less important ;-) 20:02
TimToady still... 20:03
lunch & 20:04
lichtkind TimToady: is true that you can give perl 6 variables new properties vio self written roles ? 20:09
20:09 eMaX joined
lichtkind ahh 20:10
moritz_ like, traits? 20:11
or, mixins?
lichtkind moritz_: doesnt matter 20:13
moritz_ "yes"
rakudo: role A { method newmethod { say "OH {self}" } }; ("HAI" but A).newmethod 20:14
p6eval rakudo d23ef7: OUTPUT«OH HAI␤»
lichtkind moritz_: i mean traits, the things you declare with but
or is 20:15
doenst matter if run or compiletime
what i mean that variable can doting the couldnt do before
jnthn Actually, the thing that does matter about traits is that they are "compile time" :-)
lichtkind yes but i had the feeling you had to acess some internal values of var objects and how you coukld do that in a role 20:21
is ther eany example code to that? 20:22
s1n jnthn: i'm seeing warnings about /* within comments, looks like there's one ending up in perl6_ops_switch.c. that looks like it was caused by ops2c.pl 20:23
jnthn lichtkind: It's not yet implemented, there maybe are some tests somewhere...but that bit of the spec is currently up for revision. 20:24
20:24 nacho__ joined
jnthn s1n: Oddness. 20:24
s1n jnthn: even odder is with parrot r39171, it eats up all my memory and is killed :/ 20:25
err during the compile anyways
jnthn Ouch, sounds like Parrot bug.
20:25 azawawi joined
azawawi hi 20:26
moritz_: ping
jnthn s1n: Is taht while compiling the dynop? 20:27
I just looked at the file and don't see anything suspect in the commenting. :-S
azawawi is this still working in the latest rakudo - perlgeek.de/blog-en/perl-6/my-first....writeback ?
jnthn s1n: Oh, one weird thing...I missed something
s1n jnthn: if by dynop you mean the perl6_ops_*, then yess
jnthn: keep in mind i'm daring to try trunk instead of PARROT_REVISION 20:28
pugs_svn r26935 | pmurias++ | [re-smop] fixed memory leak
jnthn s1n: Yeah, very possibly my bad in the .ops file 20:29
pugs_svn r26936 | pmurias++ | [re-smop] fix leak
s1n jnthn: glad i could help :)
azawawi jnthn: is perl6 pbc 2 exe method still working in latest rakudo? 20:30
s1n jnthn: let me know if there's anything else i can help with. i never got around to testing that problem i mentioned yesterday
azawawi: it's not a real exe, but close enough to be called "fakexecutable"
pmurias ruoso: do you think i should chase down leaks or work on RoleHOW and other thing for my GSoC project? 20:31
ruoso pmurias, I think you can start on RoleHOW...
azawawi s1n: cool but it was working before and now it is not...
jnthn s1n: Let me know if d23ef7a helps clear up the warning.
s1n azawawi: you could write a bug on RT, but given parrot's inability to install still, it might be stalled
jnthn azawawi: Were you compiling a Perl 6 program down to a pbc? 20:32
ruoso pmurias, I think you will be able to go a lot forward before one of that leaks really bite you... and I hope we get to it before it bloks you...
azawawi jnthn: yeah, i was making a 'generate perl6 executable' action for Padre::Plugin::Perl6... 20:33
pmurias getting Failure correctly require not leaking memory
s1n jnthn: hmm, i'm at c6df24f (just pulled), is that a newer commit or am i up to date enough?
ruoso pmurias, what do you mean by "getting Failure"?
jnthn s1n: Hmm.
s1n: Doesn't match my push ID here, but maybe :-) 20:34
pmurias ruoso: implementing Failure
s1n jnthn: wha?? okay, lemme go see what i have then
dalek kudo: 37e6703 | jnthn++ | src/ops/perl6.ops:
Oops, mistake in the .ops file.
azawawi jnthn: it generates the executable but when you execute it; you get sial.org/pbot/36804
jnthn s1n: That one that just went by there. :-)
ruoso pmurias, ah... because it's currently segfaulting...
pmurias failures throw themself when they get garbadge collected, which never happens if they get leaked 20:35
jnthn azawawi: It looks to me as if it's somehow failing to find the dyn PMCs.
azawawi: Are you running the exe/building the exe in the same place as your Rakudo tree, out of interest? 20:36
ruoso pmurias, no... they do not throw themselves at that point
s1n jnthn: i'm at github.com/rakudo/rakudo/commit/b0e...298c6df24f
ruoso pmurias, it's the block itself that checks for unhandled exceptions in $!
s1n so sans your ops fix, i should be current
azawawi jnthn: yeah on the latest rakudo tree; i ran the commands there to double check it... 20:37
ruoso pmurias, btw... you removed the init_destr_2 test... did you add any other test to reproduce that bug?
jnthn s1n: OK, but that fix should hopefully ahve removed the warning you were seeing. :-) 20:38
pmurias At scope exit, C<$!> discards all handled exceptions from itself, then performs
a garbage-collection check for all remaining (unhandled) exceptions.
ruoso pmurias, it doesn't mean "garbage-collection" as *the* garbage collector 20:39
it's just a generic use of the term
(note that I did think what you're thinking, but TimToady told me what it means)
pmurias if so it's extremly miss-leading 20:40
s1n jnthn: i didn't pull, but reverting back to PARROT_REVISION compiles fine 20:41
pmurias ruoso: i overzealously deleted test init_destr_2
DanielC I have an idea for Perl6 Pod. Is there a mailing list I should join or should I send an email directly to Damian Conway? 20:42
moritz_ azawawi: last time I tried it worked
jnthn s1n: OK. I still had made a mistake in the perl6.ops file anyway though. :-)
moritz_ DanielC: to the list, I'd say
s1n jnthn: and i'm still seeing that "Method 'foo' not found for invocant of class ''" problem without a stacktrace
jnthn: other than the comment warning, would that cause other problems?
jnthn s1n: Aye, I didn't yet work out whether the breakage was in Parrot or Rakudo...
s1n: You're getting a build failure with latest Parrot? 20:43
s1n jnthn: yes
DanielC moritz_: perl6-users? perl6-language?
moritz_ DanielC: language
DanielC thanks
jnthn s1n: Paste?
s1n jnthn: on building the fakexecutable
jnthn (build log)
Oh
s1n jnthn: sure, give me a few minutes
jnthn: though there's nothing special 20:44
jnthn: it just runs out of memory and is killed
azawawi moritz_: this is what happened here (script+output): sial.org/pbot/36806
ruoso pmurias, btw... t/role in re-mildew loops infinitely
s1n jnthn: still want to see it?
jnthn s1n: No, I doubt it'll be revealing in this case. 20:45
s1n jnthn: lemme know if there's anything i can do to help
jnthn: i don't know how to track down either of these problems
moritz_ azawawi: ah, fails here too with latest rakudo 20:46
azawawi moritz_: then it is not a win32-only issue; cool :)
jnthn s1n: I don't see anything much in the recent Parrot change log about the pbc2exe. 20:48
(as in the timeline at trac.parrot.org/parrot/timeline)
azawawi moritz_: i added it btw in Padre::Plugin::Perl6 to generate fakexecutables...
s1n jnthn: i'm not really knowledgable about the parrot build system (maybe i will be after the PVMW :) ) 20:49
jnthn Tracking down the exception backtrace - I'm a bit unsure where to start too. I'll probably get the C debugger out and stick a breakpoint in the "throw exception from c" code.
s1n jnthn: now i do know my way around a debugger :)
jnthn Or in the .backtrace() method in Exception perhaps.
There's an ATTR thrower that is meant to be populated. Either it isn't being, or something else is adrift. 20:50
s1n: Gotta go deal with something else - be back in a bit.
s1n jnthn: sure, lemme know if you want my help when you get back 20:51
pmurias ruoso: i think having SMOP_MOLD_DEBUG as an env variable would be nice (being able to toggle it at runtime) 20:52
ruoso pmurias, that's an interesting idea... but I think it would be just to add the env var check when the compiling switch is defined 20:53
20:53 nacho__ left
azawawi jnthn: so shall i RT it then as a rakudo/parrot bug? 20:53
ruoso so we can disable it entirely if we want
pmurias yes that's sensibl
e
azawawi ruoso: what's the status on mildew? can i test it now or not? :) 20:55
ruoso azawawi, you can... on the re-mildew directory... using re-mold 20:56
re-smop
azawawi tests it
21:05 daemon joined 21:18 azawawi left
ruoso just got the news that a Perl 6 presentation at the International Free Software Forum (FISL) was accepted 21:19
moritz_ cool 21:20
ruoso it's a 5k people event 21:21
moritz_ who gives the talk?
ruoso me 21:22
moritz_ so what will you tell them? that it's a smop? ;-) 21:23
ruoso heh... 21:24
it's a more generic talk
"Perl 6 - the quest for the holy grial" ;)
*grail
moritz_ make sure that it's recorded, and then point us to the video ;-) 21:26
ruoso it will be... every talk is in FISL
but it will be in portuguese
21:26 donaldh joined
ruoso decommute & 21:27
moritz_ :)
21:28 tulcod joined
TimToady U t/spec/S32-num/log.t 21:33
U t/spec/S32-num/sqrt.t
21:33 ZuLuuuuuu joined
TimToady whoops 21:34
21:39 r0bby joined 21:41 eMaX left 21:43 donaldh left 21:44 tulcod left 21:49 payload joined 21:50 sjohnson joined 21:58 mizioumt joined
jnthn s1n: I'm quite tired and in need of sleep so not really got the energy to look at any more Rakudo bits tonight, I'm afraid. 21:59
dalek kudo: 2376c44 | jnthn++ | src/pmc/p6opaque.pmc:
Fix build on C++. Patch courtesy of NotFound++.
22:00
sjohnson jnthn: how do you feel about the Perl 6 progress overall?
22:02 mizioumt left
jnthn sjohnson: Pretty good. We're maintaining a decent pace of development. 22:03
And the community around Perl 6 seems to be growing.
Both of which are good things.
The recent Rakudo releases have all gained nicely on the test suite, and brought significant new features.
sjohnson i have found rakudo the best one so far 22:04
jnthn It has at the moment the best mix of active development and features.
IMO.
sjohnson neato 22:06
i'm excited for Perl 6 to replace Perl 5 22:07
jnthn Perl 6 is both the more interesting, and the most challenging, project I'm involved with.
skids when the goals are to get it right on principle, rather then just good enough for the task at hand, the challenge level definitely goes up sharply 22:09
sjohnson jnthn: could you say you are excited at the same time? 22:10
jnthn sjohnson: Oh, for sure.
sjohnson im so glad i found this channel as Perl 5 was lacking enough to make me consider abandoning Perl and scripting in Ruby
but then by fluke I found out about this channel
and am patiently waiting for Perl 6 to arrive in a release-form
as I have some feelings for Perl, if that makes sense 22:12
jnthn Perl 6 is certainly a fascinating language. Both on the surface, but also once you dig deeper too.
sjohnson i am happy as a lot of basic things you don't need to reply on CPAN anymore 22:13
ie, String::Strip;
with p6's trim method
skids nor any of those grammar definition things like Parse::RecDescent now that I think of it... 22:21
sjohnson what was that stuff used for? 22:22
don't recall ever having to use that stuff
skids the most common use was probably for creating parsers for application config file syntax. 22:23
sjohnson i've be doing it all by hand
maybe there was an easier way
22:24 alester joined 22:26 japhb joined 22:29 kate21de joined 22:31 kst joined
sjohnson skids: do you have a job where you use perl often? 22:34
skids only for scripts. I don't have a coding job.
sjohnson what kind of scripts? personal stuff? 22:39
skids no work stuff.
sjohnson o 22:40
skids abrij.org/~bri/hw/splitp for example 22:41
22:41 alester left
JDlugosz TimToady ^^^^ please see my short email on the language mailing list. I really want to get my concepts straight, and everybody seems to have different ideas. 23:07
23:11 japhb left
jnthn JDlugosz: fwiw, I'm with ruoso on: 23:13
%a<b> := 1;
is an operation in the hash itself, not in that specific cell of the
hash.
JDlugosz You mean the <b> is ignored?
jnthn No, just in so far as you have to actually know both the hash and which storage cell in the bash to do the binding.
JDlugosz And the Int doesn't do Associative. 23:14
jnthn Sure, but you're binding to a single storage location in the hash.
JDlugosz what binding?
jnthn Huh?
JDlugosz Binding applies to "names", e.g. things in the symbol table.
jnthn The one I wrote abobe.
*above
JDlugosz I mean "what does binding have to do with that?" 23:15
jnthn I don't see the issue.
skids any := is a binding
jnthn I know.
JDlugosz Symbol table names are "bound".
jnthn JDlugosz: Contrast the meaning with assignment.
JDlugosz The cell in the hash is not a container. 23:16
jnthn my %a; my $x = 42; %a<b> = $x; $x = 43; say %a<b>; # 42
my %a; my $x = 42; %a<b> := $x; $x = 43; say %a<b>; # 43
Oh. That's where you're going wrong.
23:16 sri_kraih joined
jnthn The cell in the has *is* a container. 23:16
Same as the cell in $x[42] for example. 23:17
(But if you were assuming not, then your confusion all makes sense to me now.)
skids
.oO(it's at the very least an autobox)
JDlugosz Er... the other containers (Array and Hash) are made up of a bunch of Item containers, rather than being something on the same level as one? My understanding is that an Item Container is like an array with one element. 23:18
It has one "slot" inside it, that may be changed via assignment.
The hash has lots of slots. They are inherent in the hash, not separable.
jnthn OK, but in %a<x> := $x; you are talking about one of those slots. 23:19
JDlugosz But that slot can't become a different kind of container. It is a small part of a container having many slots.
23:19 japhb joined
jnthn I'm not quite sure I follow. 23:20
%a<x> = [1,2,3] works and is example enough that the slot can hold another container.
23:21 ruoso joined
JDlugosz let me look at your example when not on one line: 23:21
my %a;
my $x = 42;
%a<b> = $x; # or := in the other example
$x = 43;
say %a<b>;
Ah, so you are using := there to mean %a<b> = \($x);
jnthn I hadn't ever seen it like that...
JDlugosz I agree with "a slot can hold another container".
ruoso hah... you're here 23:22
pugs: my %a; %a<b> := 1; %a<b> = 2; say %a.perl;
p6eval pugs: OUTPUT«*** Can't modify constant item: VInt 1␤ at /tmp/j9Tp5bvvRN line 1, column 20-29␤»
ruoso rakudo: my %a; %a<b> := 1; %a<b> = 2; say %a.perl;
p6eval rakudo 2376c4: OUTPUT«rtype not set␤in Main (src/gen_setting.pm:3166)␤»
JDlugosz Ah.... so IF a slot in anything holds another container, assinment normally drops through and it's invisiable. But := will let you replace that at a higher level.
OK.
That's not described in the Synopses, but I understand it. 23:23
jnthn I just see %a<b> := $x as meaning "take the address of $x and stick it in the slot %a<b> so $x and %a<b> both refer to the same thing"
At a memory level.
The only hard bit is that %a<b> in "binding context" needs to hand back some kind of proxy that knows both the container and the slot.
JDlugosz jnthn I see how that would work. Again, not described in S02, S03, or S06.
jnthn erm, the index
JDlugosz Clearly the syn are not the "whole story" by a long shot. 23:24
skids .o0(which is sure going to be fun to implement on a packed typed array)
ruoso jnthn, in SMOP, that is implemented with a "bvalue"
23:24 ZuLuuuuuu left
jnthn ruoso: How do you determine when to hand back the bvalue? Or do you do so always from postcircumfix:<{ }>? 23:24
ruoso jnthn, it always return a bvalue for now... 23:25
jnthn In Rakudo we've discussed a :bvalue adverb.
JDlugosz Diagrams would really help.
What is a bvalue?
jnthn Since it's a) not the common case and b) more expensive for us to make one when we don't need one.
ruoso jnthn, basically I see removing the bvalue being an optimization
skids ruoso: JFYI the non-implementation TODO RT for that feature under rakudo is #61412
23:26 nsh_ joined
jnthn ruoso: IIRC there was discussion that you could always syntacticly know when you'd need a bvalue and thus it'll be an easy optimization. 23:26
ruoso: OTOH it may not be an important one for you because of differences in smop's architecture etc. 23:27
ruoso jnthn, probably... I just didn't try doing any optimizatino yet
jnthn ruoso: We either, we just went for implementing the common case first, which was assignment. ;-)
ruoso JDlugosz, a bvalue is a proxy object that points to the origin of that value
jnthn Nicely put.
ruoso JDlugosz, %a<b> returns a bvalue that says "I'm from %a, trying to access key "b" 23:28
and in SMOP, it doesn't even do any lookup at that point
it's "lazy lookup"
then later, if you try to use it in any context, it should delegate that to the actual value 23:29
but if you try to bind something to it
it can go back to the original value and replace the container
JDlugosz ❝I just see %a<b> := $x as meaning "take the address of $x and stick it in the slot %a<b> so $x and %a<b> both refer to the same thing"❞
I can understand that as being a synonym for %x<b> = \($x); , but that might give a different morphology from simply putting the item container that $x is bound to in the hash's slot. The normal fall-through semantics take over so the existance of an item container there (or a capture there) is invisible for the most part. But you get the aliasing.
ruoso JDlugosz, it is not a synonym... because %x<b> = \($x) is making an assignment to an item 23:30
JDlugosz bvalue is a proxy for a lazy lookup (but below the level of Perl 6 language semantics). OK.
ruoso which causes it to be used in item context
therefore making the capture useless
JDlugosz something like that is implied for autovivication (or not) depending on use.
jnthn Aye, bvalue doesn't (and likely shouldn't) appear in the spec.
23:30 kate21de1 joined
jnthn AFAICT. 23:30
ruoso although for someone implementing a Hash that can be target to binding 23:31
it needs to be
JDlugosz ruoso: right, the item (one slot in the hash) is given the Capture.
jnthn Oh, hmm
That's a good point.
JDlugosz you can't do anything with the slot other than store something in it.
ruoso probably in S32
jnthn, but I'm not sure it's really something that needs to be spe 23:32
*spec
because it's the natural way of implementing such thing in Perl 6
JDlugosz Oh, using the explicit \ prevents the one-item capture from popping open again in item context.
jnthn ruoso: aye, we already have a category of "things that you'll just have to deal with as per-implementation"
23:32 kst left
ruoso jnthn, hmmm... 23:33
23:33 kst joined
JDlugosz "bvalue should not appear in the spec" I quit agree. But the promises made or not made about order of evaluation, side effects, and optimization need to be carfully considered so "something like bvalues" will be a valid choice. Without naming it explicitly, that is. 23:33
ruoso jnthn, if you implement an object that behaves like the bvalue, every implementation should act accordingly
skids maybe a separate Synopsis for heisen-thingies is in order, could take the junction detail out of crowded S02
ruoso jnthn, there's nothing special in the bvalue 23:34
except that we might optimize it away in a lot of places
but that will require an object that knows how to behave in the "optimized scenario"
wayland76 skids: I think there's some junction stuff in S32
And I agree they belong there
Oh, wait, maybe it's in the S29 stuff that I didn't move to S32 23:35
ruoso I mean... I don't see anything that stops you from writing a Associative object that implements the bvalue concept
independent of the runtime
jnthn ruoso: Sure, me either.
ruoso: It's just that the non-bvalue case falls out very easily.
(no proxy required)
ruoso the issue here is how should BIND behave
jnthn Like any other nameserver.
oh, wait...
ruoso and maybe *that* should be spec
wayland76 I don't want bind to behave like ldapdns :) 23:36
JDlugosz It just inlines. In the case where it always takes one path (simple item fetch), the rest of it goes away. 23:37
ruoso jnthn, we might even have a "Bindable" role
which implements BIND 23:38
then if you want your hash to be bindable, you just return a Bindable object at postcircumfix:<{ }>
ruoso bbl 23:39
jnthn ruoso: That would work.
JDlugosz In C++, I've implemented a complex nested data structure using operator[] that returns a delayed action proxy that may be assigned to or converted to the value. It has to handle chaining subscripts to get to the final use, and then assignment creates all the levels from the beginning.
sjohnson Q about p6: Since most systems by default have Perl 5, can anyone predict which default "Perl 6" they'll have in the future?
JDlugosz Depends on whoever integrates it with the Debian distro. 23:40
wayland76 I'd say the answer is "no". I'd presume Debian/Redhat would handle it via something like /etc/alternatives 23:41
ruoso JDlugosz, that's precisely how the bvalue works
and how Perl 6 autovivification of arrays and hashes work 23:42
TimToady, what do you think about a Bindable role? (look above)
JDlugosz In Perl 6, with the operators for [] and {} something you can grab and examine, the idea that it returns a binding is possibly more explicit, not only hidden behind the scenes. 23:43
ruoso it's a gray area
JDlugosz And someone might want to make his own collections with the standard behavior, so why not let him reuse that class?
ruoso not really explicit...
but not magical
JDlugosz Also, lvalue returns.
ruoso JDlugosz, surprisingly... lvalue is easy in Perl 6 today 23:44
JDlugosz The synopses added an example of a "proxy" class example that delays read/write use. Something like that should certainly be in the standard library.
ruoso non-lvalue is an issue yet
because of the way capture works
actually... as it currently stands... all returns have an implicit "is ref" 23:46
we still don't know how to coerce a capture to the expected semantics of the routine
23:47 kate21de left
ruoso (maybe using a proxy object that limits the access to the original capture) 23:47
ruoso hides 23:48
sjohnson anyone know a CPAN / std lib way to shuffle an array in Perl 5?
ruoso sjohnson, List::Util 23:50
ruoso bbl
23:53 ElectricHeavyLan joined
sjohnson ruoso: ty 23:54
pugs_svn r26937 | jdlugosz++ | [s04] put in C<...> tags, fix some <...> that have the C missing, typos, true=>True, etc. Improve one turn-of-the-phrase as discussed with Larry in July. 23:55
23:58 kate21de1 left
jnthn -> sleep 23:59