pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | <stevan> Moose... it's the new Camel ":P | .pmc == PPI source filters!
Set by Alias_ on 16 March 2006.
buu Oh god, the reset function 00:17
00:26 justathe1ry joined 00:38 axarob joined 00:45 justathe1ry is now known as justatheory 01:07 Khisanth joined 01:28 sanu790 joined
sanu790 hi all 01:30
01:30 jserv-- joined
sanu790 hello 01:30
is anyone alive in this server
jsiracusa I LIVE!
TimToady nobody here but us chickens...
01:31 jsiracusa is now known as siracusa
sanu790 lol 01:31
how is it going chicken
TimToady everything is all clucked up.
sanu790 what? 01:32
siracusa why do you encourage him
sanu790 what does perl6 mean? 01:33
TimToady perl5++
wolverian that doesn't bode well 01:34
TimToady well, actually, it's perl7--
sanu790 lol
wolverian now that's swell. did you see that Paul Graham mentioned perl6 in a recent (at least I think it's recent) interview? of course, all he said about it was that "it's even more like lisp [than ruby]". I don't think he ever says anything else about any language. 01:35
(I mean, he always just compares them to lisp. I did not mean that he says that every language is more like lisp than ruby.) 01:36
sanu790 lol
mugwump sub postfix:<++>(Str where rx:/perl5/) { "perl7"-- } 01:37
sanu790 so what do you ppls discuss here 01:38
TimToady perl 6 design and development
we specifically try to avoid discussing perl 5 problems here. 01:39
wolverian mugwump, that should be a multi, probably.
sanu790 which country are you from
mugwump yeah, I figured that after I wrote it. It also does the wrong thing with "fooperl5ish"++
TimToady chicken's aint from turkey
wolverian I guess 'where "perl5"' might work.
sanu790 it is in europe and asia right?
siracusa see what you've started
TimToady s/'s ain/s ain'/ 01:40
sanu790 I have no idea about perl5
TimToady would you like to help with perl 6?
sanu790 what the hell is that
bye 01:41
I don't get this room
cya later
01:41 sanu790 left
mugwump gotta love irc 01:41
TimToady bock bock 01:42
wolverian good seeds today
TimToady definitely up to scratch
siracusa just think of how confused he would have been had you started to explain Perl 6 to him
(or her)
01:43 particle_ is now known as chicken, chicken is now known as chicken_, chicken_ is now known as particle_
wolverian chicken particles, mmm 01:44
I guess I'll have to take a course on shakespeare. this stuff is just too thick for me without someone forcing me to read it. 01:45
TimToady chicken nuggets, as you like it... 01:47
wolverian they had those back then? neat.
01:47 pjcj joined
TimToady what did you think "a pound of flesh" was? 01:47
buu TimToady: Can I have a string prepend operator? 01:49
wolverian a pound of flesh.
PerlJam buu: All is fair if you predeclare
particle_ wolverian: it's all about metaphor.
buu PerlJam: Hrm..
TimToady yes, we'll call it "reset"...
buu PerlJam: But I want it to be sexy and optimized
TimToady: Reset eh?
TimToady sorry, bad joke...
wolverian buu, read the backbuffer ..
particle_ reset 'my', 'interpreter';
buu wolverian: No I get it. 01:50
wassercrats was in here.
particle_ ?eval reset
buu eval: reset()
p5evalbot buu: Return: 1
evalbot_10082 Error: No such sub: "&reset"
buu heh
wolverian particle_, I'm not very comfortable with metaphors. I feel excluded around them.
buu I thought that got taken out of 5.8 =[
01:50 Quell joined
buu What is string append now anyway? 01:50
particle_ ~ 01:51
wolverian ?eval my $foo = "foo"; $foo ~= " bar";
buu ~= you mean?
evalbot_10082 \"foo bar"
particle_ yep
buu Heh, we could almost do _= as a prepend
wolverian finally there's a parser that's slower than me.
TimToady so _ would mean reverse the args and append? :) 01:52
particle_ ~= also looks like assign in binary context
01:52 Quell joined
buu TimToady: Heh, not quite 01:52
$x_=$y =:= "$y$x"
PerlJam buu: isn't that what he said? 01:53
buu I guess
wolverian flip infix:<~>
buu But 'reverse the args' sounds like it would modify $y, not $x
particle_ how about #= :)
wolverian $x.prepend($y)
so, uh, is there a flip()? :) 01:54
(haskellish) 01:55
theorbtwo ($x, $y) = ($y, $x) still works, AFAIK.
PerlJam buu: how about just $x = "$y$x" ? That looks like a good prepend operator. 01:56
wolverian &sub.flip(@foo) =:= &sub(@foo.reverse)
01:56 Quell joined
particle_ flip @off; 01:57
01:57 Quell joined
wolverian sleep 5`hours; 01:59
buu PerlJam: But it is ugly 02:00
PerlJam: And I dislike repeating the variable 02:01
02:14 justatheory joined 02:26 f0rth joined 02:27 weinig|away is now known as weinig 02:31 KingDillyDilly joined
KingDillyDilly Best information on the future of the reset function that I've found: groups.google.com/group/perl.perl6....009e886e36 02:32
Which sounds like it would be temporary in Perl 6 and go away once it's gone from Perl 5. 02:36
nothingmuch remember the translator 02:37
it's a compatibility library
on top of the Perl 6 standard library
KingDillyDilly So it would work with long-ago deprecated versions of Perl 5? Anyway, it's not an important function even to me. 02:39
02:43 weinig is now known as weinig|sleep
KingDillyDilly I'm glad I do CGI so I can install whatever Perl I want. I remember I was in a bookstore trying to decide what programming language to learn. If there had been a Perl 5 and Perl 6 book, I'd pick up the Perl 6 book, read that Perl 5 isn't going anywhere, be confused, and probably buy Perl 6. I think most people would do that. 02:43
But now I feel I can stick with Perl 5 because my scripts won't run on other people's Perl. 02:44
02:54 q[uri]_ joined
KingDillyDilly ...but at the same time, I want to be current and have skills that people need, so I'll probably be deciding to switch from Perl 5. 02:59
03:02 Quell joined
xinming KingDillyDilly: that's nonsense... No matter what perl 6 promised.... It still has a long way to go. And will you wait for 5 year again for perl 6? Maybe, there might be a candiate release this year.... Maybe next... and maybe the next year after next year... will you wait? Perl 5 is there, and works fine most times. Perl 6, at least, there is a long way to become production use... 03:04
KingDillyDilly Perl 5 works absolutely fine for me right now, but it's possible in two years Perl 6 or Python or something will be a much more desired language to know. 03:07
arcady ruby seems like the Cool New Thing at the moment 03:08
KingDillyDilly So I'm not sure about starting any new projects with Perl 5, unless they're not really big.
My web host doesn't support Ruby, I don't think. 03:09
arcady you have to work with what you have, right now. because there will always be something better just over the horizon
mugwump I don't feel so bad writing Perl 5, so long as I'm using Moose.pm
03:09 q[uri]__ joined 03:10 Quell joined 03:13 Quell joined 03:14 saorge_ joined
KingDillyDilly I've been looking for predictions. I found freshmeat.net/articles/view/1339 but it's kind of old and very long. Maybe I'll look for something about Python's prospects for the future. But I'll be sticking with Perl 5 for now. I have no major projects planned. Just further developing current Perl 5 scripts. 03:15
03:17 mako132_ joined
KingDillyDilly doesn't consider that an anti-Perl 6 webpage. There are comments at the bottom that disagree with the essay. 03:19
spinclad whatever
audreyt KingDillyDilly: hey 03:20
rindolf (Shlomi Fish)
KingDillyDilly The author's bio at the bottom of the essay isn't very impressive.
audreyt that author is now a Pugs committer
and has contributed several tests 03:21
as well as spotting corner cases in the language
03:21 Quell joined
audreyt and has written examples/qotw/008e/graham.p6 03:21
etc
KingDillyDilly Look at this...I try being nice and put down the author of an anti-Perl 6 article, and it backfires. 03:22
audreyt so, that article is probably 1)outdated 2)not very relevant
before 2005, the CPAN community isn't in general very happy about Perl 6 03:23
me included
I wouldn't say it's "happy" now, but we've been slowly gaining goodwill.
03:23 Quell joined, stevan__ joined
KingDillyDilly All I need is good documentation and the ability to somehow do what I want and that's enough. (basically) 03:34
Tempting modules that I can't figure out ot won't run in Windows because they're not pure perl are --. 03:35
audreyt re the win32 thing 03:37
which module are you talking about? :)
# www.cpan.org/modules/by-authors/id/...-5.8.7.exe 03:38
this small installer sets up everything you need to build non-pureperl modules
KingDillyDilly Maybe it was Perlcc. I ended up using TinyPerl because it was the only free executable maker I could figure out, but I don't trust it's author. It was two or three years ago. Thanks for the link. 03:41
I know Perlcc sucks anyway. 03:42
audreyt I know someone who started a free executable maker. 03:45
search.cpan.org/dist/PAR/
(my previous project before Pugs)
03:45 FurnaceBoy_ joined
audreyt it's... fairly widely used, I think 03:45
KingDillyDilly Me too. The author of TinyPerl inexplicably plugged the guy's really bad executable maker. 03:46
Oh...PAR...yeah...been there, tried that. I think that's what I couldn't understand. 03:47
audreyt !
pp your_script_here.pl
that's all :p
KingDillyDilly Basically tried everything that was free 2-3 years ago.
I won't pick apart the docs. Don't want to review again them especially since I don't need them. I'll bookmark this chat page. 03:49
audreyt # search.cpan.org/~smueller/PAR/script/pp 03:50
I'm sorry then. I hope our documentation for PAR has improved in those 2-3 years
KingDillyDilly Get back to Perl 6 talk before another flame war starts.
audreyt sure :)
KingDillyDilly I vaguely remember not even being sure Par was to be used as a regular module. It seemed really weird to me. But that's no reflection on you because I didn't know anything. 03:54
spinclad sits on hands 03:55
KingDillyDilly Well, as long as nobody's speaking, I couldn't help looking at the docs for PAR. I bet two years ago I was looking for a way to specify an output file so I know where the executable would be saved. Still couldn't find a way now, but I didn't really look hard. 04:04
Wouldn't have known what "# Pack 'hello' into executable 'a.out'" means. Still don't 04:05
audreyt er. 04:10
pp -o out hello.pl
that's, like, that next line.
% pp hello # Pack 'hello' into executable 'a.out'
% pp -o hello hello.pl # Pack 'hello.pl' into executable 'hello'
also, the line above reads 04:11
Note: When running on Microsoft Windows, the a.out below will be replaced by a.exe instead.
spinclad: hi!
FurnaceBoy_ he can't answer right now
audreyt is releasing Locale::Maketext::{Lexicon,Simple}
let's see if the CPAN toolchain can recognize the MIT license in META.yml... 04:12
KingDillyDilly Well, I don't really know what was going through my mind then, but maybe "hellp" didn't look like a variable and didn't look like code and I didn't know what it was. 04:14
s/hellp/hello/
The comment makes sense now. :-/ 04:17
audreyt I'll fix the extensions
thanks for the feedback 04:18
KingDillyDilly Would have helped if "hello" was "hello.pl" I guess.
audreyt how would you like to be credited in AUTHORS?
(yup, going to make that change)
KingDillyDilly As "Wassercrats...the man who terrorized PerlMonks.
But, no, don't credit me. 04:19
audreyt ok... as you wish :) 04:21
done 04:22
thanks!
KingDillyDilly Always glad to complain. :) 04:23
04:23 khisanth_ joined
audreyt I think clkao will absolutely love you ;) 04:25
KingDillyDilly Well, my work is done here.
audreyt (it's known that audrey projects, such as PAR/Pugs, is primarily motivated by appreciation, while clkao's projects is motivated by complaints)
KingDillyDilly Oh. I'll seek out more of clkao's work then. 04:26
04:26 KingDillyDilly left
svnbot6 r10095 | spinclad++ | - first tweaks to optable.h 04:30
audreyt looks forward seeing KDD on #svk 04:32
spinclad audreyt: hey
sorry, wasn't attending the trollfest 04:33
FurnaceBoy_ he'd be a hit on #svn too
they have ... ways of dealing with the type
spinclad audreyt: i've seen what judy's about, and ci'd some minimal non-fixes to optable.h 04:36
i think my next steps are to look over patrick's code. 04:38
audreyt yup
svn.perl.org/parrot/branches/pge-p...PTable.pir
spinclad on the whole, i expect to push for pushing just the very core into C... but no concrete proposals yet 04:39
audreyt OPTable is 519 lines PIR
which is likely less than that in C 04:40
spinclad oh, right, not the whole of PGE. heh.
mugwump just think of all the extra SPEEEEEEEED you'd get from writing it in C
04:40 q[uri] joined
mugwump when are you rewriting pugs in C, audreyt ? 04:40
FurnaceBoy_ ducks
mugwump :) 04:41
spinclad speed in writing it, yes?
FurnaceBoy_ lies prostrate
mugwump nonono, "doing it right" takes longer you see. but you get a "real" application at the end
audreyt mugwump: it makes sense to put the hotspot bottleneck code in C
also, maximizes sharing between pir/p5/hs 04:42
spinclad and one hopes the glue code won't overwhelm the content
audreyt certainly FFI and XS is fast enough 04:43
and Parrot NCI should be fine as well
if it's not fine, just wrap it in a .pmc
and vtable would be fine.
I think it also makes sense to have default "ws" callbacks 04:44
that parses perl6 comments
but that's for future
for now static loop would do very well :)
spinclad FFI, XS, NCI: all the best tools. my resume will be unbeatable. 04:45
audreyt :D
audreyt finally realized KDD = Wasssercrats 04:52
(and read the backlog)
why is it that I never got the chance to participate in a trollfest? 04:53
I'd prefer them over licensefests :)
audreyt goes back hacking parsec into pieces, hopefully this is the last batch
FurnaceBoy_ oh, there'll be no shortage of future opportunities, I fear 04:54
spinclad apropos of nothing, do you think we could get a couple of ops bits in here? they could come in handy now and then... 04:55
audreyt I believe /ignore over /op... 04:56
and freenode has realadmins
for really noncommunicable destructive behaviours
so... maybe not :) 04:57
audreyt was almost kicked out of #perl by lathos the first time she got there
(so I'm quite wary of ophood)
04:58 LumberCartel joined
spinclad yeah, the tension over using ophood wisely (or at all) just adds to the tension over marginal characters 05:00
and being marginal in responding to them 05:01
audreyt yeah, so (as you may have noticed) I'd like to unraise this tension :) 05:02
05:02 pdcawley joined
spinclad i have noticed, and that you do so better than me 05:04
audreyt maybe it's because of the estrogens... 05:05
FurnaceBoy_ wonders where he can get some of em
audreyt try not to take them without doctor supervision... 05:06
...but if you really want, there's plenty of online ordering outlets.
FurnaceBoy_ what, in the room?
:)
audreyt lol
LumberCartel You should advocate online ordering outlets that were written with Perl. 05:07
audreyt but how do I really know they are written with Perl? 05:09
spinclad [oestrogens] could be... i do know that when my anger buttons get pushed, i can direct some of the energy usefully, but a lot is still directed towards the other person.
LumberCartel Look for Camel tracks.
mugwump that everthatsdfasdfkjhadsfasdfasdf 05:10
bah
spinclad .oO{example?} 05:11
05:12 KingDillyDilly joined
spinclad .oO{example} 05:12
05:13 stevan_ joined
KingDillyDilly FurnaceBoy: the type who does what? I though you didn't remember anything. 05:15
spinclad ? 05:16
KingDillyDilly When I said "All I need is good documentation and the ability to somehow do what I want and that's enough. (basically)" I was thinking of FurnaceBoy, spinclad, and a few others, the likes of which I don't want in the community. 05:17
When I said "basically" 05:18
audreyt KingDillyDilly: I understand. I agree good docs is a must - the docs/Perl6/Overview/ tree can be improved
and docs/Perl6/Tutorial/ and API/ is missing
KingDillyDilly: if you have some time to look over the overview tree: 05:19
svn.openfoundry.org/pugs/docs/Perl6/Overview/
before we upload it to CPAN
KingDillyDilly Ok, ok...
audreyt and commit improvements to them
I'd be very happy
if you don't yet have a commit bit (the username/passwd to check into pugs repository), tell me your email address and I'll send you one. 05:20
LumberCartel I'm looking forward to getting into Perl6, and especially anticipating mod_perl6. 05:23
KingDillyDilly Yeah, well, get back to your camel hunt. Don't want a commit bit.
05:23 KingDillyDilly left
audreyt oh well :) 05:23
it worked better with rindolf...
LumberCartel Those overview docs are the first I've seen of Perl6, and so far the File stuff looks better.
audreyt LumberCartel: cool. mod_parrot supports pugs bindings for some time now, but we don't yet have a ModPerl::* module tree 05:24
LumberCartel Yikes! Built-in functions are empty for now? I would love to offer to help, but I've not looked into Perl6 at all.
audreyt the more near-term way would be compiling perl 6 to perl5
and use mod_perl
LumberCartel Heheh.
audreyt that's okay, 14 months ago I know nothing about perl6 as well :) 05:25
LumberCartel I use mod_perl heavily now.
audreyt for builtin functions there is
svn.openfoundry.org/pugs/docs/Perl6...ctions.pod
but it's heavily disorganized
should be split into per-class bits and put into API
LumberCartel Similar to Perl5's built-in functions list? 05:26
audreyt yeah, except perl 6's objects sometimes have methods that is not exposed as functions
like @array.elems 05:27
you can still write elems(@array)
but elems(1,2,3,4,5) wouldn't work
as it's really a method call on the array, not a general global function
LumberCartel So the requirements for the documentation will require more sophistication then.
audreyt indeed
LumberCartel What about documenting them separately?
Sort of how it's done with Java?
audreyt cf. www.ruby-doc.org/core/classes/Array.html 05:28
I like that style a lot
and that's what I think the docs/Perl6/API/Array.pod should contain
LumberCartel That's sort of what I meant.
audreyt nod
the size of perlfunc.pod is already a problem with perl5
and it's going to be worse if we don't refactor out... 05:29
so, an easy first-step task is to split Functions.pod above
by class boundaries
LumberCartel Perhaps it's time to start using subdirectories to split the files apart.
audreyt and commit them into separate .pod using docs/ tree
docs/Perl6/API/
I mean
would you be interested in doing that? :)
LumberCartel I don't see a problem with deeper directory structures, especially since most Operating Systems these days can handle very deep trees.
I would be... 05:30
audreyt cool! your email?
I'll send you a commit bit :)
LumberCartel ...once I've had a chance to learn some more about Perl6.
audreyt aww
LumberCartel I'm going to create a special eMail for Perl6 stuff, I'll be right back...
audreyt k 05:31
TimToady seems fine to classify even MMD functions by first arg...
LumberCartel I need a functioning Perl6 interpreter to experiment with. 05:32
arcady I think pugs is pretty functioning 05:33
then again, my test of functioning is if it do 2 + 2
LumberCartel I'm not expecting production quality, just something to play around with. 05:34
arcady: What's the matter, 1 + 1 isn't good enough for you? ;-)
audreyt LumberCartel: you can check out pugs with
svn co svn.openfoundry.org/pugs 05:35
cd pugs ; perl Makefile.PL ; make
(wait a while, say 15 minutes)
and then you'll have a ./pugs to play with
("make install" should also work)
LumberCartel I can wait, that's no problem. 05:36
audreyt waiting for the GHC compiler, not for humans :)
so, what's your email?
TimToady: I think for MMD that biases toward the first arg, like push(), that's fine 05:37
to classify it under Array.pod
otherwise probably makes sense to list it under the Role that mandates the interface
TimToady SMD is just slightly more biased. )
audreyt like the comparisons
TimToady :)
audreyt sure, but infix:<+> doesn't not bias toward the first arg :)
TimToady cross refs are fine...
audreyt yay 05:38
TimToady but people don't know how to do MMD lookups in an index yet... 05:39
spinclad if it's clear which arg to index it under, i could see putting the main doc for a function as close to the root as applies, with entries on classes/roles that add something notable
audreyt right. 05:40
agreed
arcady though cross references are good 05:41
one of the things that annoys me in ruby's docs is that I know what methods, say, Array has 05:42
but then have to figure out which of them come from mixins
to actually look up the docs for them
LumberCartel Sorry audreyt, I had something urgent to deal with. Anyway, my eMail address is: [email@hidden.address] 05:43
audreyt sent. welcome aboard!
LumberCartel Thanks!
spinclad yay!
audreyt please test your commit to svn.openfoundry.org/pugs/ by adding yourself to AUTHORS
LumberCartel And there it is...
audreyt I need to run to $job
be back in an hour or so 05:44
LumberCartel Thanks Audrey...
audreyt thank _you_ :)
&
05:44 Quell joined
LumberCartel Oh, with regards to which sections to document functions in, what's wrong with documenting the same in multiple places? 05:44
With some sort of an alias?
audreyt LumberCartel: if the doc changes we'dneed to change many places? 05:45
better to use L<> for now
LumberCartel This way if someone's looking for a function that fits into two categories, they'll be able to find it faster no matter which category they look into?
audreyt until ingy & dconway implements =include
LumberCartel That's why I'm mentioning aliases.
audreyt sure, then
TimToady =does is more like it...
audreyt that's the way it should be
=does then.
LumberCartel Have one set for the actual documentation, and multiple things can reference it.
TimToady can de-genericize the role's doc while it's at it. 05:46
LumberCartel Ah, but that will require a lot of changes on the client side where a server or scripting isn't in effect.
TimToady as long as the derived text is marked well, it can be dealt with.
LumberCartel This will obviously require careful planning. 05:47
Am I correct to assume that the documentation hasn't really be considered very deeply yet?
audreyt it would require swarm tactics and nonstop refactoring :)
LumberCartel: that is correct.
LumberCartel So we sort of have an empty slate to work with in the context of organization. 05:48
audreyt btw, if I'm not around to hand out commit bits, people are more than welcome to rt.openfoundry.org
and nvite people using the UI in rt.openfoundry.org/Foundry/Project/...?Queue=270
LumberCartel: yes. Skud did some initial sketch
see docs/Perl6/README and docs/Perl6/Doc.pod 05:49
LumberCartel My real name is Randolf Richardson.
audreyt but please feel free to add or change the README
gotcha.
LumberCartel I'm going to make a concerted effort to understand the updating procedures first because others will obviously be making contributions too.
audreyt cool
TimToady this whole thing is predicated on plunging ahead fearlessly. 05:50
LumberCartel Is there a system like CVS that you're using now? I'm not advocating CVS.
audreyt yes, it's called Subversion
LumberCartel Larry Wall style, right?
audreyt svn co svn.openfoundry.org/
well, consider that TimToady _is_ Larry Wall...
not very surprising :)
svn co svn.openfoundry.org/pugs/
sorry, that line above is the command to use
spinclad our style is to commit early and often, and merge on collisions 05:51
audreyt but really, gotta run. see you in a bit &
LumberCartel Okay. I haven't used any of those versioning systems so far, so this will be a learning curve for me. Oh well, it's about time I dived into the 21st century I guess. =)
Thanks a lot.
I'll see you around.
gaal oops, audreyt, I keep missing you 05:52
TimToady though all things considered, if you have a choice between plunging ahead fearlessly stupidly like Larry Wall, or plunging ahead fearlessly cleverly like Audrey Tang, I know which to pick... :)
gaal morning all :)
spinclad (just like highway traffic)
audreyt gaal: I miss you too, but I really gotta run :)
&
gaal bye
LumberCartel audreyt: Zai Jian!
afk 05:53
Good night everyone. Happy tree felling! 05:55
spinclad sweet dreams
05:59 pdcawley joined
gaal there was a question floated here a while ago, I don't think I saw the answer to. say I have a few multis with the same name, how do I bind something to one of them? 06:02
and, can I .wrap one variant? 06:03
and, do we in fact call them variants?
ugh, that's three questions.
spinclad good questions though 06:04
06:04 Cryptic_K joined
gaal spinclad: the first one was yours, wasn't it? 06:04
audreyt use variant selectors 06:07
multi f (Int $x) {...}
multi f (Str $x) { ... }
think &f as a passthru proto
&f:(Int) is a variant selector 06:08
shorthand for &f.variant(Int)
spinclad gaal: don't think so, maybe i've forgotten
audreyt just like &f\(3) is &f.assuming(3)
svnbot6 r10096 | audreyt++ | * Parser.Operator: -e -w etc should be under "named" not
r10096 | audreyt++ | "symbolic" prec level.
audreyt each selected variant is in itself another Sub object
(or Method object)
which are mutable
so you can indeed .wrap them.
you can also .wrap the toplevel &f if you want.
end of explanation
(and yes I'm still primping ;)) 06:09
TimToady :)
I presume we can wrap something that's partially selected...
audreyt sure... but then the MMD engine has to consider those wraps separately
TimToady sort of a .assuming on the dispatch process
audreyt yup 06:10
that's fine w/ me
the ordering though
is not guaranteed beyond the usual LTR positionals
gaal does the wrapper have to have the same proto as the wrapee?
audreyt (because &f\(y=>3) can trigger a variant)
gaal: a compatible one, I think, as in subtype-of 06:11
as in "all that binds here must still bind here"
gaal and, once wrapped, isn't a variant guaranteed inaccessible except of through the wrap?
audreyt the wrap is modifying a mutable doubly-linked list
gaal so MMD must be wrap-blind
audreyt so to the MMD it's as if the variant havn't chanced
the question is whether you can wrap the subset selected 06:12
which means a separate non-blind process
and a more elaborate data structure
but I think if we spec so that a wrapped subset-selection just distribute back to its concrete members
gaal hmm, yes, which may need to introduce more variants no? or possibly change mmd selection
audreyt i.e. &f.wrap is really .wrap (recursively) to all its variants 06:13
then that works transparently
TimToady until you add a new one...
audreyt and is I think easier to teach people.
spinclad can we unwrap (and can we unwrap one of several wraps)?
audreyt TimToady: yes, but the new one should arguably not be affected...
TimToady: basically I'd like to distinguish &f.wrap with &f:(Something).wrap
TimToady depends how AOPish you're thinking of it...
audreyt the first changes the toplevel and affects newly introduced 06:14
but the later is really a shallow set
it can't (easily) have identity
but if you think full wupport for that is needed
TimToady it's more like a rule-defined set rather than enumerated, but we can leave it go for now.
audreyt I can certainly figure out a data structure that supports it :)
*nod*
whew 06:15
gaal sub cristmas (Code &f) { 1 while &f.=unwrap != &f }
06:15 PseudoPlacebo joined
audreyt is the opposite of === =!=? ;) 06:15
gaal yeah and with an h somewhere up there too 06:16
and a more binding form of .= I suppose?
spinclad but &f.=anything == &f always
audreyt ===, please :)
@a.=push; # not == @a anymore 06:17
I mean .=push(1)
spinclad or else unspecified as to order of eval
audreyt it's not sure how code numifies, anyway.
probably an error, I hope, though arity makes some limited sense.
or maybe just .id. 06:18
(the perl5 way)
TimToady Obviously, it should return its Godel number or some such...
audreyt that's entirely too obvious... 06:19
spinclad @a.=push(1) # still == the new @a
audreyt .perl.as(buf); # Godel number, yay
TimToady that's why I said "or some such", just to throw you off...
audreyt spinclad: oh sure
gaal audreyt: modulo '...' 06:20
audreyt gaal: Illegal modulus undefined
gaal .perl:recurse_limit{undef}.as:type<buf>:filter<bz2> 06:22
or something.
audreyt I prefer something :)
&
06:24 Quell joined 06:31 Cryptic_K joined, marmic joined 06:33 ghenry joined 06:46 Quell joined 06:49 iblechbot joined 06:56 hugues23 joined 06:57 KingDiamond joined 06:58 Cryptic_K joined 07:06 premshree_ joined, rgs joined 07:38 drrho joined 07:48 nail__ joined, drrho joined, iblechbot joined, stevan_ joined, q[uri] joined, jserv-- joined, SamB joined, perlbot joined, obra joined, qwacky joined, miyagawa joined, sri_ joined, hcchien joined, rmoriz joined, rashakil joined, amv joined, buu joined, tcliou joined, Soga joined, gaal joined, PerlJam joined, oozy joined, SubStack joined, dbrock joined, arguile joined, Odin- joined, Grrrr joined, xern joined, scw joined, weinig|sleep joined, nothingmuch joined, arcady joined, hlen joined, ruz joined, merlyn joined, kane-xs joined, Aragone joined, drbean joined, mugwump joined, theorbtwo joined, dvtoo joined, p5evalbot joined, meppl joined, Gothmog_ joined, broquaint joined, jabbot joined, kcwu joined, webmind joined, wolverian joined, knewt joined, masak joined, jiing_ joined, rw-rw-r-- joined, cookys joined, orafu joined, Maddingue joined, gugod joined, ingy joined, locksy joined, TreyHarris joined, Aankhen`` joined, marmic_ joined, obra joined, revdiablo joined, buu_ joined, chip joined, xerox joined, rgs_ joined, qmole_ joined, integral_ joined, pmichaud_ joined 07:49 DesreveR joined 07:53 elmex joined, GeJ_ joined 07:55 geoffb joined 07:58 KingDiamond joined 08:00 rgs_ is now known as rgs 08:04 Shabble_ joined 08:14 scook0 joined 08:25 Aragone is now known as Arathorn 08:31 GeJ_ is now known as GeJ 08:49 scook0 joined 10:05 kanru joined, meppl joined 10:13 dakkar joined 10:19 cdpruden joined
meppl guten morgen 10:41
10:46 hugues23 joined 10:53 ruz joined
dakkar is away: pranzo 11:03
11:11 integral_ is now known as integral 11:16 Odin-LAP joined 12:09 froh-doh joined 12:14 Limbic_Region joined 12:22 iblechbot joined
dakkar is back (gone 01:21:29) 12:25
audreyt scw++ 12:29
yaphb.blogspot.com/
# " Yet Another Pugs Hacker's Blog "
szbalint hey audreyt 12:33
I've received an email from openfoundry that you made me an 'admin' on the project, was that intentional (didn't you mean someone else?)
audreyt that was intentional 12:39
rt.openfoundry.org/Foundry/Project/...?Queue=270
you can log in openfoundry and invite people over
and hand out commit bits in #perl6 12:40
I do that (handing out metacommitter bits to #perl6 regulars) now and then
to minimize time from a newcomer's arrival and receiving a commit bit 12:41
don't hesitate to preemptively send invitations even before the newcomer asked for it :)
xinming would sell the every commit bit for $ 5.... :-D 12:42
audreyt nothingmuch did that in OSDC.il... 12:43
in an auction
nothingmuch yeah 12:44
but i sold it to my darcs repo too
and we made it very clear that you can get them for free =)
xinming No, I don't mean auction... I mean sell it over the internet... :-P
audreyt like, ebay? :p
nothingmuch oh 12:45
hmm
that is deceiving
i think
12:45 lichtkind joined
audreyt probably not a good idea :) 12:46
xinming nothingmuch: yes, that's deceiving... :-)
nothingmuch you could make a pyramid scheme
12:46 jsiracusa joined
nothingmuch for every comitter you invite you get 50% of your investment back 12:46
=D
szbalint audreyt: oh cool
:)
nothingmuch (50% of what's left) 12:47
xinming nothingmuch: It's illegal in China, If you do that... Something like 传销 , Sorry, I don't know how to say in English. :-) 12:48
wait for someone will translate it... :-)
nothingmuch =) 12:49
audreyt multilevel marketing
xinming audreyt: I see I am admin, But I don't know where to send the invite... :-/ 12:50
nothingmuch in the box for "invite external staff" 12:51
audreyt xinming: in the url above
nothingmuch under the member administration pane
audreyt login first, then rt.openfoundry.org/Foundry/Project/...?Queue=270
then type in email, click "invite"
that's all
normally it's very obvious
but the pugs project page's member list is a bit long
(cough)
so you may need to scroll down to see it
xinming found it. :-) 12:52
theorbtwo "multilevel marketing" is a nice term for "pyrimad scheme". 12:54
audreyt I think pyramids are too nice to be associated with this :) 12:55
and scheme is nice too, but that's in another context
xinming audreyt: do you know about why 'multilevel marketing' will be banned here? 12:56
audreyt I have no idea
I suspect because it's rather hard to ensure government control of product/service quality 12:57
xinming hmm, å°±ę˜Æļ¼ŒäøŠēŗæ都åœØéŖ—äø‹ēŗæēš„é’±ļ¼Œē„¶åŽč®©äø‹ēŗæē»§ē»­éŖ—č‡Ŗå·±ēš„ęœ‹å‹ļ¼Œ ę‹‰ęœ‹å‹å’Œå…³ē³»å„½ēš„兄弟ļ¼Œ ꊊ他们ēš„é’±éŖ—äŗ†ä»„åŽć€‚ć€‚ć€‚ ē»§ē»­čæ™ę ·ę‹‰ć€‚怂怂 12:58
sorry, I don't know how to say that, that's why I use Chinese. :-)
audreyt I know what it is :)
xinming audreyt: that's one reason, but the more important is the reason I told you.... 12:59
12:59 scook0 joined
audreyt sure, that it will encourage dishonesty and one-off transactions instead of long term commitment 12:59
xinming audreyt: class A is A { }; <--- This error is reported at compile time or runtime? 13:01
I mean, it will reported when it sees `class A is A` or, when A.new is invoked 13:03
audreyt I suspect compile time is the correct answer
you can certainly test for it
xinming IMO, if it is detected as compile time, "perl 6" is not so dynamic... 13:04
audreyt well, "dynamic" means what you can do with it 13:05
regardless of what you want to do with a class
a circular inheritance doesn't really makes it easier to do something
I think perl6 is "dynamic if needed, static if possible"
i.e. if a static analysis doesn't prevent dynamic functionality, only improves the performance or error-detection 13:06
then we go ahead and do it statically
it's the same as perl5 really
13:20 particle_ joined
Limbic_Region audreyt - the Win32 error was a perl error when I promised to track it down and fix it - last night when I synced up and built, it became a new error (ghc internals - please send message off to ...) 13:40
something about undefined symbols
I didn't have time to do the research but I wanted to let you know I didn't forget our deal 13:41
I ended up not using Judy though
as saucy as she is - she was a bit too much
I realized I could waste 4k and use an array as my hash since all my values were known to be less than 1K
13:42 pdcawley joined
audreyt sure 13:42
13:42 xerox is now known as xerox-
audreyt is that faster, though? 13:42
Limbic_Region of course - no inserts or deletes 13:43
audreyt have you benchmarked? :)
I suspect Judy uses a bitmap underneath too
but arrays are easier to deal with
so you are probably fine
Limbic_Region I would be amazed if Judy actually outperformed a native type 13:44
plus - no function call
13:46 aeon__ joined 13:47 cdpruden joined
audreyt the J1U etc are inlined macros :) 13:50
but yeah, probably won't be faster than a native type, for this small a key space. 13:51
13:51 autark joined
audreyt re undefined symbols, that's probably an incrremental build 13:51
nuke dist/ and try again
13:52 vel joined
audreyt obra: add yaphb.blogspot.com/ to planet? 13:52
13:56 xinming joined
audreyt another $job day tomorrow... and then it'd be weekend 13:56
audreyt journals and sleeps :)
*wave* &
dakkar g'night 13:58
xinming G'night... 14:00
lichtkind :) night
14:02 frederico joined
scw audreyt: how can you find it out so fast 14:03
audreyt egogoogling of course
(blogsearch.google.com) 14:04
I can write about this in my journal, surely? :)
14:04 jserv-- joined
scw audreyt: sure 14:05
audreyt: That'll also encourage me on writing :)
14:06 macroron joined
audreyt nice :) 14:06
14:07 chris2 joined
scw audreyt: BTW, IIRC, you mentioned that we can only use a limited subset of perl 6 in the production rule 14:07
audreyt to simplify parsing, yes
$obj.method is probably not practical 14:08
scw does it means that there is already some tool on translating?
audreyt there is already a simple ->p5 tool
misc/pX/Common/Pugs-Compiler-Rule/lib/Pugs/Emitter/Rule/Perl5.pm 14:09
line 184
just 4 lines, very crude
which is why fglock and I think it's better to parse the minip6 separately
and gen p5+haskell from the same place
so line 184 can invoke your P::C::MP6 14:10
just like my .hs preprocessor can invoke the same thing
does that make sense?
scw Oh, it's already there...
but it doesn't translates ~ to . :(
audreyt I wouldn't call it "there"...
it doesn't handle anything other than one level deref 14:11
we need at least a function-call form, and recognize known literals
scw you mean "parse" it with out a parser?
audreyt I mean we'd need to use a real parser to parse minip6 chunks in {closure} 14:12
instead of treating it as p5 and fix some brackets
because that makes it perl5-specific and not sharable with PIR or Haskell
so a uniform parser is quite important 14:13
scw So, ain't I going to translate rule to haskell? 14:14
audreyt sure, but that is
Pugs::Emitter::Rule::Parsec
it needs to be supported by MiniP6
scw but before that we need MiniP6
audreyt both are needed
yes
scw got it
audreyt otherwise we can't usefully do production 14:15
we can parse into Match, but that's not fun to work with
scw can I do this: write a *mixed* rule whose production rules are in perl5
those rule translates miniP6 to haskell (?) 14:16
then P::E::R::Parsec
but that's weird, since after the module is used, the mixed rule itself is invalid input for it 14:17
audreyt you can parse perl5 with PPI 14:20
but I'm not sure it makes so much sense...
the idea of miniP6 is that it's for bootstrapping
once we get the first cycle running, we can use fullP6 to parse that
and existing productions needs no change
otoh, you described a level-0 bootstrap 14:21
namely using p5-productions to parse minip6
I guess it's fine... you can always do
rule foo { moose :P5 (?{ ...production code in perl5! ... }) } 14:22
or, less awkwardly:
rule foo { moose { use v5; ...some perl5 code here... } } 14:23
I think I like "use v5" better
so yes, you can make P::E::R::P5 recognize this form
and pass it thru untranslated
and use those to parse minip6
scw and it still work when real perl6 is used
audreyt I think it does make a lot of sense
yes
because "use v5;" can be specced to mean "lexically this is p5 code" 14:24
scw ok, that's what I'll do
audreyt scw++ sc++ scw++
particle_ hands audrey a 'w'
audreyt w!
scw should I then drop the w to match the sc++ then? :p 14:25
szbalint online version of three cheers? :) 14:26
gaal aloha 14:27
audreyt yo 14:29
gaal eep, you're asleep? i thouht we'd hack some :( 14:32
audreyt I guess I'm not asleep then
what do you feel like hacking on? Parser? Capture? Pad? 14:33
gaal uh, yay? :)
parsec, sure, but i don't grok the recent changes yet
don't stay up if you need to work tomorrow...
14:33 justatheory joined
audreyt I think I'll recap the changes for you 14:35
look at Pugs/Parser/Types.hs 14:36
all the magick is in there
I redefined two key prims 14:37
"satisfy" and "string"
all CharParser is built on one of them
so they now register the last char's class in the UserState
namely ruleCharClass
so far so good?
gaal where's CharClass defined? 14:38
got ir
audreyt line 89
gaal it
okay
audreyt now, an unexciting job is
see if making the CharClass field lazy
can save time
I doubt it though
gaal time prove ; s/!//; time prove? :) 14:39
audreyt another idea is to avoid the statetransition
well, just pugs -c on Test.pm
you can avoid state transition
nothingmuch does anybody know how the accomodations for the chicago hackathon are going to turn out?
audreyt by only do the setstate 14:40
when an implicit param is true
i.e.
string :: (?trackClass :: Bool) -> String -> RuleParser String
that may not be the best idea 14:41
note that there is very limited use for "gets ruleCharClass"
just one place in line 1260
Parser.hs
particle_ nm: i think the SSL dorm will be the place, and it's good through sunday morning
audreyt to determine whether postfix applies to something
particle_ this is per obra, as of tuesday 14:42
audreyt so another idea is to somehow lookBehind one char
another idea (maybe better this time)
gaal lookBehind is in PArsec?
audreyt no it's not
I have a better idea now 14:43
just maintain a lazy userstate of Char
instead of casing every char for class
and then case that in line 1259
ch <- gets rulePreviousCharacter
it can be strict too if that helps perf
not sure
but should be faster than charclassing 14:44
in any case, once you get that working
write \b and <ws> combinators
I mean assertions
doesn't need to be fancy; just
getPrevCharClass :: RuleParser CharClass
can be helpful already 14:45
if you manage to go that far
then add another two states, rulePos and ruleNam
for captures
and write combinators to populate them
but by that time I think I'll be awake :)
gaal okay, I'll see what I can get to 14:46
audreyt (i.e. by the time you finish Pos/Nam populating)
captureNamed :: String -> RuleParser a -> RuleParser a
and you can reuse "Match" structure 14:47
or write one of your own... it can be just two SourcePos for .from and .to
gaal ? what's .from and .to? :) 14:48
audreyt $/.from and $/.to
lichtkind ?eval sub b {say}; b 'b';
audreyt registering the text ranges of the match
evalbot_10082 OUTPUT[ ] bool::true
audreyt see "data MatchRule" in src/Text/Parser/Rule.hs
lichtkind ?eval sub b {say}; b( 'b'); 14:49
evalbot_10082 OUTPUT[ ] bool::true
audreyt $_ is not bound
?eval sub b ($_) {say} b 'b'
evalbot_10082 OUTPUT[ ] bool::true
audreyt ?eval sub b {say @_} b 'b'
evalbot_10082 OUTPUT[b ] bool::true
audreyt ?eval sub b ($_) {say $_} b 'b'
evalbot_10082 OUTPUT[b ] bool::true
audreyt oy, I wonder if defaulting is borken
hm it works here 14:50
svnbot6 r10097 | scw++ | Pugs::Grammar::MimiPerl6 README, illustrates the goal of it
audreyt gaal: anyway, just play around :) the ultimate goal is to be able to write some part of parsec functions into p6 rules
I'll sleep now for real :)
gaal night 14:51
TimToady night
audreyt scw: your blog has been pugsblogged
lichtkind night
audreyt :) &
15:02 weinig|sleep is now known as weinig
xinming scw++ README is understandable. :-) 15:02
scw xinming: thanks :) 15:03
xinming scw: From your README, there is still some questions, Is MiniPerl 6 always needed to self-hosting perl 6? or after the self-hosting, the MiniPerl 6 isn't needed. 15:04
scw xinming: it can be dropped 15:05
xinming: I think I refer to the grammar as "full perl 6 grammar" every time after thep 2?
s/thep/step
gaal data point, making ruleCharClass :: CharClass in RuleState lazy doesn't speed things up -- in fact it may slow 'em down. 15:06
xinming perl 6 rule whose production rules 15:09
are written in perl 5 <-- what does the phrase 'production rules' mean here?
15:10 Odin-LAP joined
scw xinming: rule foo { moose { return 23 } } 15:10
The "{return 23}" is the production rule 15:11
lichtkind ?eval sub b ($_) {say $^a} b 'b'
scw Which will do some AST constructing work in a real grammar :)
evalbot_10082 Error: unexpected "b" expecting comment Cannot mix placeholder variables with formal parameters
lichtkind ?eval sub b {say $^a} b 'b'
evalbot_10082 Error: Undeclared variable: "$^a"
xinming lichtkind: I'd suggest to write the test.... As these will be used for testing self-hosting perl 6. 15:12
lichtkind yeah but i never wrote tests :)
15:12 amnesiac joined
lichtkind and i dont have client to commit 15:12
xinming ...
Ok, I'll write these later...
lichtkind: paste all the bugs to pastebin. 15:13
lichtkind: As I don't scroll back the chat log. :-)
lichtkind: Don't you use Linux? Most distributions can install subversion in their way easily. 15:14
lichtkind not currently still winXp
gaal lichtkind: svn is available on cygwin and also with native windows 15:15
xinming lichtkind: Ok, paste the bugs to pastebin please. :-)
cognominal audreyt: foo($x); # not a provisional call; it's a method call on $x
did you meant "foo($x:)"? 15:16
lichtkind what is pastebin?
cognominal ho, she is gone :(
xinming cognominal: she goes to sleep.
pasteling: url
don't know if pasteling is or bot... :-P Sorry if troubled you. 15:17
paste.lisp.org/new/perl6
lichtkind: paste.lisp.org/new/perl6
s/is or/is a/ 15:18
lichtkind what is this bot for? 15:19
xinming lichtkind: if you post data in that site, the bot will tell us... 15:20
TimToady cognominal: single argument calls always assume SMD over MMD 15:21
lichtkind yes so far i guessed it but its a kind bugtracker or general info tracker?
TimToady so the : is assumed, or $x.foo() is assumed, same thing.
xinming lichtkind: No, It's just a waste-basket, which you can post anything.... and after a period, they'll dissappear... 15:22
ingy hola 15:24
miyagawa-san is itmfhy 15:25
nothingmuch itmfhy? 15:26
Steve_p blinks
lichtkind ?eval sub b {say $^a}; b 'b'
evalbot_10082 Error: Undeclared variable: "$^a"
TimToady < lichtkind> ?eval sub b {say $^a} b 'b'
placeholders arent allowed in normal subs, only bare blocks.
they're just a workaround for not having the possibility of a signature. 15:27
ingy miyagawa-san is in the mutha fsckin haus, yo
nothingmuch ingy: oh
=)
miyagawa: welcome to the house
miyagawa yay
nothingmuch oedipal complexes to your right
the bathroom is down the hall
ingy he just arrived in Taiwan
nothingmuch: you funny 15:28
lichtkind xinming but why should i post there i it can only be seen for a moment and not when audrey is back?
xinming TimToady: my &ttt := { $^a.say }; ttt("bbbb"); 15:30
TimToady: Is that valid?
TimToady should be.
ingy xinming: in Perl 7 any stream of characters is valid syntax 15:31
TimToady ?eval my &ttt := { $^a.say }; ttt("bbbb");
xinming TimToady: hmm, how about we calling it using ttt "bbbb" ? (without parens)
evalbot_10082 OUTPUT[bbbb ] bool::true
TimToady that should work too, according to the recent rulings. 15:32
xinming ingy: perl 8 will be able to understand what we say, Is all valid syntax...
:-)
?eval my &ttt := { $^a.say }; ttt "bbbb";
evalbot_10082 Error: unexpected "\"" expecting comment, "(", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
TimToady well, if Perl 7 is specced as perfect, then Perl 8 has to be beyond perfect... :)
that's a bug 15:33
xinming TimToady: from example, my &tmp := { ... }; isn't ======= sub tmp { ... } ?
TimToady my &tmp should be good enough to declare tmp just like sub. 15:34
the definition doesn't happen till := runs, though.
kind of an autoload situation without the auto part. 15:35
the recent "provisional call" changes also mean that
ttt "bbbb"; my &ttt ::= { $^a.say };
should work, but note the ::= 15:36
15:36 elmex joined
xinming that's why I wonder, why can't place holder work in sub, but in a "manual" sub. :-) 15:36
TimToady := would pass compilation
but would fail at runtime
because at ttt call time it wouldn't have bound it yet.
xinming Ok, I think I understand.
::= is runtime binding, so that works, but for :=, It isn't. 15:37
TimToady we don't want to encourage people to use placeholders for anything but short bare blocks.
you mean ::= is compile time
xinming ???
xinming goes to check synopsis
TimToady := is runtime binding
another way to look at it is that placeholder variables autogenerate a signature, and if there's already a signature it's a conflict. 15:39
15:39 hexmode joined 15:41 FurnaceBoy joined
xinming so, for compile-time binding. placeholder will become positional arguments internally. why does runtime-binding will fail? IMO, pointy-sub will be able to generate the signature. there is no signature for a closure. 15:43
s/will//
TimToady the run-time binding is fine if it happens soon enough, but in my example it doesn't. 15:44
pointy sub is just a different way to add a signature to a block.
there is no difference between { $^a <=> $^b } and -> $a, $b { $a <=> $b } 15:46
except that if you introspect it, the parameter names have caret
the -> form also has the possibility of adding type declarations to the parameters. 15:47
but both forms are considered blocks rather than routines, so they are both transparent to a "return". 15:48
obra audreyt: send me mail about the add to planetsix? i can't do it from here 15:58
15:59 kolibrie joined
TimToady scw: your blog seems to be written a month in the future. :) 15:59
16:00 xern joined
FurnaceBoy does it mention any lottery numbers? 16:05
TimToady scw: perhaps you are really not in +0800 timezone but in the +075200 timezone? 16:06
unfortunately, no...
maybe scw already won the lottery and spent all the money on a time machine... 16:07
gaal yay, it starts on my birthday 16:08
will start, that is
FurnaceBoy :) 16:10
yeah that should work ... that's about as plausible as going backwards to fix something
hmm, extended timezones. 16:11
makes one wonder how we will handle extraplanetary zones
we should make sure Perl6 is ready
TimToady this is actually the mini-timemachine that will be used to bootstrap the TimeMachine 6, which will be used to go 582 years into the future and kidnap Audrey. 16:12
gaal %TZ
FurnaceBoy :-)))
I *knew* she was from the Future!
it all starts to make sense...
she must be very frustrated, having seen and used Perl 17...
she knows we need baby steps
TimToady no, she was stuck in a timeline with Python 9000. 16:13
FurnaceBoy LOL!
pmichaud_ TimToady: I have a question about :pos and :continue arguments (more)
TimToady <hides>
:)
FurnaceBoy Is that the language that has never been known to make a mistake?
pmichaud_ TimToady: last week we discussed that :ratchet and :words adverbs would be evaluated at compile-time -- is the same true for :continue and :pos ? 16:14
TimToady I'm sorry FurnaceBoy, I can't allow you to do that,
FurnaceBoy "def Daisy() # Daisy, give me your answer do..."
particle_ uses an io call to flush out timtoady *squeak* *squeak*
TimToady er, yeah. Oops.
pmichaud_ I don't have a problem (from an impl perspective) if some adverbs are compile-time and others are run-time 16:15
FurnaceBoy the scary thing, TT, is that HAL was born in Urbana(Champaign?) Illinois, where the supercomputing centre *IS* ... and Wolfram Research is located
FurnaceBoy puts on tinfoil hat 16:16
theorbtwo ...and clearly Wolfram & Heart ^W^W is evil. 16:17
TimToady possibly :pos{ $x } would give us run-time semantics, being a closure. 16:18
but it needs to be thunk through from a general adverb policy perspective.
16:18 Toaster joined
xinming TimToady: thanks for your "tutorial" on the difference between binding a closure and a sub. :-) 16:21
FurnaceBoy theorbtwo, it was just closing the circle on a discussion of Mathematica we had here recently ... TT would like Perl6 not to lack anything neat that Mma does, language wise ;-)
svnbot6 r10098 | yiyihu++ | Small fix in self_inheritance.t 16:22
r10097 | scw++ | Pugs::Grammar::MimiPerl6 README, illustrates the goal of it
pmichaud_ <rambling thoughts> :pos at runtime is neat and useful -- subrules can especially make use of it. evaluating :words and :ratchet at runtime is evil, because it greatly reduces the opportunities for optimization (more) 16:23
svnbot6 r10099 | yiyihu++ | Added a test for testing closure binding with placeholder variables according to a bug lichtkind++ found...
lichtkind thanks yiyihu but i thought this was no bug according to Tims revealings 16:24
pmichaud_ <more> I don't think it would be too difficult for the rules compiler to optimize if the adverb is obviously a constant, otherwise defer to runtime. (And perhaps we say that some adverbs cannot be deferred.)
xinming lichtkind: my &ttt := { $^a.say }; ttt "bbbb"; ;-) 16:25
lichtkind: this should be valid, It is just call ttt with "bbbb" without parens.
lichtkind xinming but pugs didnt it? 16:26
xinming ?eval my &ttt := { $^a.say }; ttt "bbbb";
evalbot_10082 Error: unexpected "\"" expecting comment, "(", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
lichtkind ok
TimToady if all adverbs are really named arguments, then it's really only macros that are ambiguous, since other subs are by definition deferred till runtime. 16:31
lichtkind i thought about to take over the p6summeriesies but there are 2 major cons: im no native speaker and i still have an bigger perl project tagged on my leg
but i would like to help
16:33 Arathorn is now known as Aragone 16:35 Aankhen`` joined
pmichaud_ well, of the various answers I was expecting, "Oops" wasn't one of them. :-) 16:35
for the time being I'll implement assuming some are compile-time and others are run-time, I'll work out the details afterwards. 16:36
TimToady perhaps macro named args auto-evaluate at compile time when given a type that is incompatible with AST. 16:48
or maybe everything just comes in AST and the macro simply evaluates some of them. 16:54
but probably the former is better. 16:55
If a macro declares Bool :$flag it should probably Just Work. They can always leave out the Bool to get the AST. 16:56
theorbtwo I like it. 16:57
16:57 r0nny joined
theorbtwo Why only the named, though? 16:57
TimToady Hey, I thought this channel had /goodquestions disabled... 16:58
theorbtwo Nice to know that I can still come up with them from time to time. 16:59
TimToady so if all your macros are types non-AST, it's just an immediate subroutine. Hmm.
void macros. Yum.
so basically keyword "macro" calls immediately and changes the *default* typology of parameters and return values. Explicit types can override though. Seems cool. 17:01
makes me wonder if ASTs should have their own sigil, though... 17:02
this "incompatible with AST" criterion is ill defined. 17:03
spinclad make 'flatten' mean eval?
(not quite right) 17:04
TimToady An AST is rather like a Capture.
spinclad haskell would use !, but that's something else here 17:05
pmichaud_ 's implementations of ASTs are all Captures already :-)
PGE uses Captures for its AST, and the current perl6 implementation basically does the same 17:06
(presuming that Match isa Capture)
TimToady so what would be a clear way of marking a macro signature for auto-evaluation of an AST parameter?
that is, marking a particular component to be auto-evaled? 17:07
pmichaud_ how about changing the macro keyword?
oh, for a particular component
hmmm
TimToady I think the default should be autoeval unless marked AST somehow.
spinclad does 'Bool !$name' mean something else already? 17:08
TimToady which is why I was floating a sigil, but that might be too violent.
spinclad 'Bool !:$name', even
TimToady does that mean an AST that will eventually return boolean?
pmichaud_ somehow I think that sigil is too violent
TimToady or an AST of subtype Bool? 17:09
spinclad no, that returns it now, because you're evaling it
TimToady I think that might be the wrong default.
does it make sense to type an AST other than as "AST" or a subtype of it?
particle_ does immedieate 17:10
spinclad is immediate
spinclad is immediate
TimToady I'm saying that maybe immediate should be the default, if it's easy enough to mark ASTs somehow. 17:11
spinclad is evaled
TimToady the ASTs are the special thing.
and should look special.
spinclad
.oO( is AST )
TimToady that would work. 17:12
spinclad AST :$name
TimToady that would work differently
the latter is probably more proper
spinclad except some functions pass around AST at runtime, so you couldn't write a compiler properly 17:13
TimToady it returns an AST
why not?
spinclad because it's got lots of runtime things typed as AST, which would be a flag for compile-time eval, when they're not actually ready 17:14
TimToady It's only macros that would autoeval.
spinclad so 'is AST' makes more sense to me 17:15
TimToady that would turn the variable into a container type of sorts.
spinclad (take a macro meant for manipulating AST's at runtime...) 17:16
(sorry, a macro that wants to eval an argument to its compile-time AST value) 17:18
TimToady still don't quite follow...
spinclad macro foo (Bool :$flag #(evaled)#, AST :$tree #(evals to a piece of code)#, :$body is AST #(a quoted piece of code)# ) 17:21
don't know if that makes enough sense
TimToady Yes, I see where you're going. Let me think about it some more. 17:22
pmichaud_ TimToady: please do, but I'm not in a hurry for it atm. From the PGE perspective it just means there will be a way to have some adverbs evaled at compile time and others at runtime, which I think is the right approach 17:23
we (mostly you) can work out the syntactic details when we need to commit :-)
TimToady I just have a feeling that we want normal evaluation to look normal, and make non-normal look abnormal somehow.
but not verbose, because in a sense *that's* the default for macros... 17:24
so most args will be labelled as abnormal.
spinclad
.oO( macro foo (Bool :$flag, AST :$tree, =:$body) #( = marking non-normal )# )
17:27
TimToady a different sigil would allow easy differentiation in a quasi-quote interpolation...
17:29 hexmode joined, froh-doh joined
TimToady
.oO( macro foo (Bool :$flag, AST :$tree, :&&body) )
17:31
my goodness, the left side of macro infix:<&&> would be a &&cond 17:33
spinclad it's a sign from heaven! ship it!
TimToady well, it's of some small mnemonic value, anyway... 17:34
pmichaud_ it could also be a sign from the nether world. :-)
TimToady wouldn't conflict with the actual && operator, since term vs operator
spinclad heretic! blasphemer!
TimToady well, something to stew on for a while. At least there's prior art with @@. 17:35
(admittedly recent)
pmichaud_ "@@" looks like eyes to me. So does && in the font I'm using :-|
actually so does ":", now that I think about it. :-)
TimToady aye, aye!
you sure you don't just have a reflective screen?
particle_ 8-) 17:36
spinclad *<8*O))
TimToady my screen seems to have some of those reflective LCDs that rotate the image 90Ā°... 17:37
17:38 ruoso joined
TimToady only looks more like B-{) 17:38
spinclad is that that TFT stuff? i've got one too 17:39
TimToady so maybe @@ is something like an array, while && is something like code...
particle_ ** is something like whatever...
TimToady but I want it Right Now!!!
I want the world, I want the whole world, I want it now!!! 17:40
spinclad tree-shaped code, like multi-dimmed arrays
particle_ i don't want the world, i just want *your* half
TimToady so maybe (*) should be named World, as in gimme the...
0..* is half the universe
spinclad *..0 is the other half
TimToady *..^0
particle_ ^-* 17:41
or is that -^*
TimToady can you negate a range?
pmichaud_ hmmm... ".." looks like eyes to me, too.
TimToady hmm...
pmichaud_ "Perl6: The Smiley Language!" 17:42
spinclad 0..* is a black eye
TimToady you need to chop those fishheads off before you cook 'em, Patrick...
particle_ negating a range seems kewl: @foo[^*] = @foo[-^*]
TimToady I...hesitate to think what uses the PDLers will put * to... 17:44
pmichaud_ lunchtime
TimToady I need to vamoose too. Finally over this fever, I think...
pmichaud_ thanks once again for the rapid response, TimToady 17:45
TimToady so no excuse to stay away from $job.
sure thing.
pmichaud_ is glad TimToady is over the fever -- pmichaud can't keep up with the synopsis changes that result
:-)
17:45 fglock joined
TimToady later & 17:45
spinclad is amazed that fever-dreams made such good synopsis-fodder 17:46
gaal okay, I don't understand how come, but all the speedup ideas for the one-char lookbehind are actually slower than storing a state. 17:48
particle_ perhaps storing a state has been prematurely optimized :) 17:49
gaal hmmm come to think of it, none of these is even correct, including the current one! (unicode ws)
17:53 shachaf joined 17:57 nurey joined, nurey left 18:03 Eimi joined 18:52 dduncan joined 18:56 vel joined 19:00 KingDiamond joined
dduncan ping mugwump 19:03
19:04 vel joined
dduncan or to whomever knows ... I have a question about the Set data type 19:05
19:05 aufrank joined
PerlJam dduncan: I probably don't know, but I can speculate right along with you :-) 19:05
dduncan and that is ... is ext/Set/lib/Set.pm meant to implement the built-in Set type referred to in S06?
I can understand if ext/Set/ is out of date, but I was wondering if that is the intent 19:06
if so, then I notice that S06 lists the Set type as being an immutable type, but the current Set.pm has some methods which mutate existing objects, such as insert() 19:07
PerlJam dduncan: WEll, the POD sdoes say "Sets for Perl 6"
s/sd/d/
dduncan will that removed, or will there be multiple Set implementations, some that are immutable and some that are mutable?
likewise, remove() is a mutator 19:08
most methods in Set.pm are not mutators, though
PerlJam Though maybe Sets should be mutable so we can use them for select() and the like. 19:10
dduncan my understanding of select() is that it is not a mutator 19:12
er, or maybe it is in some contexts
PerlJam No, I was thinking of the 4-arg select used to chekc the status of various file handles. The "traditional" mechanism uses a bit vector, but that could easily be a Set of filehandles that you'd change at run-time. 19:13
dduncan like making a particular socket the current one, if that's what you meant
yes, so in that context, it would be a mutator, since 'current' would change
unless 'current' is defined externally to the Set class 19:14
but in that context, select() is kind of like an iterator
in the Java sense 19:15
PerlJam is still boggling that they have internet access in this little hurricane ravaged airport in Gulfport MS. 19:16
dduncan on a separate matter related to data types, there doesn't appear to be an immutable bit string type, and I propose that it be added 19:21
perhaps it could be named 'Raw'
19:26 bpphillips joined
lichtkind g'night boys n girls 19:45
PerlJam dduncan: why do we need a bitstrign type ?
er, bitstring
dduncan to represent things that are strings of non-character data 19:46
19:46 buu_ is now known as buu
dduncan why do we need a Buf type? 19:46
PerlJam Buf == mutable Str 19:47
dduncan no, Buf is a sequence of bits or bytes, not characters
characters <> bytes
particle_ parrot allows non-char data in strings, using the raw: encoding 19:48
dduncan so the question is, does 'Str' imply Character? 19:49
see the definition from S06: Str Perl string (finite sequence of Unicode characters) 19:50
19:50 FurnaceBoy_ joined
dduncan but other things, such as a graphic or sound, are not composed of characters 19:50
PerlJam that's an array of bits 19:52
dduncan yes, but bit strings are common enough to deserve their own base type like character strings 19:53
otherwise just have a type storing a single character and have an array of those
20:09 bpphillips left
svnbot6 r10100 | gaal++ | * Parser: keep a Char state rather than a CharClass, and add 20:12
r10100 | gaal++ | a getPrevCharClass :: RuleParser CharClass function.
r10100 | gaal++ | Checking this in despite it not appearing to speed things
r10100 | gaal++ | up, because, well, it oughta have!
20:14 DaGo joined
gaal where will the parsecside \b assertion be used? 20:17
and, <ws> consumes, right? 20:18
...is it an atom, or greedy?
20:21 particle_ joined 20:22 KingDillyDilly joined
KingDillyDilly I need to ask rindolf something. He chats here? 20:25
20:27 borkened joined
avar It just occoured to me how wonderful rules are 20:28
Odin-LAP avar: 'cause you have so much fun breaking them? 20:30
ruoso heh
avar No, because when you have a given parsing task it' so much easier than using regexes, and so much more fullproof.
Odin-LAP avar: Drunk or stoned or something? 20:31
avar Odin-LAP: ..
ruoso avar, I had the same feeling when playing with lrep
Odin-LAP avar: You're making a lot of smelling errors. What do I know?
avar Odin-: I always do that 20:32
See, just there I got your nick wrong.
ruoso wonders what a smelling error is
avar Well actually I just refuse to talk to your lap.
KingDillyDilly rindolf: I'm adding a pro and con section to Wikipedia's Perl 6 article and I'd like to know if you still basically agree with your Critique of Where Perl 6 is Heading at freshmeat.net/articles/view/1339/ . I think you've been active enough in the Perl 6 community and in developing Perl 6 to make your editorial worthy of a Wikipedia external link from the Perl 6 article if you have the same opinions now.
avar Odin-: I feel degraded.
Odin-LAP ruoso: It's one letter off. ;p
avar: Oh? Does that mean you feel like a negative number? 20:33
avar no, I'm unsigned at all times
Odin-LAP 'cause I figure you were a zero to start with... >;)
(Huh. Seems I'm in a foul mood right now. Sowwy.) 20:34
avar Yes, this is Odin-, he just loves everybody.
KingDillyDilly rindolf: So, if you still believe what you wrote, please say so here. Wikipedia editors can't do original research, but I think a comment on an official, logged perl6 channel would be ok. 20:35
avar == References == 20:38
oops 20:39
KingDillyDilly Avar: trying to beat me to rindolf's link? 20:40
avar oh, no, wrong paste 20:41
KingDillyDilly Those equal signs are used in Wikipedia's notation. I didn't know they were used elsewhere. 20:42
20:44 SamB joined
ruoso KingDillyDilly, Wikipedia's notation is just "mediawiki" notation which happens to be almost the same as any wiki... 20:51
20:51 ayrnieu joined
FurnaceBoy_ article is discredited 20:51
KingDillyDilly discovers whois command 20:52
If it's discredited by someone with credentials, maybe I'll mention that.
ayrnieu it doesn't matter what credentials the person has; what matters is what that person says. 20:54
KingDillyDilly Yes, I think public opinion has a place on Wikipedia, but I wouldn't mention a specific post by someone without credentials. 20:55
20:56 ayrnieu left
KingDillyDilly I won't be adding a cons section without a pros section. 20:56
FurnaceBoy_ you could ask audreyt's impression of that article.
or anyone 'with credentials'
before 'propagating confusion'
KingDillyDilly I could peobably find the opinion of an elite Perl 6 guru in a more authoritative looking place than a chat room. I don't think I'll try to present different opinions on that specific article, but I'll still have various pros from various places. 20:58
cognominal KingDilly, Shlomi Fish has not the slightest clue about Perl6.
KingDillyDilly His journal makes it sound like he knows his stuff now. At least his latest posts. His first post is at use.perl.org/~Shlomi+Fish/journal/24040 21:00
FurnaceBoy_ that should be a warning sign about his old, old article then? 21:01
good idea to see if he still stands by it I guess, but opinion on it is massively negative
cognominal ho sorry, I must be wrong, he certainly knows better than all the #perl6 regulars :)
FurnaceBoy_ ergo, it's not a helpful contribution
interesting how it takes a credentialed person to dismiss an article by an obviously uncredentialled writer... 21:02
and that's how the world slowly gets less intelligent...
KingDillyDilly Yeah, but I've found that saying negative things in a discussion venue full of those supporting what you're criticizing gets that kind of reaction.
I wouldn't link to his editorial based on the author's bio in that editorial. Only based on his current credentials, maybs. 21:04
"Author's bio: Shlomi Fish once defined himself as a "Programmer, Writer, Amateur Mathematician, Wannabe Philosopher, and someone who studied in the Technion in the vain hope of becoming an Electrical Engineer". He does not consider himself a sane person, but is quite certain that only makes him more interesting."
cognominal the problem is not saying negative things, the problem is critic without understanding. It brings no progress. 21:05
particle_ cog: s/critic/critique/ 21:06
cognominal ho, just like in French 21:07
particle_ a critic criticizes, or writes critiques
KingDillyDilly English could do without the word critique. 21:08
We probably wanted to show our appreciation for the Statue of Liberty or something. 21:09
I tend to not use blog type entries in Wikipedia, but I had a hard time finding other critiques. 21:10
21:11 Ymmv joined
arcady there's not too much else on perl 6 21:11
and especially on opinions of perl 6
KingDillyDilly I mean something encyclopedic. And I don't want to scour the literature. 21:12
It's just Wikipedia, which I'm no big fan of, but I plugged several of my webpages there so I kind of owe them something. 21:13
cognominal thx particle_ 21:14
KingDillyDilly It's kind of like being able to personally convince someone from Google that your webpage deserves a better rank. In Wikipedia, you rank it yourself and it's up to someone else to review it and remove it. 21:15
Never had a link to my webpage deleted, and I posted about three. 21:16
ruoso never thought someone would abuse wikipedia this way... 21:17
21:18 nirgle joined
arcady perl 6 is not an encyclopedic topic. it's too fresh and unsettled, I think 21:18
KingDillyDilly It's allowed. I read the linking policy. They're really good links.
21:21 iblechbot joined
svnbot6 r10101 | gaal++ | * whiteSpace and ruleWordBoundary rules. 21:21
r10101 | gaal++ | (Do we need a non-consuming version of whiteSpace? Not sure.)
aufrank gaal++ 21:23
21:24 pdcawley joined
KingDillyDilly arcady: There was discussion about that at en.wikipedia.org/wiki/Talk:Perl_6#....opriate.3F 21:30
arcady encyclopedias are, essentially, summaries of existing information, collected in one place for convenience 21:32
perl 6 doesn't have much existing information 21:33
so I think at this point, it makes much more sense to work on the original sources
we could always use more good documentation
cognominal arcady++ 21:40
21:43 Limbic_Region joined
gaal 17:46 < audreyt> captureNamed :: String -> RuleParser a -> RuleParser a 21:51
why isn't that just
captureNamed :: String -> RuleParser a
?
captureNamed name = modify $ \state -> state{ ruleName = name } 21:52
?
xinming gaal: she is asleep. 21:53
gaal xinming: that's been known not to slow her down
also, she backlogs :)
21:53 weinig joined
gaal I'm trying to do this parametrically over parsers, but so far I'm not handing withState correctly 21:54
xinming gaal: hmm, after I read the README in misc/pX/Common/Pugs-Grammar-MiniPerl6/ I got 2 questions. :-) 21:55
gaal and I'm not sure this isn't a wild moose chase: how's it going to be used that it needs to parametize over parsers?
xinming: haven't read that myself, looking now...
what path did you say? I don't have a MiniPerl6 dir.. 21:56
xinming the one is, for self-hosting, perl 6, we need self-hosting miniperl, and after the miniperl self-hosted. then, we can make perl 6 self-hosting
am I right, that's one question.
revdiablo: path.. it is in misc/pX/Common/Pugs-Grammar-MiniPerl6/ 21:57
update first..
oops
gaal yes, got it now
xinming s/revdiablo:/re:/
21:59 dduncan left
gaal well, none of these steps is a miniperl like miniperl or tinyperl are for p5 22:00
(btw miniperl in p5 isn't very mini, it's not a good name but basically it just doesn't have dynamic loading IIRC)
xinming gaal: In fact, no matter what it is for, I think they are all run on top of parrot. :-) 22:01
gaal er
xinming gaal: hmm, Ok, I just wish to confirm my understanding... :-)
gaal the things mentioned in that README? I don't think so
why do you think parrot? 22:02
oh, because the grammar is in the parrot project?
xinming gaal: No, that's not mentioned, But I think It would be run on parrot. :-)
gaal: As Parrot lives for perl 6. ;-)
gaal If I understand correctly, the gammar should eventually be one grammar, used by parrot, pugs, maybe lrep too.... 22:03
not sure though, sorry.
maybe I can help better with your other question? :)
xinming gaal: hmm, It's ok, And another question is...
after it generates PIL, can we translate the PIL to PIR? I mean easily... Not painfully... :-) 22:04
hmm, or "transform"
gaal heh, don't know about that either, I've not worked on backends much 22:05
but I think the plan is that yes :)
xinming if the "transform" isn't that hard, then, I think the perl 6 release date isn't too far.... :-)
how much is the self-hosting plan is finished do you think? I mean to PIR stage... 22:08
gaal well, there are a million other things to engineer, like package management and stuff, that aren't part of the "hard" compilation problems but have always been tough cookies 22:09
arcady getting a basic compiler going is not that hard, it seems
since it's been done, independently, a few times
gaal we already used to have a -CPIR too, no? 22:10
I don't really use parrot much (other than for Rules)
xinming gaal: In fact, Why I want a self-hosting perl 6 is all because... pugs is tooooo slow right now... 22:11
gaal yeah, we all wish it were faster
theorbtwo I suspect the best way to get speed is to compile to an existing language with a good optimizer... but that's a pretty left-field suggestion. 22:12
xinming theorbtwo: hmm, In fact, I believe that if "pugs" is run on parrot, It will be much faster... It will be faster even if it is un-optimized on parrot IMO. :-) 22:14
theorbtwo I meant C, or haskell, or ... 22:15
haskell -O, that is, which I suppose is C with extra steps. 22:16
arcady well, parrot does have a JIT compiler 22:19
the trick is to compile perl 6 to parrot (or whatever else) rather than running it on pugs 22:20
theorbtwo Well-written parrot code can be quite fast, yes.
The trick is that poorly-written parrot code can be quite horrible, I suspect, and generate code has a way of being horrible unless you're careful with it.
However, probably still faster then the pugs builtin style. 22:21
arcady and, parrot can be optimized for the generated code, i imagine
Limbic_Region perlbot nopaste 22:22
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
pasteling "Limbic_Region" at 24.35.57.240 pasted "A new Win32 build failure" (14 lines, 1K) at sial.org/pbot/16933
gaal Limbic_Region: repeatable? 22:24
looks like an internal ghc error, which can happen on running out of memory, or actual hardware failure
GHC is a good canary, as I found out mylsef 22:25
okay, wakies up for me. good night everybody 22:26
zzZ &
avar audrey did some radio interview, where can I get it?
gaal pugscode.org ?
avar what? where? 22:27
Limbic_Region gaal - what do you mean repeatable?
gaal www.perlcast.com ?
Limbic_Region I can repeat it here if that's what you mean
gaal Limbic_Region: run make again
same error?
avar gaal: w00t, thanks. 22:28
gaal try to edit your config.yml, up the heap size there, perl Makefile.PL && make again
Limbic_Region checking gaal
gaal - I get a completely different error when heap is the problem
gaal Limbic_Region: hope it helps; I'm off to bed
Limbic_Region and another make allows it to finish
this isn't that
TTFN - sleep well
gaal Limbic_Region: memory-related problems can manifest in different way.s
& 22:29
Akiyuki .sub _main 22:50
print "Hello world!\n"
end
.end
er
C:\Documents and Settings\Tux\Desktop\parrot-win32>parrot.exe test.txt
error:imcc:syntax error, unexpected $undefined, expecting $end
in file 'test.txt' line 58
That's the error I get.
22:55 larsen joined 22:56 cdpruden joined 23:12 loud- joined 23:13 Pz joined
Pz How do I install perl6 modules, or use perl5 modules? 23:13
23:28 Veritas joined 23:34 Quell joined 23:35 Khisanth joined 23:47 particle_ joined 23:49 KingDillyDilly left
buu Fascinating. 23:51