Camelia, the Perl 6 bug

IRC log for #perl6, 2006-03-11

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:32 binary42 joined perl6
00:45 nothingmuch joined perl6
01:06 jiing_ joined perl6
01:12 binary42 joined perl6
01:20 binary42 joined perl6
01:36 FurnaceBoy_ is now known as FurnaceBoy
01:42 whiteg_fi joined perl6
01:42 whiteg_fi left perl6
02:18 nothingmuch joined perl6
02:35 DesreveR joined perl6
03:15 scook0 joined perl6
03:22 FurnaceBoy left perl6
03:32 scw joined perl6
03:41 tmlsd joined perl6
03:49 Qiang joined perl6
03:59 Qiang joined perl6
04:03 tmlsd left perl6
04:06 Limbic_Region joined perl6
04:13 javierza joined perl6
04:16 ayrnieu joined perl6
04:17 ayrnieu ?eval loop (my $i = 0; $i < 10; $i++) { say $i }
04:18 ayrnieu ...
04:22 ayrnieu also, { chdir $noexist or ... } , { mkdir $noperm or ... } just die in haskell-space.
04:23 ayrnieu I guess I need try {} ...
04:24 ayrnieu ah, I guess that 'use fatal' is default.  (although I can't 'no fatal', here)
04:29 ayrnieu splice does not behave like perl5's splice, contrary to documentation.
04:29 Eroick joined perl6
04:29 Eroick How is P6 going?
04:30 Eroick Its been a while since I was last around these parts.
04:30 ayrnieu contrast:
04:30 ayrnieu pugs -e 'my @a = <5 6 7>; say for splice @a, 0, 1000'
04:30 ayrnieu perl -le 'my @a = qw/5 6 7/; print for splice @a, 0, 1000'
04:31 ayrnieu eroick - well, I suppose.  If you've any specific questions, someone more knowledgeable might come along to answer them.
04:32 Eroick ayrnieu: :)... good point. So, last time I checked, pugs had just come out and everyone was amazed. Is pugs still comming along nicely? What about parrot?
04:33 Hamilton joined perl6
04:33 ayrnieu people seem pleased with pugs's progress.  I recently saw allison express confidence in parrot's imminent maturity.
04:36 Eroick is there any more information on when we will see perl6's own compiler come out
04:36 ayrnieu the last I heard someone speculate, which may have been a few weeks ago: this year.
04:37 ayrnieu my impression is that pugs will compile perl6 to something that runs on parrot, and then self-compilation will happen, and then everyone will be happy and excited :-)
04:38 Eroick i hope so :). I saw something quickly that was new. I believe it was caled ponie and it was a bridge between p5 and 6.
04:38 Eroick am I right?
04:38 ayrnieu I'm not familiar with it.  Are you?
04:39 Eroick no
04:39 ayrnieu are you right, I mean.
04:39 ayrnieu randomly, http://www.perlmonks.org/?node_id=535873
04:39 Hamilton joined perl6
04:39 Eroick http://www.poniecode.org/, hey, I was right :)
04:39 Hamilton left perl6
04:41 ayrnieu the perl6 there is (not very) forward looking, in that it assumes a !broken loop and splice, and incidentally forward looking in that it assumes that perl6 is named 'perl'.
04:41 Eroick Im liking this 'everything is an object' idea à la ruby. It is one thing that python is really missing.
04:41 ayrnieu I see python as missing other things, but OK.
04:42 Eroick ayrnieu: yes, so do I, but that is one of them. One reason that I prefer ruby over python.
04:42 ayrnieu perl6 still has contexts, though, which makes direct ruby comparisons a bit interesting.
04:43 ayrnieu but my favorite ruby example, one which I came up all by myself years ago :-)  -- class Array; def rand; self[super length]; end end , translates to perl6 as: sub List::rand { @_[rand +@_] }
04:44 Eroick :)
04:44 ayrnieu (which, alas, I did not come up with all by myself years ago.)
04:44 Eroick i hope p6 brings more life back to perl. people have been drifting off to other languages.
04:45 ayrnieu *shrug*, perl5 does not seem undead to me.
04:45 Eroick its not undead, but it is less lively than it used to be
04:46 ayrnieu and of course people have been drifting off to other languages; it wasn't long ago that there were /no/ comparable languages, and even more recently thas those languages had relatively little going for them.  The whole world is more lively, now.
04:46 Eroick yep.
04:47 Eroick but, perl has cpan. the very very large swiss army knife which can do /almost/ anything and is constantly growing :).
04:47 ayrnieu CPAN, yes, and all of the (sometimes human) machinery that CPAN assumes.
04:50 Eroick will parrot run on mac/*nixs/w32?
04:50 ayrnieu I'm not familiar with Win32, and 'mac' is now 'unix' for many purposes.
04:50 jisom parrot is cross platform
04:50 ayrnieu will it?  Absolutely.  Does it?  I haven't cared enough about win32.
04:51 jisom it runs on darwin, linux, freebsd, openbsd
04:51 jisom http://smoke.parrotcode.org/smoke
04:51 jisom those are just reports in the past month
04:52 jisom even solaris!
04:52 Eroick school computers run windows. 'nuff said :)
04:52 Supaplex slowaris!
04:52 jisom but, no dos it seems, c'est la vie
04:52 Eroick wow, its a huge high res monitor! too bad it can only display black and white!
04:52 ayrnieu eroick - hm?
04:53 Eroick the old solaris needed very highres monitors to display a console
04:53 ayrnieu eroick - how hold?
04:53 Eroick before X.
04:53 ayrnieu how old is that?
04:53 Eroick hm
04:53 hamilton_ joined perl6
04:53 jisom isn't x from the 70's or something?
04:53 ayrnieu well, that's before Ultra2, which is the only generation I've recent experience of.
04:53 jisom i.e. really really really old
04:54 hamilton_ left perl6
04:54 Eroick yes. very old
04:54 jisom in computer terms anyway
04:54 jisom 1950 is ancient
04:54 ayrnieu complaining about unbelievably old Solaris (why even call it 'solaris'?) systems in the context of a casual reference to Solaris is a bit odd.
04:56 ayrnieu anyway, I'm more impressed by the HP-UX build -- an OS which its proprietor no longer supports (who tells people to move to linux.  See sun.com 'no!  come over here!' propaganda ^_^)
04:56 Eroick yes, it is. I just remeber that I knew someone who held on to one and we were playing on it. One insane monitor which could only be used for console, black and white.
04:56 jisom parrot aims to support any platform with ansi c....
04:56 Supaplex I sold off my hpux box last week
04:56 Supaplex *sniff*
04:57 Eroick i need to install linux on a computer. im thinking of using ubuntu, any suggestions?
04:57 jisom although MacOS 9 and below I don't think are used, ever....
04:57 jisom Eroick, www.freebsd.org :)
04:58 Eroick jisom: i never used BSD. want to convince me? :P
04:58 ayrnieu eroick - do so?
04:58 Eroick ayrnieu: you like ubuntu?
04:58 jisom decades of development and stability?
04:59 ayrnieu eroick - I don't dislike it, but I also don't use it.  I use OpenBSD and Solaris.
04:59 arcady ubuntu has a pretty good installer though
04:59 jisom install cd's include gnome and kde, there's a linux compatability layer
04:59 jisom you know freebsd will be around in ten years
04:59 Eroick jisom: why?
04:59 Eroick jisom: and what is the big differance?
05:00 arcady I don't like freebsd for their refusal to support powerpc
05:00 jisom ports collection, standard, stable
05:00 jisom then netbsd? :-p
05:01 jisom I hear it runs on a toaster, although I don't want a toaster with a computer chip
05:01 arcady netbsd runs on everything...
05:01 arcady badly
05:01 ayrnieu this in an OpenBSD/macppc system, on a mac mini.
05:01 Eroick OpenBSD vs FreeBSD... is there a big differance?
05:01 ayrnieu arcady - no, it runs well enough on sparc64.
05:01 ayrnieu eroick - yes.
05:01 jisom openbsd's focus is security above all else
05:02 Eroick and is it a compile everything type thing, or packaged?
05:03 ayrnieu both offer both.
05:03 jisom plus you either have to buy an openbsd or create your own iso....it's not too difficult(it's how I installed it)..but they have to make money somehow
05:03 ayrnieu jisom - that is not accurate.
05:03 jisom openbsd doesn't offer iso images
05:03 ayrnieu jisom - again, you are mistaken.
05:04 jisom last I checked, probably about a month ago, there weren't iso images
05:04 jisom 3.8
05:04 ayrnieu jisom - you checked mistakenly.
05:04 arcady wow, OpenBSD is actually distributed via AFS...
05:05 Eroick hmm. i still am not very sure why BSD varies from Linux (other than the kernel) any recomended reading?
05:05 ayrnieu OpenBSD.org does not distribute ISOs which incorporate pre-build packages and the system tarballs.  It does, however, distribute perfectly normal ISOs for installation by a number of methods.  The simplest way to get both packages and system tarballs and installation ISO on CD is to burn two CDs, although pages exist which explain the more involved process.
05:05 arcady Eroick the userspace is pretty different
05:05 jisom "CD-ROM: Of course, we prefer you use the Official CD-ROM set, but for special needs, you can also make your own." - http://openbsd.org/faq/faq4.html
05:06 arcady it uses BSD stuff, not GNU stuff
05:06 ayrnieu jisom - please stop; you're mistaken.  You don't have repeat your mistaken argument.  You could have restated it in a way which was not mistaken.
05:07 ayrnieu I generally net-install with the given cd*.iso and use the ports system, which (re: ports) I'd do anyway.
05:07 Eroick hm, I have a sandbox computer around here somewhere.
05:08 jisom Eroick, I can tell you for sure it's easy to dual boot openbsd and freebsd.....I just installed openbsd on one partition and freebsd on another and it was instantly dual booting
05:09 jisom surprised me
05:09 Eroick i think i will install it and try it out.
05:10 ayrnieu That is the best way.
05:10 jisom Eroick, since you're not familiar with bsd's, I don't recommend installing openbsd because it's installer isn't for beginners
05:10 jisom at least not at first
05:11 Eroick jisom: well, I have installed debian(s), gentoo, and some GUI stuff
05:11 f0rth joined perl6
05:11 rantanplan_ Hehe. But you can read the manpage of the install tools while installing. :).
05:11 ayrnieu amusingly, I think most highly of OpenBSD's installer, of all the Linux and BSD installers I've used.
05:11 jisom ayrnieu, it can be daunting, and when key lines of help text disappeared off my screen
05:12 jisom it's an expert installer more than a beginner installer
05:13 ayrnieu *shrug*, when I was a beginner (only redhad and (many-floppies-of:) slackware under my belt), I accidently had a very good experience with OpenBSD :-)
05:13 coumbes joined perl6
05:14 ayrnieu anyway, ubuntu is probably also fine.
05:14 Eroick heh, i have installed slack on a cd-drive-less computer
05:14 jisom eh, I had trouble partitioning the disk to allow dual boot, it didn't seem to want to let me format to split the hard drive and ignore the others.....but was able to partition in freebsd and then install openbsd
05:14 arcady I remember installing slackware before I had internet access
05:14 arcady many floppies that someone else had to make for me
05:15 ayrnieu jisom - ah.  I've never bothered with dual booting.
05:15 jisom I use it mainly just to build and test parrot...
05:15 Eroick does NDISwrapper work on FreeBSD? I need that
05:15 jisom what is it?
05:15 arcady probably not
05:15 arcady it's a hack to let linux use windows drivers
05:16 ayrnieu eroick - why do you need it?
05:16 Eroick a linux module that lets you use wifi cards for windows only on linux
05:16 arcady OpenBSD does claim to support rtl8180 cards
05:16 jisom the card may be supported by freebsd perhaps
05:16 Eroick ayrnieu: i have a USB wifi card
05:16 ayrnieu eroick - so do I, but mine doesn't need a windows driver.
05:16 Eroick netgear wg111
05:16 ayrnieu It helps to look at 'supported hardware' lists before buying things :-)
05:17 arcady problem is, they don't tell you what's actually inside the card
05:17 jisom silicon? :-p
05:17 arcady you know, like FooBaz Brand 5530 Ethernet Card
05:18 arcady could actually be 2 or 3 entirely unrelated products
05:18 arcady with completely different chips inside
05:18 Eroick prism chip inside
05:18 ayrnieu in any case, it doesn't seem that anybody knows about NDISwrapper.  #FreeBSD or a similar channel may help.  I'd suggest supported hardware.
05:20 arcady I am about 90% sure that NDISwrapper is a linux only thing
05:22 jisom freebsd 6.0 does have an ndis driver...
05:22 jisom http://www.FreeBSD.org/cgi/man.cgi?query=ndis&​amp;sektion=4&amp;manpath=FreeBSD+6.0-RELEASE
05:23 Supaplex ndis is hacktackular :)
05:40 K joined perl6
05:59 jisom joined perl6
06:03 binary42 joined perl6
06:22 szabgab left perl6
06:40 * audreyt praises freebsd-ndis (otherwise she wouldn't be using internet now)
06:56 * Kattana praises your inexorable effort
07:06 audreyt for setting NDIS up?
07:06 audreyt yeah, that took a while ;)
07:07 jisom have you backed up the work?
07:07 audreyt jisom: hm?
07:08 jisom for getting ndis working for you
07:09 audreyt er no, I just kept chasing kernel cvsups until I hit a level that has a good version of ndis -- and then save if_ndis.ko
07:09 audreyt and has been using it since
07:09 audreyt though recently if_iwi begins to work too
07:09 audreyt (but is 11b-only)
07:10 jisom whatever works
07:10 audreyt (and crashes when the network drop+reconnects)
07:10 audreyt (but otherwise works fine ;))
07:10 jisom eh, how's an isp that disconnects after nine hours?
07:11 ayrnieu hash context is hard.
07:11 audreyt jisom: very bad?
07:11 jisom extremely annoying
07:12 audreyt ayrnieu: container contexts are in general difficult to reason...
07:12 ayrnieu even 'my %a = %a.reverse' takes List::reverse
07:14 audreyt ?eval method Hash::reverse (Hash %x is rw) { ()} my %a = (:x); %a.reverse
07:15 ayrnieu evalbot died a little while ago, when I asked it to splice something.
07:15 audreyt how sad. resummoning.
07:16 ayrnieu ah, no, when I asked it to loop.  ?eval loop (my $i = 0; $i < 10; $i++) { say $i }
07:16 kisu joined perl6
07:17 audreyt fglock et al: I found the perfect solution to the p6-compiled-to-p5 file extension game!
07:17 audreyt perl6 modules should be .pm
07:17 audreyt starting with "use v6-pugs;"
07:17 audreyt the compiled perl5 code should live in the same filename
07:17 audreyt with a .pmc extension
07:17 audreyt with pure perl5 in it
07:17 audreyt and lo and behold, perl5 will load the .pmc before .pm.
07:17 audreyt ("perldoc -f require" for the spec)
07:18 audreyt it'd be v6.pm's duty to write the .pmc file.
07:18 audreyt isn't that handy? :)
07:18 jisom confusing if you work with parrot and it's .pmc files
07:18 audreyt perl5's .pmc predates parrot, though.
07:18 jisom yeah
07:19 Limbic_Region joined perl6
07:19 jisom I think it's mentioned once in one of the pods, and it surprised me when I first tried parrot that it used .pmc
07:19 Qiang-zh joined perl6
07:20 Qiang-zh ping audreyt
07:20 audreyt Qiang-zh: pong
07:20 Qiang-zh hey, you are back to tw now ?
07:20 audreyt no, still in .at
07:21 Qiang-zh oh, you think you can passby  beijing while you heading back for osdc tw? :)
07:21 audreyt well, I need to visit .jp first
07:21 audreyt what's the occasion in .cn?
07:22 Qiang-zh we are preparing a Perl conference in beijing 25th this month.
07:22 audreyt oh... YAPC::Asia is 29th
07:22 audreyt and I'd need to arrive by 27th I think
07:23 Qiang-zh hehe. yeah. i had the feeling that you have a tough schedule.
07:23 audreyt indeed... any details on the conference? url?
07:23 Qiang-zh no biggie. just thought i would ask anyway.
07:23 audreyt (it's just two weeks away)
07:23 Qiang-zh here.  http://xrl.us/kdg9
07:24 Qiang-zh i wasn't going to ask you knowingly that you have so many conf to go. but chunzi is asking about you so i am giving it a try :)
07:25 svnbot6 r9402 | audreyt++ | * move Rule.p6 to the real Rule.pm.
07:25 audreyt Qiang-zh: ok... then I probably couldn't make it. :/ perhaps if you asked a bit earlier..
07:25 Qiang-zh audreyt: yeah. no problem.  my bad that i didn't ask you earlier. well. untill YAPC::China  :-)
07:26 audreyt indeed :D
07:26 evalbot_9401 joined perl6
07:33 arcady ?eval loop (my $i = 0; $i < 10; $i++) { say $i }
07:33 evalbot_9401 is now known as evalbot_9402
07:33 evalbot_9402 Error: No such method in class Any: "&my"
07:33 arcady well at least it doesn't crash
07:34 ayrnieu ?eval my @a = <a b c>; splice @a, 0, 1000
07:34 evalbot_9402 undef
07:35 xinming joined perl6
07:36 Barry joined perl6
07:38 Barry Anyone know of an open source programmer's editor written in Perl besides open Perl IDE?
07:38 arcady I recommend you write one
07:38 arcady in perl 6
07:38 arcady : )
07:38 Barry Ok. Give me a couple of hours.
07:39 arcady actually, does perl 6 have any GUI bindings yet?
07:39 * Supaplex moans
07:40 Barry Why is *** moaning?
07:41 Supaplex wth is *** suppose to mean
07:41 Barry Probably something dirty, but you're apparently done.
07:42 audreyt Barry: EPIC allows pure-perl plugins
07:43 Barry I've looked at EPIC...don't remember anything. Better look again.
07:44 Supaplex instant perl editor: perl -e 'exec($ENV{EDITOR}||"vim",@ARGV)'
07:48 arcady or pugs -e 'exec(%ENV<EDITOR>||"vim",@*ARGV)' for that matter
07:50 ghenry joined perl6
07:50 Barry $695 for Epic...maybe I was thinking of Eclipse.
07:51 audreyt I mean epic.sf.net.
07:51 audreyt I mean
07:51 audreyt e-p-i-c.sf.net
07:51 ayrnieu class Buffer { has $.before; has $.after; method insert (Str $s) { $.before ~= $s }; method move_cursor (Int $i where $i < $.before.chars) { $.after = $.before.substr($i); $.before .= sustr($i) }; method move_cursor (Int $i where $i > $.before.chars) { $.before ~= $.after.substr(0,$i); $.after .= substr($i) }; method move_cursor (Int $i where $i == $.before.chars) {} }  # mumble mumble mumble
07:52 audreyt ~V~
07:52 audreyt # nullary hand-wavy operator
07:53 pmurias joined perl6
07:53 Barry Yeah, I though it was an Eclipse thing. I'm looking for something that could use a graphical, web based diff plug-in. Eclipse has a lot of stuff, but I'll see.
07:53 ayrnieu multi method
07:54 ayrnieu Eclipse is good because Java is bad.
07:55 arcady and how do you figure that one?
07:56 ayrnieu yow, was that a controversial assertion?
07:56 arcady i mean, how does one follow from the other?
07:57 arcady with the little I've seen of it, I don't really like eclipse as a text editor
07:57 audreyt it's probably not designed as a text editor
07:58 ayrnieu It's designed as something that makes Java feel less verbose.
07:58 ayrnieu So I imagine that it has all kinds of features, like autocompletion and introspection and refactoring wizards and code folding, to support this simple aim.
07:58 arcady yeah
07:59 arcady which are great and all
07:59 arcady but make it rather slow when all you want to do is write some java code
07:59 ayrnieu which are great and all in context of mindflaying verboseness.
08:00 ayrnieu but I'm neither a Java programmer nor an Eclispe user, and but the bearer of truisms, so you should ask #java for more propaganda.
08:01 ayrnieu oh, and Eclipse probably manages to write a surprising amount of code by itself.
08:01 Barry ...works up the courage to double click his Eclipse icon...
08:01 ayrnieu You can't have succint accessors, but you can generate comb-code very easily.
08:02 arcady so basically you end up programming in eclipse, rather than in java
08:02 arcady thus saving a bit of time
08:02 arcady and demonstrating that Java really wasn't meant for human consumption
08:02 arcady I wonder if it puts in exception declarations for you
08:02 ayrnieu oh, it'd have to.
08:03 Barry I think Java was meant for human consumption and Perl was meant for programmer consumption.
08:03 arcady that was probably the thing that annoyed me most about java
08:03 arcady no, i think java was not actually designed with users in mind
08:03 ayrnieu I think more of humans, Barry.
08:04 ayrnieu so, unstated XML analogy complete.
08:04 kanru joined perl6
08:05 arcady ah yes, "human" "readable"
08:05 Barry In the last Java discussion I heard, it sounded like Java is for businesses that want to play it safe, but it's not very flexible.
08:05 arcady well, businesses use it because they see other businesses using it
08:06 svnbot6 r9403 | audreyt++ | * p6prelude.p6: parse "use v6-pugs;".
08:06 svnbot6 r9403 | audreyt++ | * p6compiler.pl: all diagnostics messages go to STDERR.
08:06 arcady and it's not like java doesn't have its benefits
08:06 ayrnieu arcady - Java programmers, mainly.
08:07 Barry I just wish I had learned Java in high school instead of BASIC, and that Java was built into computers like the C-64. I'd have a bit more useful knowledge today.
08:08 ayrnieu It's not kind to wish hardship upon your past selves, Barry.
08:09 arcady I think the industry needs to standardize on a better language
08:09 arcady like, say, intercal
08:09 ayrnieu Java is not worse than intercal.
08:10 arcady I know
08:10 arcady but it would be amusing if people were convinced to use intercal anyway
08:15 * arcady goes to have some tea
08:21 svnbot6 r9404 | audreyt++ | * Pugs.Parser: parse for the magickal "use v6-pugs;" form.
08:21 Barry I opened Eclipse 2.1 after years of disuse, did an update check, and it found none, but said my preferences affect that. Couldn't find preferences, so I clicked help and Windows said Java 2 Standard Edition Binary is blocked. I chose not to unblock it. Maybe I'll uninstall Eclipse and install the latest version.
08:21 ayrnieu blocked?
08:22 Barry Yeah. Maybe I have an updated version?
08:22 svnbot6 r9405 | audreyt++ | * Pugs::Grammar::Rule - switch to 'use v6-pugs' for it; simplify .pmc generation.
08:22 ayrnieu I mean, what does it mean when windows 'blocks' something?
08:23 Barry I assumed it's not safe. That big Windows service pack update prompt you like that foe some things.
08:23 svnbot6 r9406 | audreyt++ | * rename the directory Pugs-Compiler-Rule to Pugs-Grammar-Rule to agree
08:23 svnbot6 r9406 | audreyt++ |   with the module.
08:24 Barry If I get the prompt after installing Eclipse again, I'll unblock it.
08:26 svnbot6 r9407 | audreyt++ | * Pugs::Grammar::Rule: add the generated Rule.pmc.
08:28 Barry But Eclipse is meant for real programmers, and the plugin I'm looking to add to something isn't that powerful, so I better look for a less technicall editor. Like for HTML.
08:29 Barry Something between Epic and TinyMCE.
08:31 ayrnieu On windows, you should probably consider Emacs or possibly UltraEdit.  Unless you'd like to start by writing one.
08:32 Barry And written in Perl, and good, with good documentation. Emacs has everything, doesn't it? My plugin is a graphical diff tool. Emacs is also too good for my plugin. Maybe UltraEdit.
08:32 Barry I'm sure I won't find exactly what I want, but that never stops me from trying.
08:33 svnbot6 r9408 | audreyt++ | * some POD sections for Pugs::Grammar::Rule
08:34 Barry Doesn't have to be for windows. I have access to a Unix server, from my website.
08:36 gaal morning
08:36 iblechbot joined perl6
08:37 mtve joined perl6
08:38 audreyt gaal: hey
08:39 svnbot6 r9409 | audreyt++ | * prepare to reorg Pugs::*::Rule for release
08:39 gaal lots of backlogging for very short time :)
08:41 Barry Can't believe I've been here for an hour already.
08:41 kane_ joined perl6
08:45 svnbot6 r9410 | audreyt++ | * move the iterator engine to Pugs::Runtime::Rule
08:45 svnbot6 r9411 | audreyt++ | * stubs: Pugs::Compiler::Rule, Pugs::Emitter::Rule::Perl5
08:45 pmurias Barry: what do you need the editor for?
08:47 svnbot6 r9412 | audreyt++ | * rename Pugs-Grammar-Rule back to Pugs-Compiler-Rule.
08:47 svnbot6 r9412 | audreyt++ |   yes, I'm practicing the art of changing-my-mind-faster-than-larry.
08:47 Barry I created a web-based graphical diff application that I want to turn into a plugin for something. A remote plugin...it will run from my server, so the tool it's plugged into has to be used with an internet connection. I like to be different.
08:48 gaal do we have the beginning of grammars for Perl 6? Apart from Rules themselves?
08:48 audreyt Pugs::Grammar::Perl6
08:48 audreyt gaal: a very primitive beginning at misc/pX/Common/lrep/p6prelude.p6
08:49 tcliou joined perl6
08:49 pmurias Barry: try vim it supports perl plugins(and python and ruby ones)
08:49 audreyt Barry: got a demo somewhere?
08:49 Barry I'd love to do it for Vim. I was scared that there's something better for Vim, but I'll look into it.
08:50 Barry audreyt: http://www.polisource.com/diffnote
08:51 pmurias if you want it fit for a statisitc win32-er you can turn the modality of in vim
08:53 gaal audreyt: thanks
08:53 Barry I installed gVim (graphical) a couple of years ago. I'll dust it off. I still use Windows Word Pad. Never felt like learning anything fancier.
08:53 ayrnieu vim also supports tcl extensions, or used to.
08:56 gaal is Pugs::Grammar::Perl6 in the source tree? where does it live?
08:56 pmurias any one here using the wmii window manager(www.wmii.de) ?
08:57 audreyt gaal: it lives in the future where the Common/lrep/ things are moved into perl5/
08:57 svnbot6 r9413 | audreyt++ | * chase the name change of Pugs::Runtime::Rule.
08:57 audreyt gaal: for example, perl5/Pugs-Compiler-Perl6
08:58 ayrnieu pmurias - no, but why?
08:58 audreyt gaal: but I'm getting the Rules part factored out and released first
09:00 gaal gotcha
09:00 pmurias just wanted to mention it as a counter balance to Word Pad, it would be cool to be able to extend it with perl6
09:00 pmurias though
09:00 ayrnieu ah.
09:01 audreyt gaal: I'm thinking that the v6-pugs pragma can be the catalyst of piecemeal migration
09:01 audreyt gaal: i.e. we should work on rationalizing VCode and Pad structure etc
09:01 audreyt and for Emit.Perl5 to output perl5 code (at this time more complete than the primitive lrep-based grammar)
09:02 audreyt so that we can write more complex parsing logic inside {return...} blocks for Pugs::Compiler::Perl6 (in perl6)
09:02 audreyt and let v6.pm invoke pugs.exe to compile it to Perl6.pmc
09:02 audreyt until a day where it can parse itself
09:02 audreyt then let v6.pm switch to that
09:03 audreyt and all code will remain working as-is
09:03 audreyt meanwhile, make a DrIFT.Perl6Class or something like that
09:04 audreyt to convert Hs data structures verbatim into p6 land
09:04 gaal I have to learn to use these new tools... /me goes to follow fglock++'s email to p6-l
09:04 audreyt and as such the yaml dump of intermediate structures (parse tree, objs) etc
09:04 audreyt can be shared among p5/p6/hs/pir/whatever lands
09:04 audreyt end of digression. back to coding
09:04 gaal oh, that should be relatively straightforward (I think?)
09:05 audreyt yup
09:05 audreyt for someone who knows how to use DrIFT, that is
09:05 audreyt :)
09:05 miyagawa hi audreyt
09:05 audreyt hi miyagawa-san!
09:05 miyagawa helllllo
09:05 miyagawa did you sort out the accommodation stuff for YAPC? :)
09:07 audreyt miyagawa: looking at shigetsu now
09:07 miyagawa oh, okay
09:08 audreyt still a bit expensive :/
09:09 miyagawa right :/
09:09 audreyt so I think still Dan's
09:10 miyagawa ok
09:11 miyagawa er, Japanese Sutie Y 26k
09:11 miyagawa that's expensive
09:12 * audreyt wonders if "use v6-pugs;" will be ready in time for YAPC::Asia
09:29 tuxxboxx joined perl6
09:30 xinming joined perl6
09:51 Barry left perl6
09:54 nothingmuch joined perl6
10:00 tuxxboxx joined perl6
10:01 arcady wow, what exactly is misc/pX/Common/lrep/p6object_space.p6 supposed to be?
10:02 arcady wishful thinking that someone will come along and fill it in?
10:04 tuxxboxx joined perl6
10:06 audreyt arcady: yeah, mostly a hint for stevan et al to fill in, iirc
10:06 audreyt brb
10:16 turrepurre joined perl6
10:37 larsen joined perl6
10:43 iblechbot joined perl6
10:45 tuxxboxx joined perl6
10:50 ruoso joined perl6
10:57 elmex joined perl6
11:07 clkao joined perl6
11:16 hlen joined perl6
11:17 * ruoso wonders if there is a xemacs init file for the code standards in pugs...
11:24 Aankhen`` joined perl6
11:37 svnbot6 r9414 | ruoso++ | now support reading a file from STDIN
11:39 * ruoso now working on how p6compiler.p6 would looks like
11:43 chris2 joined perl6
11:49 * ruoso will use a trick to bootstrap p6compiler.p6. Will use as many p5 modules as possible. So they can be rewritten in perl6 later.
11:50 audreyt yes!
11:50 audreyt pull in the whole CPAN!
11:51 audreyt (that way we will collect those module's authors as new pokemons)
11:51 audreyt I mean committers
11:54 ruoso audreyt, I'll use IO::File, so there will be no need to implement the rules for open or anything...
11:55 audreyt nod
11:56 ruoso audreyt, what do you think?
11:56 audreyt I think the more cpan modules the merrier
11:57 ruoso :)
12:02 gaal DrIFT.Perl6Class - representation of e.g. our ASTs? Is there a good way to represent Hs tagged unions in p6?
12:03 integral ["tag", $data]; given $foo.[0] { when "tag1" { ... } when "tag2" { ... } }
12:03 audreyt gaal: case classes
12:04 TimToady joined perl6
12:04 * gaal wants a way to patmatch those
12:04 audreyt gaal: S06 gives you a way.
12:04 audreyt using :() in rules
12:04 audreyt as well as multis
12:04 audreyt gaal: VInt VStr are classes; they all "does Val"
12:04 audreyt Val in turn does Exp
12:05 pmurias ruso: if you need any help in convincing fglock to increase the dependency could I'll be back in ~15min
12:05 pmurias :)
12:05 audreyt gaal: basically: make constructor into classes, and make types into roles
12:05 gaal that'd work, but it looks a little bass awkward
12:06 audreyt how so? surely VInt can become a Val?
12:06 gaal since in Hs a data type doesn't have to know some *other* type has it in a variant
12:06 audreyt er no, sorry for the punning
12:07 audreyt data Moose = M Oo | S Ee
12:07 audreyt M and S are classes; Moose is role
12:07 audreyt Oo and Ee has no knowledge of anything.
12:07 gaal okay, how do you represent
12:08 gaal data Alces = Moose Moose {- depun -} | Caribou Caribou
12:08 audreyt we use role/class duality
12:08 * nothingmuch bangs head on table
12:08 gaal read "Exp" for Alces and "Val" for Moose
12:09 audreyt Moose is now a class that can construct anything that does Moose into somthing that does Alces.
12:09 nothingmuch wrapper mc parsec represents class
12:09 gaal nothingmuch: MC really stands for Moose Caribou
12:09 nothingmuch http://www.seeklyrics.com/lyrics/​Lil-Jon/Put-Yo-Hood-Up-Remix.html
12:10 nothingmuch there's lots of representation in there
12:10 TimToady joined perl6
12:10 nothingmuch (googled for 'yo represent' ;-)
12:10 * nothingmuch goes back to fixing his address book
12:10 gaal so are we going to rap in YAPC::NA or what?
12:10 nothingmuch moral of this weekend: nnever EVER EVER EVER use a "cool" address book interface without first backing your address book up
12:11 gaal moral, golfed: 'grep'.
12:12 gaal audreyt: so, data constructors are factory methods in a Role?
12:13 gaal (is http://dev.perl.org/perl6/doc/design/syn/S06.html up to date or should I always use the svn version?)
12:13 audreyt gaal: factory methods in a design
12:13 audreyt s/design/class/
12:13 audreyt or rather, actually, just classes with infix:<as>
12:13 audreyt remember that
12:13 audreyt Foo(1,2,3)
12:13 audreyt is
12:14 audreyt infix:<as>(\(1,2,3), ::Foo)
12:14 audreyt i.e. the same as
12:15 audreyt (1,2,3) as Foo
12:16 DesreveR is now known as r0nny
12:16 gaal whoa. that's pretty deep
12:16 ruoso is "$arg1 = shift;" still a valid way of getting the command line arguments?
12:17 gaal ruoso: look in @*ARGS
12:17 audreyt unspecced, so currently not
12:18 gaal ruoso: there's a Getopt::Std module in ext/ you can use for basic stuff.
12:18 gaal migo and ran are working on a much better thing
12:20 gaal audreyt: so basically, (1, 2, 3) would have been Foo automatically if we had an inferencer; since we don't, we need to coerce manually
12:20 gaal ?
12:20 gaal (there's a missing application there)
12:20 ruoso gaal, I'll leave that to a second moment, for now I'll receive "inputfile" "outputfile" as parameters
12:21 audreyt gaal: no, Foo(1,2,3) is just a call to &Foo
12:21 audreyt gaal: it's just "class Foo" defines a ::Foo _and_ a &Foo
12:21 audreyt &Foo handles coercion toward Foo
12:21 audreyt in fact, maybe the default infix<as> will fallback to that.
12:21 gaal ruoso: sure, all I'm saying is that FWIW, you can have -i and -o too if you like.
12:21 gaal ruoso: not really advocating that :)
12:22 audreyt class Val { multi infix:<as> (VInt, Val) { ... } }
12:22 audreyt this may be generated as a factory
12:22 audreyt from DrIFT, or from p6land
12:23 ruoso gaal, I will, just not right now...
12:24 gaal the content of that multi being new :tag<VInt>
12:24 gaal oops
12:25 gaal new(:tag<VInt> :VInt<$x>)?
12:25 gaal or whatever representation we use?
12:27 audreyt yah.
12:29 gaal what representation lends itself to pattern matching a la integral's [$tag, $data] example above?
12:31 gaal has $tag; has $data; # and has nothing else?
12:32 audreyt thinking
12:32 kane_ joined perl6
12:33 audreyt I think it should be arglists all the way down
12:33 audreyt that is
12:34 pmurias is xgrammar2p6 for a tool that converts the xquery grammar from xml to p6?
12:34 audreyt data T = Nul | Pos A B | Rec { l1 :: X, l2 :: Y }
12:35 pmurias s/6 f/6 a good name f/
12:35 audreyt Rec(l1=>$x, l2=>$y) should just preserve the arglist
12:36 audreyt into "has X $.l1, has Y $.l2"
12:36 audreyt which can be matched using
12:37 audreyt multi f (Rec $r ( $l1, $l2 )) {}
12:37 ruz joined perl6
12:37 audreyt see "Unpacking tree node parameters"
12:37 audreyt S06
12:37 gaal okay. do we have fancy arglists in pugs already?
12:37 audreyt no. but this will be a great motivation to hack them in.
12:37 gaal (
12:38 gaal ("Argument list binding")
12:38 gaal k
12:38 audreyt you can start by modelling it as Hs data structures :)
12:38 audreyt now for Pos, we can settle on traditional numbering
12:38 audreyt $a $b $c $d
12:38 audreyt and match them likewise
12:38 gaal how do you model Nul? dummy var?
12:39 gaal s/model/match
12:40 svnbot6 r9415 | pmurias++ | a tool to convert the xquery grammar to p6
12:41 iblechbot joined perl6
12:42 audreyt class Nul {}
12:42 audreyt multi f (Nul) {}
12:42 audreyt will do
12:42 audreyt multi f (Rec ($l1, $l2)) {}
12:42 audreyt multi f (Pos ($a, $b)) {}
12:43 audreyt er I mean
12:43 audreyt mulfi f (Rec:($l1, $l2)) {}
12:43 audreyt (because we omit $r)
12:43 gaal class Nul does T
12:44 audreyt yup
12:44 gaal class T does what?
12:44 audreyt T is not a constructor
12:44 audreyt hence not a class
12:44 gaal HsishClass?
12:44 audreyt it's just dummy role
12:44 audreyt role T {}
12:44 gaal Role T is Hsish
12:44 audreyt yeah
12:44 gaal is TaggedUnion or something
12:45 audreyt right. but we don't need them at the moment
12:45 audreyt if the type names are not conflicting, we can pun
12:46 audreyt class Pos { has $.a; has $.b }
12:46 audreyt class Pos { has A $.a; has B $.b }
12:46 audreyt if there are two As
12:46 audreyt class Pos { has A $.a1; has A $.a2 }
12:46 audreyt perhaps.
12:47 audreyt makes sense?
12:47 gaal uh, where's the pun here?
12:48 audreyt data T = Con Int Int String Val
12:49 audreyt class Con { has Int $.int1; has Int $.int2; has String $.string; has Val $.val }
12:49 audreyt that's the pun
12:49 audreyt not sure if it works better than $.a $.b etc in practice or not.
12:49 audreyt or even $.0 $.1.
12:49 gaal ah, okay
12:49 audreyt has Int $.0; # now that's a charming thought
12:49 gaal it's less confusing than the Hs puns
12:50 gaal sufficiently less confusing that I was confused about where the pun was :)
12:50 audreyt :D
12:50 audreyt I take that as a compliment
12:51 gaal drafting up a simple transliteration of Exp
12:52 audreyt gaal++
12:52 audreyt I think modeling the core structures in Hs for the short term is still going to be a win
12:52 audreyt over modeling it in p5
12:52 audreyt and as such making Hs as the upstream and simply carrying the modelled result to p6/p5/pir would be a win indeed
12:53 gaal I forget, do we have nullable types?
12:53 gaal (Maybe Exp) => ?
12:54 audreyt in p6 everything is nullable
12:54 audreyt so we are forced to do
12:55 audreyt class Just { has Any $.a }
12:55 audreyt class Nothing {}
12:55 audreyt which really sucks :/
12:56 gaal class App { has Exp $.func; has Exp $.invocant; has Exp @.args; } # wrong, because of $.invocant
12:58 audreyt otoh, maybe we can ignore Maybe for now.
12:58 audreyt has Maybe[Exp] $.invocant; # correct translation, requires parameterized roles
12:58 audreyt wow, Rails runs on YARV.
12:59 audreyt YARV got there fast.
12:59 audreyt that's like, Catalyst runs on Parrot :)
12:59 gaal brb
12:59 nothingmuch is diff(ruby2.0, ruby) big?
12:59 audreyt nothingmuch: ruby2 is less well defined than perl6
13:00 audreyt nothingmuch: so nobody knows ;)
13:00 nothingmuch ah
13:00 audreyt try JS2 for some well-defined stuff :)
13:00 nothingmuch i thought YARV was for ruby 2
13:00 audreyt it is
13:00 audreyt but it's also for ruby 1.
13:01 audreyt because ruby people care about migration
13:01 audreyt :)
13:01 audreyt (also because its metamodel is considerably easier to port than perl5's.)
13:01 nothingmuch aye
13:02 chris2 nothingmuch: the changes will be far less than p5->p6, but significant and require fixing code
13:03 audreyt that reminds me. I need to invite sasada over to the YAPC::Asia hackathon.
13:03 audreyt now that matz and takahashi will already be there.
13:04 * audreyt goes mail-writing
13:04 chris2 wow
13:04 nothingmuch ciao
13:04 * nothingmuch goes to amuse his sister
13:15 nothingmuch audreyt: please tell balas that the Amazing Toy For 21st Century is Bringing [my sister] Sci Fi Fun!
13:19 audreyt nothingmuch: done. we are glad to hear it!
13:23 nothingmuch our cat scratched it though
13:23 nothingmuch so it's now taped
13:23 nothingmuch and slightly leaky
13:24 nothingmuch (has to be refilled daily)
13:24 audreyt which adds to the fun?
13:25 nothingmuch uh
13:25 nothingmuch not really ;-)
13:25 audreyt aw ;)
13:25 nothingmuch it's life expectancy is not that big, i guess
13:25 * nothingmuch was hoping to go to the local cheap-crap store and filling it with helium
13:26 nothingmuch oh
13:26 nothingmuch bah
13:26 nothingmuch she just showed me a hole the size of a foot
13:26 nothingmuch =(
13:27 nothingmuch okay, please tell balas that the amazing toy for 21st century is no longer going to bring my sister sci fi fun
13:27 audreyt ...done.
13:27 audreyt though you can perhaps still patch it up
13:27 audreyt but with ongoing cat presence
13:27 audreyt maybe ultimately futile
13:27 nothingmuch hole size of foot == no go
13:27 nothingmuch will upset the balance
13:27 nothingmuch and it's hard to find a good adhesive
13:27 audreyt nothingmuch: balas would like to remark that she is glad that your _cat_ had sci fi fun.
13:27 nothingmuch heh
13:28 nothingmuch it was more territorial than sci fi ;-)
13:28 nothingmuch his personality is very much like foo's
13:33 nothingmuch seen bsb?
13:33 nothingmuch oh shucks
13:33 * audreyt starts SEE hacking with ingy on pmc.pmc
13:34 audreyt (the module that enables v6.pm magic)
13:34 whiteg_xen joined perl6
13:34 LeTo audreyt: .pmc is confusing (for parrot folks at least:)
13:35 audreyt LeTo: it's in use since 1999 :)
13:35 ingy in non-use since 1999 :p
13:35 ingy er... in no since 1999 :D
13:36 saorge joined perl6
13:36 audreyt LeTo: after this session I'll go find you and hack on pugs.pmc
13:36 audreyt the _other_ pmc
13:36 ingy whiteg_xen: did you install postgres on xen1?
13:37 whiteg_xen ingy: no, I didn't do anything on xen1
13:37 * whiteg_xen is using **** gprs
13:37 nothingmuch hola ingy
13:38 ingy whiteg_xen: ok
13:41 audreyt ( SEE session at see://freepan.org/ )
13:43 * nothingmuch joins for fun
13:46 dolmen joined perl6
13:47 * nothingmuch continues Blondie in Haskell
13:48 audreyt have fun :)
13:48 nothingmuch danke
13:51 nothingmuch ooh
13:51 nothingmuch dad thinks he fixed the tear
13:53 xinming http://wiki.freepan.org/
13:54 xinming How can the spammer work so hard? :-S
13:54 xinming s/hard/fast/
13:55 nothingmuch fast, hard - it's all the same to those spammers ;-)
13:58 fglock joined perl6
13:59 * stevan loves the fact that all the part of Perl 6 will end up on CPAN
14:00 fglock audreyt: I've added some things to Pugs::Grammar but I don't have time to merge right now :(
14:00 audreyt fglock: that's ok
14:01 nothingmuch i wish the world had a volume button
14:01 fglock audreyt: I merged p6rule_lib into the grammar, it is no longer needed
14:02 nothingmuch crap
14:02 nothingmuch i just tried to use it too
14:02 fglock later... &
14:02 * nothingmuch turned down his laptop's volume
14:02 fglock left perl6
14:08 stevan audreyt++ ingy++ # the smell of crack smoke is in the air
14:08 ingy :p
14:09 stevan pmc++ very cool (your's too LeTo :)
14:09 * stevan has to go fetch bagels or his children will revolt
14:09 rantanplan_ joined perl6
14:09 stevan audreyt: I will start doodling some in p6object_space.p6 sometime today
14:10 audreyt stevan: excellent
14:10 stevan ingy: my Moose will beat up your Spiffy,.. (ask nothingmuch for more info)
14:10 ingy :)
14:10 * stevan dashes off &
14:12 nothingmuch Spiffy Moose
14:16 nothingmuch audreyt: i was losing my concentration
14:17 nothingmuch so instead i tried to make a cleaned up parse tree thing for fglock
14:27 ingy nothingmuch: m00z3
14:27 nothingmuch ingy: oh come on, i was not serious
14:27 nothingmuch i was actually going to make a real comment
14:27 ingy neither was I ;)
14:37 * nothingmuch retires from conv
14:37 nothingmuch not enough concentration-fu
14:45 pmurias fglock: It there anything I could do help the move to the new layout?(which dosn't require much project vision)
14:45 pmurias fglock: It there anything I could do help the move to the new layout?(which dosn't require much project vision)
14:45 pmurias fglock: It there anything I could do help the move to the new layout?(which dosn't require much project vision)
14:45 pmurias /exit
14:45 wolverian um..
14:45 audreyt wow
14:45 pmurias joined perl6
14:46 * wolverian pokes pmurias
14:46 Khisanth joined perl6
14:46 pmurias sorry, the irc client mefunctioned
14:47 pmurias again :)
14:48 nothingmuch audreyt: ?
14:50 audreyt hm?
14:50 nothingmuch what was the wow aabout?
14:50 nothingmuch actually, neverkmind
14:50 nothingmuch i can't bring myself into listening to anything
14:50 nothingmuch off to drown myself in the shower
14:53 * audreyt considers the slogan "deploying source filters without the user knowing about it" for pmc.pm
14:54 * audreyt ponders real macros for p5 (via MAD or PPI) using a filter supporting q:code and {{{}}}
14:55 nothingmuch the problem is that they're parse trees
14:55 beppu_ joined perl6
14:55 nothingmuch == more special cases to deal with
14:56 szabgab joined perl6
14:56 audreyt MAD is actually the optree
14:56 nothingmuch oh, right
14:57 nothingmuch with syntax annotations, right?
14:57 audreyt yup
14:58 szabgab ppl: what do you think about setting up a beginner mailing list for perl6 on http://learn.perl.org/ ?
14:59 audreyt very good idea!
15:00 nothingmuch szabgab: i'll help out
15:00 pmurias joined perl6
15:00 szabgab is any of the perl.org admins here or shall I send a message to Ask ?
15:01 audreyt don't ask, just ask ask :)
15:01 szabgab err I did mean to Ask :)
15:01 szabgab what name do you suggest for the mailing list ?
15:02 integral perl6-beginners?
15:02 szabgab integral: that's probably the right name
15:03 nothingmuch FUCK!!!!!!!!!!!
15:03 nothingmuch fucking vim
15:03 nothingmuch at least it has .swp files
15:04 audreyt just lost a year's worth of work? :)
15:04 nothingmuch no
15:04 nothingmuch just almost lost an hours worth of non work
15:05 nothingmuch my brain is not functioning
15:05 nothingmuch and despite almost nil progress I still felt like i couldn't redo it
15:05 pasteling "nothingmuch" at 82.81.247.180 pasted "# some desugaring for a simple" (155 lines, 4.8K) at http://sial.org/pbot/16254
15:05 nothingmuch eek
15:05 nothingmuch why does pbotutil take the first line instead of the filename as a desc
15:05 nothingmuch anyway
15:05 nothingmuch this is the beginings of a non parse level AST for Perl 6 programs
15:06 nothingmuch please comment somehow
15:06 nothingmuch but i won't be here to read /msgs etc
15:10 hlen_ joined perl6
15:45 dolmen joined perl6
15:46 audreyt joined perl6
15:52 avar joined perl6
16:14 justatheory joined perl6
16:15 nothingmuch joined perl6
16:16 nothingmuch moosen
16:16 ingy !
16:16 nothingmuch Spøøne
16:16 nothingmuch Spørk Spørk Spørk!
16:16 ingy döt
16:19 * nothingmuch wonders if his torrent picked up
16:19 nothingmuch and how risky it is to watch BSG in the bathtub
16:21 TimToady Pø̈
16:22 TimToady Pø̈rl
16:22 ingy hi TimToady
16:22 * TimToady likes combining characters...
16:23 ingy audreyt has started me down a path sufficiently evil...
16:23 TimToady That should have come out as a slashed o with an umlaut.
16:23 nothingmuch isn't the order ¨ø ?
16:23 nothingmuch hmm
16:24 TimToady combining characters always follow in Unicode.
16:24 nothingmuch ah, didn't know
16:24 TimToady my evil thought for the day:
16:24 nothingmuch so MacOS's convention of combining first is kinda silly?
16:24 TimToady sub main ($a, $b, :$switch, *@files);
16:25 TimToady note semicolon.
16:25 nothingmuch TimToady: see also Migo and Ran's work on Getopt
16:25 TimToady nothingmuch: both conventions are silly.
16:25 audreyt TimToady: we already started on a sigs-based getopt
16:26 TimToady Yes, but do you have a syntax for turning the entire file into a sub?
16:26 nothingmuch TimToady: should that really be a special case?
16:26 TimToady I was just looking at some code with @*ARGS and thinking how ugly that was...
16:26 nothingmuch could we just write a macro to specialize $?SUB in the main body?
16:26 TimToady not a special case if sub is in the same category as module or class.
16:27 audreyt TimToady: yes I do
16:27 audreyt # in main.p6
16:27 nothingmuch even so, that dirties up the macro i think
16:27 nothingmuch i think that much mroe useful would be a meta api to get at the code ref to main()
16:27 nothingmuch whatever it may be
16:27 audreyt module Main;
16:27 audreyt is signature($a, $b);
16:27 audreyt done!
16:27 nothingmuch and then add a signature to that
16:27 nothingmuch err, like that =)
16:28 TimToady multi main (:$foo, :$bar);
16:28 TimToady (just call some main that matches my args...)
16:28 nothingmuch TimToady: see also Getopt::Process which can coerce an argument list into subroutine arguments
16:28 nothingmuch but not consolidate nicely
16:29 nothingmuch that logic is already written =)
16:29 nothingmuch isn't that multi *main, btw?
16:29 TimToady I spose.
16:30 audreyt TimToady: why "main"?
16:30 audreyt why not just the module itself?
16:30 TimToady hysterical raisins
16:30 nothingmuch i have an idea
16:30 nothingmuch every package has a special named subroutine
16:30 nothingmuch that is just it's body
16:30 audreyt nothingmuch: the name is &::('') in my mind
16:31 TimToady sub (*%switches);
16:31 nothingmuch i think so too
16:31 nothingmuch either that or ::main
16:31 jdv79 joined perl6
16:31 nothingmuch or __main
16:31 nothingmuch if we're going for that feel ;-)
16:31 jdv79 if i would like to use p6 rules in p5 - what of it?
16:31 TimToady s/__/{die}/
16:31 nothingmuch then we &*main ::= &::('');
16:31 nothingmuch and we get DWIM semantics for that bit
16:32 audreyt jdv79: wait a few hours and start using re::override-perl6
16:32 jdv79 fabulous!
16:32 jdv79 will do, thanks:)
16:32 audreyt see perl5/Pugs-Compiler-Rule and misc/pX/Common/regexp_engine_demo.pl for now
16:32 audreyt they need to be packaged a bit
16:33 * nothingmuch swears that no couch worth less than $1000 will ever enter his house when he grows up
16:33 TimToady I don't want someone to have to lean a different syntax for processing args to the main program than to a normal binding, at least for ordinary arglist processing.  $*ARGS is always available.
16:33 TimToady *learn
16:33 nothingmuch we have a crap sofa and I can't comfortably sit on it for than 15 minutes
16:34 nothingmuch okay, in that case isn't it 'proto' ?
16:34 nothingmuch proto *main (...)  after &*main ::= Main::('') gives you that, right?
16:35 TimToady Are you suggesting that mere mortals have to write that?
16:35 ingy nothingmuch: you really planning on growing up?
16:35 nothingmuch ingy: yes, in about 30 years
16:35 nothingmuch actually, pretty soon
16:35 ingy sad :(
16:36 * nothingmuch is moving abroad
16:36 nothingmuch sick of israel
16:36 audreyt TimToady: ok, so any module can serve as a main program as long as it has some sort of &main defined
16:36 ingy let's pair up
16:36 nothingmuch i don't think i'm crazy enough for .tw ;-)
16:36 TimToady maybe.  It'd be nice to serve mains up from that end too.
16:37 nothingmuch audreyt: i think a cleaner variant is to add multi variants to Main::('')
16:37 nothingmuch audreyt: i think a cleaner variant is to add multi variants to &Main::('')
16:37 audreyt nothingmuch: right, and the logical syntax is
16:37 audreyt multi module Main (...) {
16:37 audreyt }
16:37 audreyt multi module Main (...) {
16:37 audreyt }
16:37 audreyt ;)
16:38 nothingmuch oh dear me
16:38 Juerd .oO( multi grammar )
16:38 nothingmuch that mushes up two modules, and combines all their subs as variants
16:38 audreyt er no, not really
16:38 nothingmuch Juerd: it's very simple, actually... all the methods of a grammar are just things operating on $?SELF as a sort of curer
16:38 audreyt it just let the main body sub take args.
16:38 nothingmuch audreyt: that was a question, actually
16:38 TimToady no, I think it's just multi main in Main package, and multi Main::main elsewhere.
16:38 nothingmuch just missed the question mark
16:38 nothingmuch ah
16:39 nothingmuch Juerd: then the only args they normally get are rules
16:39 nothingmuch so you could in theory make a multimethod +
16:39 audreyt TimToady: I agree with you, I'm just trying to show the logical end of nothingmuch's line of thought and how strange it is
16:39 nothingmuch that optimizes simple subrules
16:39 nothingmuch and a general one for any rule
16:40 nothingmuch and implement that with multi rule &whatever_category_its_in:<+>
16:40 Juerd nothingmuch: Please - discard my remark :)
16:40 nothingmuch Juerd: it's actually very practical =)
16:40 nothingmuch and useful
16:40 nothingmuch think
16:40 audreyt TimToady: in Haskell, you can have a test.hs that goes
16:40 TimToady so 'sub main' and 'proto main' would be valid variants in Main.
16:40 nothingmuch a+
16:40 audreyt module Test where
16:40 audreyt main = print "Hello"
16:40 nothingmuch vs <something_hairy>+
16:40 audreyt and if it's run as the main program
16:40 nothingmuch we know how to make 'a+' more efficient
16:40 audreyt it will use Test.main instead of Main.main as the entry point
16:41 TimToady module Test :main{ say 'howdy' };
16:41 audreyt TimToady: but then, hs doesn't have the .pm/.pl distinction
16:41 audreyt so maybe Main is still good (for .pl) and .pm are named as non-main
16:42 TimToady well, at least we know whether we were execed or used.
16:42 nothingmuch audreyt: also, haskell doesn't have any exprs that aren't bindings/decls at the top level
16:43 audreyt yeah... but this concerns the Main::main generation. if I run Test.pm as my main program
16:43 audreyt Test::ok doesn't somehow become Main::ok
16:43 nothingmuch ofcourse not
16:43 TimToady I think if you run a module Test we can look for Test::main to run...
16:43 audreyt but Main::main will dispatch to Test::main
16:43 * nothingmuch ponders
16:43 audreyt and failing that, &('Test::')
16:43 nothingmuch where do we use the name 'main'
16:43 nothingmuch event loops
16:44 nothingmuch objects with one action
16:44 nothingmuch bad code (C written in Perl)
16:44 Juerd nothingmuch: do_one_loop
16:44 Juerd Oh, you had event loops already
16:44 TimToady A lot of P5 code currently has 'sub main'
16:44 audreyt TimToady: so
16:44 audreyt # test.p6
16:44 integral TimToady: not necessarily *good* P5 code that should be copied
16:44 audreyt sub main { say "Hi" }
16:44 audreyt say "ho!"; # never said?
16:44 TimToady have to translate it though.  end up with 'sub main_' or some such...
16:45 Juerd TimToady: I speculate that most of that is because they like main-before-subs, where you need a block to keep lexicals from leaking into the rest.
16:45 Juerd And if you have a block, it's good style to name it. This is only rarely done with labels.
16:45 TimToady We could detect if the only thing outside the sub is the call, and optimize it away.
16:45 Juerd I think claiming "main" is a bad idea.
16:45 Juerd There must be a better word
16:45 Juerd Or even symbol?
16:45 audreyt Main ;)
16:46 audreyt since we are already renaming ::main to ::Main ;)
16:46 Juerd Main is better
16:46 Juerd But maybe just _?
16:46 nothingmuch TimToady: yes, but 99% of the time it's along side  'main(@ARGV)'
16:46 nothingmuch i'm tryhing to think where this might conflict
16:46 nothingmuch with the 99% approach
16:46 nothingmuch test... test....
16:46 audreyt Juerd: no, _() is gettext()
16:46 Juerd _ is weird in Perl 5 anyway.
16:46 nothingmuch bah
16:46 nothingmuch network nearly died
16:46 TimToady magically called sub should be MAIN...
16:46 Juerd audreyt: Bah; But true.
16:46 Juerd TimToady: ++
16:46 Juerd AUTO? ;)
16:46 audreyt TimToady: so if I have
16:47 audreyt # Test.pm
16:47 audreyt module Test;
16:47 audreyt say "hi";
16:47 audreyt does Test::MAIN automatically get bound?
16:47 audreyt as {say "hi"}
16:47 TimToady why not?
16:47 audreyt well
16:47 Juerd Ahh, goto &MAIN;  # like basic's run
16:47 audreyt module Test { say "hi" }
16:47 audreyt module Test { say "ho" }
16:47 nothingmuch audreyt: any comment about the nopaste, btw?
16:47 audreyt concatenated together?
16:48 audreyt (the "multi module" problem)
16:48 Juerd audreyt: sub MAIN { { say "hi" } { say "ho" } }
16:48 audreyt Juerd: that's what I mena by concat
16:48 TimToady error unless "is mumble"...
16:48 audreyt yeah, "is reopen"
16:48 audreyt "is extended"
16:48 audreyt but the semantic is to concat?
16:48 Juerd TimToady: But open classes etc were default, right?
16:48 TimToady yeah, whatever it was...
16:49 TimToady but you still have to say that you're reopening it, to prevent accidents.
16:49 Juerd I see
16:49 audreyt Juerd: they were. under ./pugs -o (which closes classes), "is reopen" would be fatal
16:49 audreyt I mean -O
16:49 audreyt -Ofin # finalize classes
16:49 TimToady there's also 'is instead' to say that you're replacing it.
16:49 Juerd "is okay("Just do it")"
16:49 Juerd ;)
16:50 Juerd TimToady: Why not use self-documenting "is replacement"?
16:50 audreyt TimToady: "is also"?
16:50 Juerd audreyt++  # I like is also
16:50 audreyt sub MAIN is also { say "run this after the body" |
16:50 TimToady Yeah, that seems like the one I like most often..
16:50 TimToady yikes.
16:51 audreyt TimToady: btw, :COMPILING turning off hygeine worksforme. should I just commit to S06?
16:51 nothingmuch so the is also trait is like adding a wrapper
16:51 nothingmuch that basically does 'call; ....'
16:51 Juerd audreyt: END == sub MAIN is also?
16:51 audreyt Juerd: nope; END runs even if you dies
16:51 audreyt different control step
16:51 Juerd Oh, right
16:51 nothingmuch what's program global UNDO then?
16:51 audreyt same thing
16:52 TimToady just a sec--i have some damian edits to commit first..
16:52 audreyt TimToady: ok
16:52 nothingmuch UNDO is per block though
16:52 audreyt the main program is a block
16:52 nothingmuch right
16:52 nothingmuch but you don't always get access to that
16:52 audreyt why not?
16:52 nothingmuch if you have a module, that is creating a structure
16:52 nothingmuch that needs to be cleaned up
16:52 nothingmuch well, what do you do?
16:52 audreyt to be cleaned up... when?
16:52 audreyt at program exit?
16:53 nothingmuch &*MAIN.meta.pad.get('@*UNDO').push(sub { });
16:53 nothingmuch yes
16:53 nothingmuch due to die
16:53 nothingmuch or rather fail
16:53 bsb joined perl6
16:53 audreyt well, easily
16:53 audreyt sub Main::MAIN is also { UNDO { ... } }
16:53 nothingmuch bsb: messaged you on perlmonks
16:53 nothingmuch oi
16:53 TimToady audreyt: k, s6 free
16:53 nothingmuch right
16:54 audreyt actually, bsb is here...
16:54 bsb hey nothingmuch
16:54 gaal remoose
16:54 bsb what did I do?
16:54 Juerd Is it okay to use "is instead" on the *first* definition?
16:54 TimToady 'sub is also' looks an awful lot like what p5 is doing internally with CHECK blocks, etc. except that we need 'is prealso'.
16:54 nothingmuch bsb: your resume's capoeira link goes to a "free porn" link farm
16:55 audreyt bsb: have cycles to create a patch to S06 that says hygeine is assumed (implicit scope around q:code) unless you say :COMPILING ?
16:55 audreyt that's the saner option I have for hygiene
16:55 audreyt the insane option is to encourage use of macro-scoped lexicals as containers ;)
16:56 audreyt macro f { my $x; q:code/ $x = ... / }
16:56 Juerd TimToady: "is also :before"?
16:56 audreyt "is butfirst" of course ;)
16:56 TimToady I guess most of the BEGINish blocks are 'is (pre|post)also'
16:56 audreyt </troll>
16:56 nothingmuch audreyt: the lexical scopes of 'is also' are not fudged though, right?
16:56 TimToady 'is first' is taken...
16:57 nothingmuch s/fudged/mashed/;
16:57 Juerd Is there a specific reason for having "before" in rules, but "pre" outside them?
16:57 nothingmuch &*MAIN.=wrap(sub { .... }); ?
16:57 Juerd (Maybe that "before" is an assertion, while "pre" is not?)
16:57 audreyt sub foo { BEFORE { ... }; AFTER { ... } }
16:57 audreyt just doesn't quite read correctly
16:57 nothingmuch is that what the trait is doing?
16:57 Juerd audreyt: I think it does. I read it just the same as PRE/POST
16:57 nothingmuch or is it really combining the bodies?
16:58 Juerd nothingmuch: Maybe a sub is really an array of subs :)
16:58 audreyt sub foo { BEFORE { this; } AFTER { that; } body; }
16:58 Juerd If so, we should be able to splice it. Oh my.
16:58 nothingmuch Juerd: you mean a matrix....
16:58 audreyt Juerd: what's the sequence? that-body-this?
16:58 Juerd nothingmuch: Perhaps.
16:58 audreyt or this-body-that?
16:59 Juerd audreyt: this-body-that, but your point is a very good one.
16:59 Juerd "before" and "after" beg for a grammatical object
16:59 TimToady with most of our BEGINish blocks, the block itself determines whether it should be pre'ed or post'ed.  So maybe 'is also' should just tell the block and let the block decide.
16:59 Juerd "pre" and "post" don't have this, because they're not English.
16:59 TimToady can always .wrap if you want better control.
16:59 Juerd They don't feel natural anyway, and that's the property that is (ab?)used here.
16:59 Juerd Okay :)
17:00 audreyt stevan: any/bit/int/num/str are in parrot now
17:00 TimToady Every CHECK/INIT/FIRST/ENTER/UNDO is 'is also'
17:00 stevan audreyt: nice
17:00 audreyt nil/sub/seq/map/obj next
17:00 stevan cool
17:00 audreyt parrot is very annoying in that it thinks all values are also containers
17:00 Juerd TimToady: is CHECK/INIT/... an argument for "also"? (is also("CHECK"))
17:00 audreyt so I need to disable all mutators
17:00 audreyt otherwise
17:01 audreyt 1++; # always succeeds
17:01 audreyt # and changes the idea of 1 elsewhere!
17:01 stevan audreyt: I am fudging a p6metamodel_bootstrap.p6 right now
17:01 Juerd audreyt: readonly
17:01 * audreyt considers it utterly broken
17:01 Juerd audreyt: In Perl 5, a "value" is also always a container, but with the readonly flag.
17:01 stevan :D
17:01 nothingmuch in python does 1++ cause all 1s everywhere to be a 2?
17:01 nothingmuch ;-)
17:01 Juerd audreyt: Interesting things happen if you make "undef" writable, changing the definition of undef.
17:01 bsb audreyt: I'll try to write a hygiene note of S06
17:01 Juerd Undef can be defined.
17:01 audreyt Juerd: bsb danke
17:02 Juerd (What's bsb?)
17:02 audreyt er
17:02 audreyt bsb: danke
17:02 audreyt Juerd:
17:02 TimToady ohh a ghostghostwriter.
17:02 audreyt yeah, parrot just took the SV idea
17:02 audreyt metaghostwriter
17:02 audreyt Juerd: I think the SV idea is unsound really, because it prevents "1" to be shared.
17:03 Juerd audreyt: The SV idea is useful when you *want to* override literals. Though you could quite easily argue that that is always a bad thing.
17:03 audreyt when you autobox "1" twice, you get two SVs
17:03 stevan audreyt: do you have a moment to discuss object space primatives for lrep?
17:03 audreyt Juerd: there are cleaner way to override literals _lexically_
17:03 Juerd audreyt: I guess so.
17:03 audreyt macro term:<1>
17:03 audreyt is the way
17:03 nothingmuch audreyt: but if it's unshared then the value can have a pointer to it's box cached, right?
17:03 Juerd That's nice
17:04 audreyt nothingmuch: well yes, but neither p5 nor parrot can do that
17:04 GabrielVieira joined perl6
17:04 nothingmuch right
17:04 audreyt also it results in different
17:04 audreyt 1.id
17:04 nothingmuch just a semantics question
17:04 audreyt values
17:04 audreyt across program runs
17:05 Juerd http://userfriendly.org/  # Applicable to Perl 6? ;)
17:05 audreyt compare ruby, which always has 1.id at 3 :)
17:05 TimToady "Everything is an object" :)
17:05 audreyt Everything.isa(Object)
17:05 TimToady given P6 Everything.does(Object)
17:06 Juerd audreyt: As long as two different $foo and $bar that happen to both contain 1 have their .id equal, it's fine with me :)
17:06 TimToady given P6 { Everything.does(Object) }
17:06 stevan Object.isa(Everything) # metacirculatiry :)
17:06 Juerd Just please don't have Python's foo = 2; bar = 1+1; foo == bar
17:06 nothingmuch Juerd: but their IDs don't equal
17:06 audreyt Juerd: yeah, that is not quite easy to do in parrot. I'm still thinking about it
17:06 Juerd eh, foo.id == bar.id
17:06 nothingmuch i mean, it makes no sense
17:06 nothingmuch they're not the same
17:06 Juerd Because containers are incredibly useful :)
17:06 Juerd nothingmuch: Agreed. Tell Python, though :)
17:06 nothingmuch they just map to the same value
17:07 audreyt Juerd: well, variable($foo).id and variable($bar).id would be different
17:07 nothingmuch Juerd> audreyt: As long as two different $foo and $bar that happen to both contain 1 have their .id equal, it's fine with me :)
17:07 nothingmuch didn't you just contradict yourself?
17:07 audreyt but larry has this axiom that $scalar.method never dispatches to the container.
17:07 Juerd audreyt: Eh, hm, ...
17:07 Juerd I have to think about that.
17:07 TimToady There are times you want identical values to be distinguishable, and times you don't...
17:07 audreyt since you can always get the container with variable($foo)
17:07 nothingmuch err... in that case how do &infix:<=>, &infix:<:=> etc work? or are these back to being special cases?
17:07 audreyt which is btw special form.
17:08 audreyt nothingmuch: they desugar with variable() semantics
17:08 audreyt $foo = 3
17:08 nothingmuch how can I declare a variable() desugarer?
17:08 audreyt variable($foo).infix:<=>(3)
17:08 Juerd nothingmuch: I meant unequal :)
17:08 nothingmuch Juerd: oh
17:08 audreyt nothingmuch: you use the "is rw" trait.
17:08 nothingmuch =)
17:08 nothingmuch audreyt: oh
17:08 nothingmuch so same thing ;-)
17:08 audreyt subtly different though :)
17:08 Juerd Can we rename variable to container?
17:09 Juerd Variable has always been an exeedingly confusing word.
17:09 nothingmuch how do implicit variable($x) and $x compete in multimethods?
17:09 TimToady The point of eqv^H^H^H=== is to give you the 'values equal for value types, ids equal for object types' semantics.
17:09 TimToady use =:= if you want the other thing.
17:09 Juerd TimToady: Wasn't everything an object?
17:09 nothingmuch i thought that ids equal for object types unless objects compare themselves in a silly way?
17:10 TimToady Juerd: you missed the quotes... :)
17:10 Juerd TimToady: No, I just don't get the difference between value and object...
17:10 TimToady and the s/is/does/ :)
17:10 TimToady A value is an object that wants to pretend that it's a value.
17:10 Juerd TimToady: values are unreferenced?
17:10 TimToady Like the 3 object.
17:10 Juerd (In perl 5 jargon)
17:10 nothingmuch as in, multi &infix:<===> (Str, Str) and Num Num, and whatever are just defined in the prelude to not work on .id
17:11 nothingmuch and &infix:<===> (Object $x, Object $y) { $x.id === $y.id }
17:11 pasteling "gaal" at 192.115.25.249 pasted "Example transliteration of Exp" (50 lines, 1.5K) at http://sial.org/pbot/16255
17:11 TimToady One could say that the value types are the ones that define infix:<===>.
17:11 Juerd Ah
17:12 Juerd Do I understand it correctly if I think that Str, Int, Num are value types, but LWP::UserAgent would be an object type?
17:12 TimToady I think infix:<===> is also related to the mystery of what you can use as an "untyped" hash key.
17:12 gaal oh, another question re: transliteration: do we use qualified names? Pugs::AST::Internals::Exp, etc.?
17:12 Juerd And which would Array be?
17:12 Juerd fsck; afk.
17:13 TimToady except historically hashes have forced to type Str.
17:13 nothingmuch TimToady: i think that can't work except as a convention
17:13 TimToady There are, like, how many things in P6 that aren't conventions?  15 or so?
17:13 nothingmuch heh
17:13 TimToady It's sugar turtles most of the way down.
17:14 wolverian was Juerd right with the LWP == object, Str == value thing? and what is an Array?
17:14 gaal mmm sugar turtles
17:14 nothingmuch in that case we also want: class Object { method canonical_key_for_hash_with_better_name { self.id } }
17:14 nothingmuch imho Array is an object
17:15 TimToady Str is probably an object too.  Too much Unicode floating around to do anything else...
17:15 TimToady And we have 'eq' for forcing string comparisons.
17:15 wolverian then what is a value? an object without methods? :)
17:15 elmex joined perl6
17:16 nothingmuch multi method &infix:<eq> ( $x, $y ) { $x as Str === $y as Str } ?
17:16 wolverian Str $x === Str $y # :)
17:16 TimToady A value is something you don't have to clone if you want another one of it.
17:16 nothingmuch err, right
17:16 wolverian TimToady, ah. so really really primitive.
17:16 nothingmuch wow, that's a nice distinction
17:17 TimToady I suspect Str has to define === though...
17:17 gaal audreyt: so, which types are high targets for DrIFT.Perl6? Exp?
17:17 nothingmuch TimToady: i thought it already does ;-)
17:17 TimToady which would make it a value type.  Maybe it just can't decide...
17:17 nothingmuch oh
17:17 nothingmuch i'd expect $str === $other to be a "stringish equality" thing
17:17 * wolverian is tempted to put the value/object distinction into the topic
17:17 TimToady === always fails for differing types.
17:17 nothingmuch that converts to the "best" encoding and compares
17:18 nothingmuch does MMD let it coerce?
17:18 TimToady could
17:18 nothingmuch 2 === "2" ?
17:18 nothingmuch if it matches Object, Object instead it's on .id which is fail
17:18 TimToady === always fails for differing types (in the absence of MMD)
17:19 nothingmuch if it matches Str, Str or Num Num (depending on which coercion is chosen, and whether Num "2" fails)
17:19 nothingmuch but it won't
17:19 nothingmuch since coercion happens after proto
17:19 nothingmuch right?
17:19 TimToady don't follow...
17:19 * nothingmuch ponders a new coercion semantic:
17:19 saorge_ joined perl6
17:19 nothingmuch mutli  &infix:<===> (Object $x, Object $y) { }; # this is "
17:20 nothingmuch "more specialized" than
17:20 nothingmuch multi &infix:<===> ( Str, Str ) # on a 2, "2",
17:20 nothingmuch right?
17:20 nothingmuch repharse:
17:21 TimToady 2,"2" doesn't even see Str,Str
17:21 audreyt gaal: start with PIL.Native.Types.Native, actually :)
17:21 nothingmuch TimToady: until it tries to coerce, right?
17:21 nothingmuch but it will never coerce, because Object, Object will match it, right?
17:21 nothingmuch anyway, new semantic for 'as':
17:21 hcarty joined perl6
17:21 nothingmuch $x = mmd_distance( Object, Num );
17:21 TimToady we haven't really nailed down MMD distance yet, except to nail up Manhattan...
17:22 nothingmuch $y = mmd_distance( Str, Str );
17:22 nothingmuch $y += mmd_distance( Num, Str ); # for 'as'
17:22 nothingmuch i'm having trouble saying this
17:22 nothingmuch but if the distance in the same variant is bigger than the distance through an 'as', maybe we prefer the 'as'?
17:22 audreyt nothingmuch: you grokked docs/notes/multimethods.pod ?
17:22 TimToady probably needs a slightly more formal proposal.
17:22 nothingmuch which incarnation?
17:23 nothingmuch audreyt: i think so
17:23 audreyt nothingmuch: there's only one incarnation
17:23 nothingmuch there around 3-4 mmd docs, IIRC
17:23 nothingmuch two by luke, one by me
17:28 gaal audreyt: that's a fairly simple structure, if you don't descend to its children...
17:29 audreyt gaal: but suppose I do...
17:29 gaal ...but stop at the type level, surely?
17:30 audreyt surely.
17:30 pdcawley joined perl6
17:30 nothingmuch audreyt: does my as-in-distance proposal disagree with multimethods.pod?
17:30 hcarty left perl6
17:31 gaal okay, so NativeObj is another style of thing to emit
17:31 nothingmuch gaal: err... remember the blondie conclusions
17:31 nothingmuch this is all a generalization of linking
17:31 gaal "this"?
17:31 gaal undefined symbol
17:31 nothingmuch emitting "native" constants, native ops, etc
17:32 nothingmuch XS type behavior
17:32 nothingmuch FFI
17:32 nothingmuch except that some of this linking is done in the emitting stage
17:32 audreyt nothingmuch: yes, because fallbacking-to-coercion yields a different type
17:32 nothingmuch and you're not always linking with symbols
17:32 audreyt that has no subtyping relationship with the original type
17:33 audreyt nothingmuch: I proposed "sub f ($x as Dog)" as a encouraging-coercion form
17:33 nothingmuch audreyt: so how *do* i say Num is closer to Str than it is to Obj
17:33 audreyt TimToady said he's thinking about having "sub f ($x does Dog)" to mean the same
17:33 gaal nothingmuch: I have no idea what you are telling me
17:33 nothingmuch gaal: when you are emitting '1 + 2'
17:33 audreyt nothingmuch: "Num does Str", clearly.
17:33 audreyt (according to the encouraging-coercion theory)
17:33 nothingmuch i meant the other way
17:34 nothingmuch numify a string
17:34 nothingmuch that is not well described as a role
17:34 nothingmuch much better as a coercion
17:34 audreyt well, it's closer to a Num because they share a nearer common ancestor
17:34 audreyt let's call it Val
17:34 nothingmuch i guess method f ($x as Num) is a good way to go
17:35 audreyt than Object's common ancestor, let's call it Any
17:35 TimToady sub f (Dog $x) already means 'does', so 'as' is probably better for coercion.
17:35 TimToady Unless we mean 'to'.
17:36 audreyt TimToady: as in JS2 "to"? isn't that just the perl6 "as"?
17:36 audreyt (user-defined casting)
17:36 TimToady Yeah, and 'does' says 'can you do this without changing yourself?'
17:37 nothingmuch changing? isn't that more of a "deriving a copy"?
17:38 TimToady nothingmuch: yes
17:38 audreyt ($x as Num) then. I like the punning
17:38 nothingmuch *phew*
17:38 nothingmuch okay
17:38 nothingmuch what about from the other direction?
17:38 audreyt it's asif you said f($x as Num) at caller site.
17:38 nothingmuch yes
17:38 netanya_goy joined perl6
17:38 nothingmuch wait
17:38 nothingmuch what other direction....
17:38 * nothingmuch tries to remember
17:38 nothingmuch oh, yes
17:39 nothingmuch how do i declare in role Str that Str is *always* as Num before it's does Object?
17:39 nothingmuch err, isa Object
17:39 nothingmuch we have 3 "locations" which control the outcome of MMD, the call site, the class declaration, and the method declaration, but this gives only call and method decl
17:40 audreyt nothingmuch: well, Str and Num share common ancestry, let's call it Val, so you can say that everybody does Val with various coercion forms
17:40 audreyt automagically
17:40 audreyt that is, Num isa Val and Val does Num
17:40 nothingmuch i thought that was a nono in luke's proposal
17:40 audreyt this is bizzare though.
17:41 nothingmuch very bizzare
17:41 audreyt it is a nono, because of circularity
17:41 audreyt say, if all our common builtins are declared with "as"
17:41 audreyt then this problem does not arise
17:41 nothingmuch hmm
17:41 audreyt numeric ones, at least
17:41 nothingmuch i think we want a class level 'as' thing
17:41 audreyt class Dog as Cat { ... }
17:41 nothingmuch i'd also like to say that MyUriObject as URI even though it doesn't inherit it
17:42 nothingmuch and that URI isn't a role in any logical way
17:42 audreyt and you don't want to say does
17:42 nothingmuch i think that works
17:42 audreyt because you can't emulate its api
17:42 TimToady C++ handles all that with constructor/coercion
17:42 nothingmuch right
17:42 audreyt you can only, on demand, construct a URI for it
17:42 nothingmuch exactly
17:42 * nothingmuch is getting the hackathon feeling
17:43 nothingmuch when my brain is too clogged to actually work i start bugging audreyt and TimToady
17:43 nothingmuch ;-)
17:43 audreyt and all this just so you can omit explicit coercions.
17:43 audreyt (in call site or function site.)
17:43 nothingmuch exactly
17:43 nothingmuch because they are orthogonal
17:43 nothingmuch you might have control only over one of them
17:43 audreyt certain languages has special method designed for value classes ;)
17:43 audreyt as_num
17:44 audreyt etc
17:44 audreyt but class-level "as URI" may be useful.
17:44 TimToady That's why I originally had coerce:<as> make both coercion and constructor semantics, if I recall...
17:45 audreyt TimToady: I don't think coerce:<as> is defined anywhere in the docs...
17:45 TimToady Maybe the constructor autogen is just an "is deep" variant.
17:45 TimToady it was historical
17:46 TimToady Anyway, I'm pretty comfy with "as" allowing a single direct coercion on MMD 'as' args, as long as we don't get into coercion chains like C++.
17:46 mako132_ joined perl6
17:47 TimToady I presume it's just infix:<as> these days, but as I said, we could have an 'is deep' variant to autogen the corresponding constructor.
17:47 nothingmuch the usefulness of class level as is that sometimes the class writer has no control of either the call site or the method def site
17:48 nothingmuch and wants to have "correct" semantics"
17:48 nothingmuch this can also simplify MMD
17:48 audreyt nothingmuch: I already agreed. now write a S12 patch?
17:48 nothingmuch in that 'as URI' could short circuit the MMD dispatch much earlier
17:48 fglock joined perl6
17:48 nothingmuch i'm off to take that bath I was talking about
17:48 audreyt oh ok :)
17:49 nothingmuch i think i'll do it later
17:49 nothingmuch i am too blocked mentally to write something coherent
17:49 TimToady Actually, given MMD there's really no constructor/coercion distinction, so nevermind the 'is dep'
17:49 TimToady *deep
17:50 audreyt (and given structural unpacking in MMD, coercion can be 1)deep 2)automatic 3)fun)
17:50 TimToady agreed
17:50 nothingmuch oh wait:
17:50 nothingmuch how do parametrized types work with this?
17:51 TimToady brain melts
17:51 nothingmuch does 'as' affinity on the parameter type leak up to the parametrized type?
17:51 nothingmuch e.g. if Str as Num, then does Array[Str] as Array[Num] wwrt MMD?
17:52 audreyt don't think so.
17:52 nothingmuch how come, actually?
17:52 audreyt because of contravariance. Str as Num, but when you store a Num into a Array[Str]
17:53 audreyt no matter how Str-as-Num you are
17:53 TimToady But perhaps a generic 'as' could use that info to autogenerate the specific one.
17:53 audreyt it can affect only existing Array[Str] lements
17:53 audreyt but not affecting the STORE call
17:53 audreyt i.e. it'd only work on FETCH.
17:54 TimToady feels like a co/contravariant conflict of some sort.
17:54 fglock audreyt: I'll try to merge the Pugs::Grammar code now - I was distracted testing optimizations - none implemented, but there could be much improvement with inlining - 10x?
17:55 audreyt fglock: cool!
17:55 audreyt fglock: ingy just pulled together Filter::PMC
17:55 avar joined perl6
17:55 audreyt v6.pm is trivial based on it
17:55 audreyt so instead of a .sh or Makefile.PL rules
17:55 audreyt Rule.pm -> Rule.pmc can happen reliably and automagically
17:55 FurnaceBoy joined perl6
17:56 fglock audreyt: cool - will it use lrep in the beginning? or maybe pugs - is it possible already?
17:56 audreyt fglock: pugs is possible already -- parses much more stuff than lrep -- but you can switch
17:56 audreyt use v6-lrep;
17:56 audreyt use v6-pugs;
17:57 fglock audreyt: ws can send the pmc files to cpan, so people don't have to compile
17:57 audreyt fglock: that is the whole plan.
17:57 audreyt so, yes! :)
17:57 audreyt and that can really encourage people starting new cpan modules with Perl6
17:57 audreyt (or with Spiffy, or with some other source-filterish-technologies that will no longer be recompiled every run)
17:58 audreyt and because Filter::PMC can do nesting and ordering
17:58 audreyt the dreaded no-two-filters-at-once bug can at least be partially solved
17:58 TimToady audreyt: I wonder if you could STORE.wrap something that redispatches MMDly to proper constructor before calling "real" STORE...
17:58 fglock ruoso, pmurias: no problem with CPAN anymore (the initial plan was 100% perl6)
17:58 audreyt TimToady: but it needs the other direction's "as"
17:59 audreyt ok, I need to write a rant about the parrot container system. a sec :)
17:59 TimToady well, it doesn't seem all that important to nail down, so don't let me distract you.
18:00 audreyt TimToady: yeah, I'll just delegate it to the metaghost protocol
18:00 TimToady are those sugar ghosts?
18:00 TimToady or turtle ghosts?
18:00 TimToady or sugar turtle ghosts?
18:00 audreyt cute tutle ninja ghosts, more likely
18:00 audreyt turtle ninja, even
18:01 audreyt # http://news.bbc.co.uk/olmedia/705000​/images/_705631_ninjaturtles300.jpg
18:01 TimToady what kind of a rant is that?  :-)
18:02 audreyt TimToady: parrot has no idea of SV_readonly
18:02 Limbic_Region joined perl6
18:02 audreyt TimToady: and hence, no distinction between Val and Ref
18:02 audreyt TimToady: and hence, "$x is readonly" is not practical
18:02 audreyt TimToady: and hence, reference semantics are broken; 1.id != 1.id, and you can modify how 1 works by calling 1++.
18:03 TimToady Yes, I saw your earlier rant.
18:03 TimToady thought maybe you had a better one. :)
18:03 audreyt I think the workaround is simply to have a "readonly" interface to PMCs in addition to the current "scalar"
18:03 * fglock programs always have big TODO lists
18:04 GabrielVieira left perl6
18:04 audreyt TimToady: the default f(*@_) thing
18:04 audreyt you can't say @_[0]=1, but can you say @_.push(3)?
18:04 audreyt (two conceptual levels)
18:05 TimToady I think @_.push probably works by default.  The "readonly" distributes along with the *.
18:06 audreyt so we don't get "locked hash" style things by default
18:06 audreyt that's good, because it's far easier to explain :)
18:06 TimToady sub f(constant *@_) {...}
18:07 audreyt right. parrot doesn't do that either. hm
18:07 * audreyt adds another rant item
18:07 TimToady constant %hash = (...) is a locked hash, presumably.
18:08 audreyt nod.
18:08 TimToady though maybe constant locks the values as well as keys.
18:08 audreyt so it's basically "is readonly is locked"
18:08 audreyt or some such.
18:09 audreyt thought parrot calls it "fixed"
18:09 TimToady okay to lock the values if you only change values thru existing ref.
18:09 audreyt er, "fixed_size", and maybe it reads better than "locked"
18:09 audreyt nod.
18:10 LeTo fixed_sized is still r/w but not extendible
18:10 TimToady I think constant should lock values too by default, since constant hashes are good -O fodder.
18:10 audreyt LeTo: yes, "readonly" and "fixed_size" are orthogonal concepts
18:10 audreyt and "constant" is them together
18:11 TimToady constant is more than that.  It's a compile-time thing in P6.
18:11 audreyt nod.
18:11 audreyt though persumably:
18:11 audreyt sub f (*@_ is constant)
18:11 TimToady That's why it's a declarator unlike "readonly".
18:11 audreyt or is it more
18:11 audreyt sub f (*@_ is readonly is fixed_size) ?
18:12 TimToady nod
18:12 LeTo well, constant in Parrot terms means that storage is from a different object arena, which isn't scanned by GC - its for very long-lived objects
18:35 audreyt LeTo: rant sent
18:35 GabrielVieira joined perl6
18:36 fglock GabrielVieira: hi!
18:36 svnbot6 r9416 | fglock++ | Pugs-Compiler-Rule: merged new tests, TODO
18:37 GabrielVieira GabrielVieira hi ;D
18:38 GabrielVieira fglock where can i find some topics about what is being doing and where can i help (or try to)? :)
18:38 fglock GabrielVieira: want a commit bit? so you can start coding
18:38 GabrielVieira humm
18:39 GabrielVieira yep
18:39 GabrielVieira fglock where can i find?
18:40 audreyt GabrielVieira: your email addr?
18:40 fglock GabrielVieira: you can start by making a local copy of pugs with svn
18:40 GabrielVieira [email@hidden.address]
18:40 audreyt GabrielVieira: commit bit sent. add yourself to AUTHORS. welcome aboard!
18:41 GabrielVieira tkz ;)
18:41 audreyt dinner, bbiab &
18:41 GabrielVieira i'll check
18:43 fglock GabrielVieira: you can get the current p6 specification by installing Perl6::Bible from CPAN - then type p6bible ; if you are in debian, you can install pugs/unstable
18:43 nnunley joined perl6
18:43 fglock or compile it yourself
18:43 GabrielVieira hum
18:44 GabrielVieira i'll see here wicht one is the best for me
18:44 GabrielVieira i thing ill install fbsd here just for it
18:44 GabrielVieira :P
18:44 fglock also, talk with ruoso (Daniel Ruoso from cascavel-pm) - he is here too
18:45 GabrielVieira yeah
18:45 GabrielVieira i thought about
18:45 GabrielVieira :)
18:45 GabrielVieira he is away right now
18:47 * GabrielVieira is going to lunch right now.. so.. <- when i come back i'll get involved with it ;)
18:47 fglock GabrielVieira: ok!
18:49 fglock joined perl6
18:52 pmurias fglock:is it ok to move emit.pl to perl5/Pugs-Compiler-Rule/l​ib/Pugs/Emitter/Perl5.pm?
18:53 Daveman joined perl6
18:53 pasteling "bsb" at 192.115.25.249 pasted "S06 q:code scoping patch" (53 lines, 2.5K) at http://sial.org/pbot/16257
18:55 fglock pmurias: I'm trying to do that :) if you can help, plese do
18:55 fglock I'll work in the parser side now
18:56 fglock pmurias: wait!
18:57 fglock pmurias: Compiler-Rule is the rule compiler - the emitter code is p6rule.pl
18:57 Daveman left perl6
18:57 fglock pmurias: you can remove the non-emitter code in the first part of the file
18:58 fglock pmurias: I'm moving that code to the grammar
18:58 FurnaceBoy_ joined perl6
18:59 fglock pmurias: the Rule compiler will be completely separate from the p6 compiler - 2 reasons:
18:59 fglock it's a simple language, can have a faster compiler;
18:59 fglock and Rule can be used separately, in p5 programs
19:02 fglock joined perl6
19:05 FurnaceBoy_ audreyt: I didn't know there were female ninja turtles. thx.
19:09 fglock where is v6-pugs.pm ?
19:10 audreyt fglock: it will bein lib/v6.pm
19:11 audreyt the -pugs is just a import switch
19:11 fglock audreyt: I need it to use the grammar...
19:11 audreyt fglock: the Makefile.PL should gen it for you for now
19:11 audreyt in this hour
19:12 amnesiac joined perl6
19:12 audreyt p6i rant: http://www.nntp.perl.org/grou​p/perl.perl6.internals/33240
19:13 fglock audreyt: will it be a aeparate cpan package?
19:13 audreyt fglock: v6.pm? very likely, yeah
19:13 audreyt fglock: but not really needed
19:14 audreyt fglock: the .pmc will contain the magic and v6 will not be needed on user site
19:14 audreyt you only need v6.pm if you modify the .pm file and need to regen pmc
19:14 audreyt in which case you probably want to have a pugs tree anyway
19:14 fglock audreyt: it didn't work for me: Error:  Can't locate v6.pm in @INC
19:15 audreyt fglock: did you run MAkefile.PL?
19:15 audreyt which file is this?
19:15 fglock Pugs::Grammar::Rule (I didn't run makefile.PL - will retry)
19:17 fglock audreyt: String found where operator expected at Makefile.PL line 19, near "name 'Pugs-Compiler-Rule'"
19:17 audreyt fglock: hm, upgrade your Module::Install?
19:18 audreyt actually nvm
19:18 audreyt I can fix that
19:18 fglock audreyt: thanks
19:19 audreyt fixed
19:19 svnbot6 r9418 | audreyt++ | * reuse M::I for P::C::R
19:23 fglock audreyt: "... Pugs-Compiler-Rule/inc/Module/Install.pm does not exist!"
19:24 audreyt sec
19:24 * audreyt curses the author of M::I
19:24 audreyt tail re-cursing
19:25 audreyt try again
19:25 svnbot6 r9419 | audreyt++ | * really use Pugs's own M::I.
19:29 dduncan joined perl6
19:29 TimToady obra: planetsix seems to have syndicated a huge mudball of your old bloggings...
19:29 fglock audreyt: no errors in Makefile.PL, but still no v6.pm
19:30 fglock audreyt: how about just send v6.pm to CPAN?
19:30 fglock = less hacks
19:30 audreyt fglock: you are doing ./lib/Pugs/Grammar/Rule.pm?
19:30 audreyt fglock: we'll certainly do that, but it doesn't quite help users who has no pugs /lrep on her machine
19:31 audreyt fglock: it worksforme
19:31 audreyt $ perl -Ilib t/01-iterator_engine.t
19:31 audreyt ok 1 - use Pugs::Runtime::Rule;
19:31 audreyt # etc
19:31 rgs joined perl6
19:31 audreyt fglock: try that in perl5/Pugs-Compiler-Rule ?
19:31 fglock audreyt: I'm running make in perl5/Pugs-Compiler-Rule - it installs to C:\PXPerl\site\lib
19:31 fglock audreyt: try t/02-
19:32 Limbic_Region fwiw - I am currently unable to compile on Win32
19:32 audreyt #     Error:  Undefined subroutine &ruleop::alternation called at lib/Pugs/Grammar/Rule.pm line 267.
19:32 Limbic_Region if not a known issue and someone wants to investigate - /msg me
19:32 * Limbic_Region wanders back off
19:32 audreyt fglock: well, because it doesn't load Pugs::Runtime::Rule
19:33 audreyt and hence no ruleop::alternation
19:33 audreyt if you say
19:33 audreyt use_ok( 'Pugs::Runtime::Rule' );
19:33 audreyt use_ok( 'Pugs::Grammar::Rule' );
19:33 audreyt then it works
19:33 audreyt solution: compile "use perl5:" statements?
19:33 fglock audreyt: one sec
19:33 audreyt and put a "use perl5:Pugs::Runtime::Rule" in Pugs::Grammar::Rule body perhaps
19:34 audreyt or just forget about "use perl5:" now and compile straight "use"
19:34 pmurias fglock:is it ok to move emit.pl to perl5/Pugs-Compiler-Rule/l​ib/Pugs/Emitter/Perl5.pm?
19:34 fglock audreyt: my problem is "can't find v6"
19:35 fglock pmurias: you mean p6rule.pl - the rule emitter
19:36 fglock pmurias: and Pugs/Emitter/Rule/Perl5 - we are not moving the p6 compiler yet, only rules
19:37 audreyt fglock: I wonder why "can't find v6" happens - can you paste the error here?
19:37 audreyt Limbic_Region: nopaste the log?
19:37 fglock audreyt: maybe my perl5 can't find .pmc files?
19:38 fglock what's the nopaste cmd?
19:41 pasteling "fglock" at 200.102.180.83 pasted "v6 error" (13 lines, 649B) at http://sial.org/pbot/16258
19:41 nothingmuch joined perl6
19:44 audreyt mm
19:44 audreyt fglock: do you have ib/Pugs/Grammar/Rule.pmc ?
19:44 audreyt lib
19:45 audreyt and is its modification time newer than Rule.pm?
19:45 fglock audreyt: will 'touch' it...
19:47 fglock audreyt: works! - Makefile.PL will need to touch Rule.pmc when installing from CPAN
19:48 audreyt ok
19:48 Limbic_Region perlbot nopaste
19:48 perlbot Paste your code here and #<channel> will be able to view it: http://sial.org/pbot/<channel>
19:48 pasteling "Limbic_Region" at 24.35.57.240 pasted "snippet of compile failures on Win32" (87 lines, 4.1K) at http://sial.org/pbot/16259
19:52 audreyt fglock: I hacked that together
19:52 svnbot6 r9420 | audreyt++ | * Makefile.PL for Pugs::Compiler::Rule should always touch pmc
19:52 svnbot6 r9419 | audreyt++ | * really use Pugs's own M::I.
19:52 audreyt (touching)
19:52 audreyt Limbic_Region: we just fixed this
19:52 audreyt should be fine now
19:52 pmurias fglock:where should match::{get,str} live?
19:54 fglock pmurias: Match will be a separate class (needs to be written)
19:56 fglock left perl6
19:56 fglock joined perl6
19:59 Limbic_Region audreyt - good to know
19:59 Limbic_Region will svk pull and try again
20:00 Limbic_Region fwiw - I am only lurking here so apologies if I should have known that
20:00 audreyt np, no apologies needed :)
20:01 fglock audreyt: perl5 will have ::Match, ::Rule, ::Str classes?
20:01 audreyt fglock: Pugs::Runtime will provide them.
20:02 audreyt using the MOP to map them to p5 packages
20:02 audreyt /methods/etc
20:02 nothingmuch Darjeeling FTGFOP 1, 294 + 298
20:02 nothingmuch eep
20:03 nothingmuch pretty slick: http://svn.code-host.net/project.html
20:03 fglock audreyt: the rule match will be: Pugs::??
20:05 Limbic_Region Cannot write blib/lib/Pugs/Grammar/Rule.pmc:Permission denied at C:/Perl/lib/ExtUtils/Command.pm line 127
20:05 Limbic_Region still blowing up audreyt
20:05 audreyt fglock: "the rule match" ?
20:05 Limbic_Region unless of course I should do a make realclean and start over (again)
20:05 audreyt Limbic_Region: nono
20:05 audreyt a sec, fixing that
20:05 Limbic_Region heh - thanks
20:05 obra TimToady: this is a bug in use.perl/planetplanet integration :/ planet perl gets justin mason's old postings every week :/
20:06 Limbic_Region but this machine has resources (not like the dinosaur at work)
20:06 fglock what class will be the object returned by running the object returned by Pugs::Emit::Rule :)
20:06 audreyt fglock: Match. I think.
20:06 audreyt (yes, simply "Match")
20:06 fglock ok
20:10 svnbot6 r9421 | audreyt++ | * for win32, try to chmod 644 on .pmc
20:11 buu Hey Limbic_Region
20:12 fglock pmurias: are you ok if I commit the version of  Emitter::Rule::Perl5 I was working on?
20:13 fglock joined perl6
20:14 Limbic_Region hey buu
20:14 pmurias fglock:np
20:19 svnbot6 r9422 | fglock++ | Pugs::Emitter::Rule::Perl5 - work in progress
20:20 nothingmuch fglock: i have an AST brain dump for you
20:21 nothingmuch it's more of an "operation" level than a parse level one
20:21 nothingmuch it's after desugaring
20:21 nothingmuch and it's more consistified
20:21 nothingmuch but it's still before folding, linking, and that stuff
20:21 nothingmuch and it's definately not an intermediate language (loops etc are not "flattenned")
20:22 fglock nothingmuch: I've seen the paste
20:23 nothingmuch okay
20:23 nothingmuch it's not a very complete example
20:23 nothingmuch and I think it is a *tad* too dumb down
20:23 nothingmuch e.g. functional calls should be different from object calls
20:23 nothingmuch even though they are "really" the same thing under the surface (prototype multimethod crap ;-)
20:23 nothingmuch but i think it's a balanced place to aim to as the step right after parsing
20:24 nothingmuch note, ofcourse that Immediate is *immediately* (during the construction of the *PARSE* tree) translated in to this tree, and then compiled and executed into an AST to be put in that expression
20:25 nothingmuch also, i should note that we need a Container note
20:25 nothingmuch node
20:25 nothingmuch or something like that
20:25 nothingmuch sinc Syn('&fact') reduces to it's container
20:25 nothingmuch and then only becomes the value right before dispatch if the parameter it's being bound to is not rw
20:27 fglock nothingmuch: the current work is to modularize the compiler a lot, so that we can test these new ideas - you'll be able to write this into a parl module and try it out :)
20:27 nothingmuch i won't today
20:27 nothingmuch or this week
20:27 nothingmuch maybe this coming weekend
20:27 nothingmuch (my weekend is fri,sat)
20:27 nothingmuch so i just want to toss around food for thought
20:27 nothingmuch on the other hand, I am quitting my job
20:27 nothingmuch so in one month from tomorrow I should have a lot of free time
20:28 fglock s/parl/perl/
20:28 nothingmuch so, until i can hop on this wagon i still want you to casually review my ideas, or at least pretend you did ;-)
20:28 fglock nothingmuch: in one month I'll completely without time :) YAPC, studies, work...
20:29 nothingmuch so you should work on my ideas now and then i will replace you later ;-)
20:29 fglock nothingmuch: sure
20:29 nothingmuch seriously though, this is just food for thought
20:30 fglock nothingmuch: I'm working in the rule language as a separate compiler - audreyt and stevan go on with p6 - porting pugs to p6/p5
20:31 fglock and gaal, and TimToady, and...
20:32 fglock nothingmuch: we've discussed how MOP could be a plug-in-like thing - that's one example of how things can be modularized
20:32 Steve_p seen TimToady?
20:33 Steve_p Hmmm...no infobot :-/
20:33 Limbic_Region [13:13] <TimToady> nod
20:33 Limbic_Region my local time is now 15:34
20:34 Limbic_Region ooops, missed something more recent
20:34 Limbic_Region [14:29] <TimToady> obra: planetsix seems to have syndicated a huge mudball of your old bloggings...
20:34 Steve_p OK, so a few hours ago
20:35 K joined perl6
20:36 Steve_p Ahh...I may have it figured out myself
20:36 fglock nothingmuch: ping?
20:39 Juerd rafl: You also left a cacert form in my car. You lost it almost 7 years too early ;)
20:41 TimToady Limbic_Region: you rang?
20:41 TimToady s/Limbic_Region/Steve_p/
20:42 Steve_p TimToady, yes, I found something in the MAD code, but I've got it figured out.
20:43 Steve_p Just testing now
20:44 TimToady Steve_p: glad one of us has it figured out.  :-)
20:46 Steve_p It was just a variable initialization out of place. Hopefully, I'm not breaking something else :-)
20:47 * Steve_p would rather no add days to Nicholas's sentence^Wgrant time
20:47 Steve_p ;)
20:47 TimToady All sorts of things are out of place in MAD.  It's usually a hard choice between fixing it up in C or letting nomad move it back to the "right" place.
20:47 TimToady But I assume you mean a C variable init out of place...
20:49 Steve_p Yes, a C variable.  
20:49 TimToady The whole MAD thing was predicated on the notion of being minimally invasive, so if you have a choice between breaking the mainline or making nomad's life harder, definitely make nomad's life harder.
20:51 TimToady But occasionally you can refactor and get a win-win.
20:51 proefgb joined perl6
20:52 Steve_p No worries, it's just a little tweak :-)
20:53 TimToady That sound's like the kind of quote you put at the front of the next chapter in that famous novel "Jenga Book".
20:53 TimToady s/'//
20:56 * TimToady wanders off to take an old-fogey-style nap.
20:58 Steve_p heh
21:03 FurnaceBoy_ is now known as FB|afk
21:10 svnbot6 r9423 | fglock++ | Pugs/Grammar/Rule - resolved dependencies
21:14 fglock pmurias: re "return_block_hack" - any ideas how to fix it?
21:14 fglock audreyt: ping
21:21 audreyt fglock: pong
21:23 fglock audreyt: Pugs::Grammar::Rule is mostly in place, I'm trying to fix some hacks, but I'm out of ideas
21:24 fglock audreyt: how does the return block "returns"?
21:24 fglock audreyt: how does it has access to the whole match?
21:25 fglock audreyt: it's currently a hack - it gets compiled after the whole rule is compiled
21:25 fglock audreyt: that is, the return is moved outside
21:27 audreyt a sec
21:28 audreyt it doesn't have acess to whole match
21:28 audreyt it has access to a partially constructed match obj
21:28 audreyt with the succeeding match before it
21:35 fglock audreyt: ok - I've got an idea how to do this
21:37 audreyt cool!
21:39 fglock audreyt: I'll make the ruleop abort, returning the subref in a flag - the subref will be called in the root op, which knows what the match is
21:40 fglock audreyt: this way we can have multiple returns (is it allowed?)
21:45 rafl Juerd: D'OH.. how many?
21:46 fglock audreyt: the 'abort' documentation says: "the match was stopped by a { return } or a fail()" :)
21:46 fglock audreyt: I wrote that, and then forgot it
21:57 Juerd rafl: 1
21:58 Juerd rafl: Sven's
21:58 rafl Juerd: That's useless anyway. I didn't assure him yet and he already has 150 points.
21:59 Juerd rafl: Shall I shred it or send it to you?
21:59 audreyt fglock: multiple returns makes as much sense as multiple returns inside a sub
21:59 audreyt i.e. makes no sense :)
22:01 rafl Juerd: Well. If it's not a problem for you i'd like to have it back, but you don't need to send it to me right now.
22:01 rafl Juerd: Maybe if you're sending something else anyway (PBP, gadgets, ..) or when we meet the next time.
22:02 rafl Juerd: Easter Hegg maybe?
22:02 fglock audreyt: what if you have an alternation, and for each case you return a different thing? (just a thought)
22:03 Juerd rafl: What's Easter Hegg?
22:04 rafl Juerd: A hacker meeting
22:04 rafl Juerd: http://eh.cngw.org/
22:05 audreyt fglock: then you return as soon as one alternation matches
22:05 Juerd rafl: I've had enough of far travelling for a while, tbh
22:05 audreyt and maybe you use : for backtrack control
22:06 nothingmuch temp/local grudge:
22:06 nothingmuch local $i--;
22:06 nothingmuch someone find a nice way to make that DWIM but not be "dirty"
22:06 nothingmuch good night
22:06 audreyt fglock: http://perlcabal.org/~gaal/peek/slide37.html
22:06 Juerd nothingmuch: (local $i)-- :)
22:06 Juerd Though temp.
22:06 nothingmuch in perl 5 it won't work
22:06 Juerd Sure, but that's because local sucks ;)
22:07 nothingmuch did semantics change such that bare 'local $x' retains the outer value?
22:07 audreyt stevan: all PIL^N native types become PMCs now
22:07 Juerd I hope so.
22:07 Juerd Though temp.
22:07 rafl Juerd: OK. How about the ultrabay?
22:07 Juerd rafl: Haven't ordered yet. Will confirm the price to you first.
22:07 Juerd rafl: Please remind me Monday
22:07 Juerd rafl: What kind of drive do you want in it?
22:07 audreyt I used S11 names, so Seq is now Tuple, and I call Map "Mapping"
22:07 fglock audreyt: :) - I didn't mean to return twice
22:07 rafl Juerd: OK, thanks.
22:07 rafl Juerd: What are the possibilities?
22:08 audreyt stevan: tomorrow I'll see if Bootstrap.pil can be made to run on parrot
22:08 Juerd rafl: CDRW/DVD, CDRW/DVDRW, battery
22:08 Juerd rafl: Or nothing :)
22:08 nothingmuch good night
22:09 nothingmuch Juerd: if you feel like being a darling check if the synopses say that? if not i'll try to remember tomorrow ;-)
22:09 Juerd nothingmuch: No, sorry.
22:09 nothingmuch okies
22:09 * nothingmuch writes todo
22:09 rafl Juerd: I'd like to know the prices for DVD and DVDRW.
22:10 Juerd I'm already in hypermultitasking mode :(
22:10 rafl Juerd: Is the battery stuff useful? How long does it run with a battery that fits into a cd drive slot?
22:10 Juerd rafl: Not long.
22:10 Juerd And it's very expensive.
22:10 rafl Juerd: OK, then it's not useful.
22:10 Juerd The "nothing" option is cheapest.
22:11 Juerd But puts very little extra value in having the ultrabay :)
22:11 Juerd OTOH, if you're going to use it only on the road, I'd suggest getting a USB optical drive instead. It's much cheaper.
22:11 Juerd The ultrabay is mostly valuable for its dockingstation-ness
22:11 rafl Juerd: Thought so.
22:12 rafl Juerd: Anyway. Knowing the prices first would be nice.
22:12 Juerd Oh, I should still have the order confirmation for mine
22:12 Juerd Let's see
22:12 Juerd 160 for ultrabay, 210 for cdrw/dvd
22:13 Juerd Excl. VAT
22:19 SamB joined perl6
22:28 FB|afk is now known as FurnaceBoy
22:32 uzair_ joined perl6
22:32 hexmode` joined perl6
22:34 audreyt I'd like to stay up for longer but can't anymore :)
22:34 Juerd Good night, audreyt
22:34 audreyt see you tomorrow :) &
22:35 uzair_ is now known as uzair
23:01 audreyt ...and then I spent 30mins journaling ;)
23:01 audreyt sleep for real &
23:02 obra hah
23:02 obra sleep well, audrey
23:03 audreyt LeTo++ ingy++ # doing all the hard work on PMCs for Pugs and PMCs for Pugs :)
23:12 larsen joined perl6
23:16 justatheory joined perl6
23:19 nnunley joined perl6
23:21 Nouk joined perl6
23:57 |mjk| joined perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs