Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-12-05

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:01 romanhunt joined #perl6
00:02 romanhunt hello all
00:02 colomon_ joined #perl6
00:03 masak romanhunt: hi!
00:03 zaslon lolperl6adventhazblogged! perl6advent++ 'Day 5: Metaoperators': http://perl6advent.wordpress.com​/2009/12/05/day-5-metaoperator/
00:04 romanhunt so this shal be my first big perl6 weekend... (after writing 5 all week long at work!)
00:04 romanhunt I really cant wrap my head around the power curly brakets have obtained
00:04 romanhunt hashes will never be the same!
00:10 masak romanhunt: in Perl 6, curlies in term position mean a closure. always.
00:10 masak sometimes they collapse to a hash, though.
00:12 romanhunt i see. thx
00:13 brrant joined #perl6
00:14 masak romanhunt: there are some simple rules as to when it turns into a hash. it works out pretty naturally, and DWIMs most of the time. I've had it trip me up in &map calls, sometimes, but that's all.
00:14 masak I believe the spec was changed to make even those cases of &map confusion go away. but I don't believe Rakudo implements those changes yet.
00:16 TimToady yes, we outlawed $_ in the { a => 2 } form
00:17 jnthn Rakudo certainly didn't catch up with *that* one yet, afaik.
00:17 jnthn oh hai btw :-)
00:17 * jnthn 's new laptop has apparently been built and will be shipped to him soon.
00:18 jnthn That means I'll have a machine I can hack on Rakudo on that doesn't take like over 2 minutes to compile it. :-/
00:18 TimToady romanhunt: curlies have gained power by *reducing* the number of uses from what Perl 5 does, actually :)
00:18 masak jnthn: hai!
00:18 Wolfman2000 jnthn: what OS?
00:18 jnthn Win 7.
00:18 jnthn If it sucks, back to XP.
00:18 Wolfman2000 ...you must be a glutton for punishment
00:18 jnthn But I'm hopeful not.
00:18 * jnthn gave Vista a skip
00:18 Wolfman2000 okay, not that gluttnous
00:18 Wolfman2000 gluttonous*
00:19 jnthn Wolfman2000: Nah. I can't be arsed with Linux on the desktop.
00:19 jnthn I'm fine that it works for some people. I'm just not one of those people. :)
00:19 jnthn Equally, I hate windows on the server. :-)
00:19 jnthn Tool for the job and all that lot.
00:20 romanhunt I never thought Id say it but ever since I started getting to use macos on the desktop I have been hooked. I however run a network of XP xlients running on mac hardware so its not all perfect...
00:21 romanhunt its a sweet OS to meet in the middle of graphical do it all and *nix though
00:21 * Wolfman2000 also uses Leopard.
00:21 romanhunt and the fact that it ships with perl to begin with is titts
00:21 jnthn Yeah, Mac is tempting. But I do a bunch of Windows dev too.
00:21 Wolfman2000 jnthn: you can run windows on a Mac
00:21 jnthn Wolfman2000: I could, but then...why buy a Mac? :-)
00:22 Wolfman2000 ...one of these days, you'll see the light
00:22 * jnthn went for a ThinkPad again. They're familiar, comfortable, and don't care about being dropped from the overhead bin in an aircraft.
00:22 avar too bad you can't get them anymore from ibm;/
00:23 MegaTron joined #perl6
00:23 jnthn avar: Yeah, I was a bit bothered the quality may have gone way down, so asked around...and got "yeah, they're still decent".
00:23 avar still decent, but not as good
00:23 jnthn Aww.
00:24 jnthn Well, we'll see how many countries and conferences the new one handles. :-)
00:26 * jnthn very much enjoyed a visit to the curry house that he used to frequent while living in England again tonight.
00:26 MegaTron left #perl6
00:26 romanhunt so once I get a grip on the new syntax how should I move forward? I am incredibly interested in perl6 compiler being writen in perl6 and want to work on that aspect (generating parse trees etc) I mean I dont mind just writing code in it but most of the stuff I write turns into several hundren line projects that it probably isnt ready for
00:27 jnthn romanhunt: The easiest place to jump in is the setting, which is a chunk of built-in functions/classes that are written in Perl 6.
00:27 romanhunt plus writing large system administration scripts in a language so new and blowing up a system at work would probably piss my boss off to no end
00:28 romanhunt jnthn: ok
00:28 jnthn romanhunt: In those, you're writing in "full" Perl 6, as such.
00:28 jnthn romanhunt: In the bits behind that, most bits are written in a subset of Perl 6 that we call NQP.
00:29 jnthn Which is very easy to work with if you know Perl 6, so long as you keep in mind what it does and doens't provide.
00:29 romanhunt ./rakudo/src/setting I assume
00:29 jnthn romanhunt: Right.
00:30 jnthn romanhunt: We have a bunch that is written in PIR to interface with the underlying Parrot VM, and a few bits in C too.
00:30 jnthn But you can contribute quite a lot without having to look at those.
00:30 romanhunt C I know well. PIR ... a different story
00:30 jnthn Generally, the trend is towards more in Perl 6 and NQP and less in VM-specific stuff.
00:30 romanhunt ok
00:30 avar romanhunt: There are also self-hosted compilers you can look at, but they seem to be less maintained these days.
00:31 jnthn Because it's (a) easier to hack on and (b) means that when we get to having Rakudo running on additional backends there's less that we have to hand-port.
00:31 avar Rakudo historically has been built upon a mountain of C/PIR with some very small parts in Perl 6, but those parts have been growing a lot for the past ~2 years
00:31 avar (B.t.w. I'm just an outside observer, I'm not involved in rakudo)
00:31 jnthn avar: Your perspective is pretty much right though. :-)
00:32 romanhunt I think I will focus on setting/ for sure at least to begin with
00:32 jnthn avar: Though in a way we're working towards replacing some of the PIR with NQP and Perl 6 too.
00:32 avar jnthn: Are you guys planning on growing it slowly over time so that Parrot might be Just Another Target, along with JVM, .net, ASM or whatever?:)
00:32 avar jnthn: Yeah I've seen, neat:)
00:32 romanhunt after that maybe some porting of PIR to perl6 if needed. But I am getting ahead of myself as I am still reading synopses :)
00:33 jnthn avar: Yes, that's kinda my vision.
00:33 avar jnthn: I haven't looked at it after you guys started hacking on rakudo-ng but when I did a lot of the heavy lifting in setting/ seemed to be done by Q:PIR
00:33 avar jnthn: Cool:)
00:33 avar romanhunt: Anyway, I used to work on one of the self-hosted compilers a while back but if I wanted to hack something now I'd hack rakudo, fwiw:)
00:34 jnthn avar: In ng, we're using a pir::op_name construct instead, which unlike Q:PIR is easier to deal with in the "support a different backend" case.
00:35 pugs_svn r29257 | lwall++ | [pm.txt] answer PM-12 for pmichaud++
00:36 avar jnthn: Nice, I also noticed you're passing like 0.1% of the tests you did before, are you tearing the whole thing out to replace it with .. what ?
00:36 avar I've read some of the blog postings but I haven't got the gist of exactly what you guys are doing, is it just the regex engine replacement or a lot more?
00:37 avar more self-hosting?
00:39 jnthn avar: We're doing a bunch of refactors in one go.
00:39 jnthn avar: The new grammar engine and getting a load closer to STD is a key one of them.
00:40 jnthn avar: The underlying object model is also changing greatly - that's the bit I'm heading up (whereas the grammar enigne awesomeness is pmichaud++'s great work).
00:40 jnthn Essentially, everything OO is going back in on top of a sound meta-model foundation, which puts us on the path to custom metaclasses and the like.
00:41 TimToady (and cuts many of the apron strings tying current rakudo to parrot)
00:41 jnthn TimToady: Well spotted. ;-)
00:41 Wolfman2000 ...I missed something. parrot and rakudo are going to be separated?
00:42 TimToady they've been separated for several years now
00:42 jnthn Wolfman2000: Rakudo and Parrot already *are* separate projects.
00:42 Wolfman2000 ...that came out wrong
00:42 jnthn Wolfman2000: Please don't read this as "Rakudo is not going to target Parrot".
00:42 jnthn That's not at all what is being planned.
00:42 diakopter [by most]
00:42 Wolfman2000 jnthn: understood. blame my hunger...supposed to be meeting someone soon, but said person has to call me first
00:43 jnthn diakopter: :-/
00:43 diakopter I mean
00:44 TimToady diakopter: cats can't herd other cats either
00:44 diakopter but a mouse or few can divide the pack
00:44 masak jnthn: also, before you did the OO refactors, you worked on parameter passing, which is also important for ng, no?
00:45 jnthn Wolfman2000: Basically though, Rakudo - like gcc - is a compiler. Just as gcc can produce code for x86 and Sparc, so I'd like Rakudo to be able to target multiple backends.
00:45 diakopter the sunk cost delusion will be lifted one day
00:45 jnthn masak: It's important for Rakudo *.
00:45 TimToady everything is important, if only as a lesson  :)
00:46 masak jnthn: oh. ok.
00:46 jnthn masak: In ng, we actually get to use the foundations I laid pre-ng in the parameters refactoring in an even neater, more elegant way.
00:46 jnthn masak: The code now is *really* nice.
00:46 masak that's what I meant. or something like that. :)
00:47 TimToady in other words, we're still groping our way forward, but we're getting much faster at it.  :)
00:47 jnthn masak: But the actual binder refactor is pretty much the same as I did for master. :)
00:47 jnthn With tweaks thanks to TimToady++ spec tweaks.
00:47 masak ok. :)
00:47 diakopter 2 rethinks/redesigns/rewrites per year is great practice for more rewrites
00:47 diakopter (a lesson I've learned from myself)
00:48 TimToady we're hoping each redesign takes half the time of the previous
00:48 TimToady eventually Zeno loses :)
00:48 huf jnthn: what other backends are you thinking about besides parrot?
00:48 huf or is that too far ahead yet?
00:48 TimToady name a VM
00:48 huf so, any?
00:48 TimToady it's been thunka
00:48 diakopter huf: they're all conceivable
00:48 jnthn huf: I'm fairly open to various options. I think actually that the *hardest* one to add will be the second.
00:49 TimToady and the 3rd will be 1/2 that, then 1/4, 1/8.... :)
00:49 jnthn huf: If it's me that adds the second one, it'll be the .Net CLR just out of personal familiarity and because it'll make a nice platform for various bits of Perl 6 spec exploration and research I wish to do.
00:49 diakopter pypy, llvm-ir, cil, jvm, js, go (fglock's Perlito targets go, now)
00:49 TimToady the problem with the second will be discovering all the place we assumed how the circularity saw worked that were wrong
00:49 TimToady *places
00:50 jnthn TimToady: Yes, indeed.
00:50 diakopter and of course, /usr/bin/perl
00:50 jnthn diakopter: Yes, that too. :-)
00:50 TimToady right now we're exploring abstract vs concrete versions of the same operation, hoping that will be an obvious place to saw
00:51 TimToady so .Str conversion might be in the VM, while ~ conversion is in P6
00:51 diakopter huf: to answer your question more precisely, I'm working on an nqp-rx clone-esque in javascript
00:52 TimToady (and crossing our fingers that we don't end up with the too-many-levels-of-indirection problem)
00:52 jnthn TimToady: I suspect that we're going to end up having to abandon Parrot's Class/Object PMCs somewhere along the way.
00:52 huf diakopter: that's pretty cool
00:52 jnthn TimToady: That one may hurt.
00:52 diakopter huf: but I'm not afraid to ditch it all at any time and switch to C#/cil on clr/mono
00:53 TimToady pugs had a CL backend at one point, iirc
00:53 diakopter due to my coding style, the biggest factor that affects my choice of platform is speed of prototyping and instantaneity of feedback
00:53 cognominal Is go  the vm for the go google language?
00:53 diakopter factor*s* I guess
00:54 TimToady or maybe it was one of the other parsers
00:54 jnthn TimToady: Especially because when I tried to take Parrot down the road to having multiple interoperating object systems, nobody else understood the goal particularly well, and now it's a mess I don't feel like fixing.
00:54 jnthn :-(
00:54 diakopter Perlito emits SBCL
00:55 TimToady jnthn: my guess is that eventually parrot scraps it's internal system and bases everything off the Perl 6 types :)
00:55 TimToady *its
00:55 diakopter MiniPerl6 (mp6) is a subset of Perl 6, which was designed as a light bootstrapping language. The initial bootstrap used v6.pm and was then self-hosted in Perl 5. MiniPerl6 is now self-hosted both in SBCL Lisp and in Perl 5. A developer can modify the compiler source code (written in MiniPerl6) and recompile either with the Perl 5 or with the SBCL backend. The backends can cross-compile to each other.
00:55 diakopter except.. there's also a JS target that's not mentioned there
00:56 diakopter TimToady: well... then it would be Perl 6
00:56 TimToady not exactly
00:56 TimToady it'd be a VM that happens to be written in P6
00:56 diakopter imho, the nature of type system makes it very tied to the rest
00:57 TimToady but we need to get the native types going better first
00:58 jnthn TimToady: That's one of the things I'm most interested in exploring / working out on a different backend.
00:58 diakopter masak: how's TreeTraverser
00:58 jnthn TimToady: And the dragging back to Parrot - or at least, going to the Parrot dev team with an idea of what's needed - afterwards.
00:59 jnthn *And then
00:59 sjohnson hi guys
00:59 jnthn hi sjohnson
00:59 TimToady basically, I see the nqp-rx phenomenon happening all over again once we have full P6.
00:59 sjohnson o?
01:00 sjohnson oops
01:00 sjohnson o/
01:01 TimToady the first would be scratching your head?
01:01 diakopter TimToady: so there'd be a stage0,1,2,3,4,5,6.....
01:01 diakopter I can see the FAQ entry now
01:02 TimToady "The origins of this VM are lost (purposefully) in the mists of time."
01:03 jnthn TimToady: That's entirely possible, and wouldn't surprise me, but it's a little way off yet. :-)
01:03 diakopter "... and then it emits pugs-6.2.5-Perl6, which emits javascript to WebKit/V8, which emits CIL to mono, which emits xs and is built into a Perl 5 extension"
01:03 TimToady gotta cross the Jordan first...
01:04 jnthn TimToady: Who is it that's behind us and gets drowned? ;-)
01:04 jnthn oh wait, that was the red sea.
01:04 jnthn :-)
01:04 diakopter jordan too
01:04 TimToady well, I know who gets left behind at the Jordon, and trying not to think about that... :)
01:04 jnthn Ah well, it's all good.
01:07 diakopter .oO( and then there were 49 days of cacophonous [line] noise, and then the VValls just fell down )
01:07 diakopter or 56, I don't remember
01:07 jnthn ooh...sleep time for me.
01:07 jnthn Catch y'all tomorrow.
01:07 jnthn o/
01:07 diakopter nite
01:08 TimToady ciao
01:09 diakopter std: =end
01:09 p6eval std 29257: ok 00:01 102m␤
01:09 masak found a new Perl 6 project: http://github.com/dbrunton/Automata-Cellular
01:10 diakopter wha....?
01:10 diakopter oh, a 3-year hiatus
01:11 diakopter that was in pugscode at one point I think
01:11 masak oh, cool.
01:11 masak yes, the tweet mentioned that it was being updated.
01:13 colomon_ joined #perl6
01:14 diakopter 8.8.8.8
01:15 diakopter talk about octets..
01:15 diakopter I wonder what its ipv6 address is
01:22 diakopter masak: how's TreeSpider
01:22 masak diakopter: it's been sitting nicely undisturbed since yesterday. as far as I'm concerned, it's a successfully finished experiment.
01:23 masak diakopter: next step is to implement the corresponding thing onto the GGE data model. will probably get around to that in a few days.
01:39 zaslon lolmasakhazblogged! masak++ 'November in the rearview mirror': http://use.perl.org/~masak/journal/39980?from=rss
01:44 masak I checked the IRC logs from a year ago. I am on record saying "I'll probably do it again next year" :)
01:44 masak I'll say the same this time, with a bit less certainty.
01:45 diakopter I dunno, I'm quite certain you'll probably do it again next year
01:45 diakopter prove me wrong ;) (kidding)
01:45 masak :)
01:45 sjohnson in p6, have the names "chomp" and "chop" been renamed, and will the chomp-like func chop off $/ instead of "\n" ?
01:46 diakopter std: chop; chomp
01:46 p6eval std 29257: ok 00:01 103m␤
01:46 masak sjohnson: three things:
01:46 masak sjohnson: (1) no, they have not been renamed.
01:46 masak sjohnson: (2) their semantics have changed, though. they no longer change their argument, but return a modified string instead.
01:47 masak sjohnson: (3) $/ is long gone, and there's a new $/ which does something comeletely different (match results).
01:47 sjohnson masak: has $/ been given a new name?  or is it just not implemented
01:48 sjohnson diakopter: i finally understand the std: now thanks
01:48 sjohnson diakopter++  # knows a lot
01:48 * masak checks what $/ used to mean
01:48 TimToady std: undef $/
01:48 sjohnson newline char thing, useful when using while
01:48 p6eval std 29257: [31m===[0mSORRY![31m===[0m␤Obsolete use of $/ variable as input record separator; instead, in Perl 6 please use the filehandle's .slurp method at /tmp/RkGcbOd23U line 1:␤------> [32mundef[33m⏏[31m $/[0m␤FAILED 00:01 103m␤
01:48 masak ah. input record separator.
01:48 TimToady std: $/ = ""
01:48 p6eval std 29257: [31m===[0mSORRY![31m===[0m␤Obsolete use of $/ variable as input record separator; instead, in Perl 6 please use filehandle's :irs attribute at /tmp/caD1U8GPPU line 1:␤------> [32m$/[33m⏏[31m = ""[0m␤FAILED 00:01 104m␤
01:49 sjohnson wow, nice warning / error msgs
01:49 sjohnson compilers helpful
01:49 masak TimToady++
01:49 TimToady necessary when replacing with a different $/
01:49 sjohnson does chomp in p5 even look at $/, or is it static "\n" searching
01:50 sjohnson would anyone be opposed to the idea if i ran a p5eval bot here, for fun and learning purposes?
01:50 masak sjohnson: are you familiar with 'perldoc -f chomp'?
01:50 masak sjohnson: buubot used to be able to eval Perl 5 code.
01:51 sjohnson thanks masak, forget to check here
01:51 pnate2 joined #perl6
01:52 sjohnson masak++ # kind way of saying RTFM
01:52 masak food &
01:52 masak :)
01:52 TimToady pugs: use v5; print "howdy\n"
01:52 p6eval pugs: Error eval perl5: "sub { use ops (':default', 'binmode', 'entereval');; print "howdy\n"␤␤}"␤*** 'print' trapped by operation mask at (eval 2) line 3.␤␤Undefined subroutine &main:: called.␤
01:52 TimToady heh
01:53 sjohnson im gonna put up an sjbot.  i'm excited
01:53 sjohnson implement a !perlfact trigger
01:53 TimToady p5 == security breach to pugs :)
01:54 TimToady sjbot: p5eval: system 'rm -rf /'
01:55 diakopter std: use v5; $| = 1;
01:55 p6eval std 29257: [31m===[0mSORRY![31m===[0m␤Obsolete use of $| variable; instead, in Perl 6 please use :autoflush on open at /tmp/HEMhttqWJD line 1:␤------> [32muse v5; $|[33m⏏[31m = 1;[0m␤FAILED 00:01 104m␤
01:55 sjohnson haha TimToady good think i didnt implement it yet
01:55 TimToady STD doesn't understant 'use v5' yet
01:55 TimToady *stand
01:55 sjohnson have to explain to my boss that the creator of Perl wiped my harddrive
01:56 sjohnson he'd find it a bit hard to believe
01:56 diakopter "but I was asking for it"
01:56 TimToady I probably wouldn't, but diakopter might :)
01:57 sjohnson i suppose the safest way to do nothing, would be to give mself no read permission to anything, and use sudo to edit sjbot.pl
01:57 TimToady and maybe run in a chroot jail
01:58 sjohnson ... i learn something new about perl everyday!
01:58 TimToady and maybe use Safe, fwiw
01:58 diakopter std: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$​$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
01:58 sjohnson use Acme::KeepYourJob;
01:58 sjohnson or JobSecurity
01:59 diakopter what
01:59 diakopter that's a new one
01:59 huf wasnt job the dude who lost all his family?
01:59 huf not sure i want that kind of security
02:00 diakopter :D
02:00 TimToady only takes 13 seconds on my machine
02:01 diakopter 13 seconds?
02:01 TimToady to parse all those $'s
02:01 diakopter successful?
02:01 TimToady Anonymous variable requires declarator at (eval) line 1:
02:02 TimToady and a couple deep recursion warnings :)
02:02 TimToady probably tickles lazymap too hard
02:03 p6eval joined #perl6
02:03 TimToady funny that it kills p6eval
02:03 diakopter std: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$​$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
02:03 p6eval std 29257: Deep recursion on subroutine "Cursor::_BRACKETr" at STD.pm line 23016.␤Deep recursion on subroutine "Cursor::_SUBSUMEr" at STD.pm line 22885.␤[31m===[0mSORRY![31m===[0m␤Anonymous variable requires declarator at /tmp/jK1zfumA4B line 1:␤------>
02:03 p6eval ..[32m$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$…
02:03 diakopter o
02:03 TimToady wow, that was fast
02:03 diakopter std: $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$​$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
02:04 p6eval std 29257: Deep recursion on subroutine "Cursor::_BRACKETr" at STD.pm line 23016.␤Deep recursion on subroutine "Cursor::_SUBSUMEr" at STD.pm line 22885.␤[31m===[0mSORRY![31m===[0m␤Anonymous variable requires declarator at /tmp/M4RCmNQByu line 1:␤------>
02:04 p6eval ..[32m$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$…
02:04 diakopter hm
02:05 diakopter Linux debian.4.x86_64 2.6.16-xen #1 SMP   1GB ram, raid10-ish scsi15k disks
02:05 TimToady recompiled, still takes ~14 seconds
02:06 diakopter is your kernel x86_64?
02:06 TimToady I think I'm probably running a 32-bit kernel
02:07 diakopter oh, this perl is built with llvm
02:07 TimToady Linux edo 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686 GNU/Linux
02:07 diakopter KIDDING
02:08 diakopter mebbe I can rework p6eval to use App::Persistent for STD
02:08 diakopter or mod_perl :}
02:09 TimToady oh, heh, I had the debug log turned on :)
02:09 diakopter sum1 needs to write a source filter for that :}}
02:10 TimToady < 1sec now
02:11 diakopter oh, why would V8's JS RegExp go quadratic on /^(?:a+)*ab$/.test("aaaaaa"), but the equivalent in Perl fails nearly instantly
02:12 diakopter on "a" x 1e10, I mean
02:14 diakopter I mean, I thought perl always nfa-simulated left-right with full backtracking?
02:14 TimToady because Perl isn't even getting into the NFA on that one
02:14 sjohnson NFA = no f'ing around?
02:14 diakopter sjohnson: pretty much
02:14 TimToady Perl 5 goes to great lengths to *avoid* calling into the regex matcher
02:15 TimToady and the ab$ is special cased to fail fast
02:15 diakopter O
02:15 TimToady it would fail not quite so fast with just ab
02:16 TimToady but still faster than the regex would figure it out, but it'd have to scan for the constant string
02:16 TimToady and ab doesn't buy you much with boyer-moore
02:16 TimToady it'd fail abcdefg a lot faster
02:17 diakopter how could I force perl to go quadratic on that
02:17 TimToady I'll never tell :)
02:17 diakopter hey
02:17 diakopter v8 starts slowing down very noticeably with only 20 chars of input
02:18 diakopter I haven't waited for it to terminate above that
02:19 diakopter oh, there we go :)
02:20 diakopter time perl -e 'print (("a" x 100000000) =~ /^(?:a+?)*a(b+)*c?$/)'  # real    0m27.386s
02:23 diakopter actually, it's not quadratic still
02:23 TimToady make the second a a*
02:24 diakopter time perl -e 'print (("a" x 100000000) =~ /^(?:a+?)*a{32766}$/)' # not finished yet
02:24 TimToady no, that won't work either, since your end matter can match null string
02:24 TimToady that one will be pretty slow
02:25 orafu joined #perl6
02:27 diakopter # still going
02:27 diakopter # no increase in memory usage that I can see
02:28 TimToady no, but it'll probably run a bit under 300 hours
02:28 diakopter killed
02:28 diakopter LOL
02:29 diakopter time perl -e 'print (("a" x 32766) =~ /^(?:a+?)*a{32766}$/)' # hm.
02:29 diakopter 19 seconds
02:29 diakopter interesting
02:32 diakopter time perl -e 'print (("a" x 500) =~ /^(?:a+?)*a*a{500}$/)' # 0.05s
02:32 diakopter time perl -e 'print (("a" x 5000) =~ /^(?:a+?)*a*a{5000}$/)' # 27s
02:34 diakopter TimToady: speaking of char-by-char NFA, why not run the whole parser that way, scannerless
02:37 TimToady because it's not what people want
02:39 diakopter TimToady: oooooo.. since you have ubuntu KK now, that means you have mono-2.4!!!!!!!! :D
02:39 diakopter `mono -V`
02:39 TimToady I deny it--I've never had mono...
02:40 diakopter oh
02:40 TimToady though, of course, there's a good chance I'd test positive for EBV
02:41 rodi joined #perl6
02:46 diakopter oh, but looks like the csharp repl doesn't come installed by default # apt-get install mono-csharp-shell mono-gmcs
02:47 TimToady I'm not particularly interested in playing with mono yet.  Maybe after I get done with Perl 6...
02:49 diakopter jnthn gave me too many ideas
02:49 pugs_svn r29258 | lwall++ | [gimme5] more recursion warning suppression
02:49 TimToady yes, well, one diakopter can only go so far in emulating a flooding algorithm
02:50 TimToady one TimToady too, for that matter
02:50 diakopter well, there's just a TON more system interaction libraries already available from mono/cil/clr.. notwithstanding that it could run in silverlight(win,mac) and moonlight(linux)
02:50 diakopter more than JS/V8, I mean
02:51 diakopter but the compile/run/test time is still just as fast....
02:51 TimToady well, you are one the cats I don't try to herd :)
02:52 diakopter sigh
02:52 diakopter hrm
02:54 diakopter phenny: tell jnthn ok, now you've gone and done it.  ^^ # apt-get install mono-csharp-shell mono-gmcs # in Ubuntu Karmic
02:54 phenny diakopter: I'll pass that on when jnthn is around.
02:54 diakopter TimToady: one neat thing about .net regexes - they can be told to run in reverse
02:56 diakopter oh, interesting, mono has a dependency on perl
02:56 TimToady so does git :)
02:57 diakopter so does every .NET build & derivative project inside microsoft... the C/C++ source tree was managed with perl scripts for years (probably still is) (as externally visible in the rotor source release)
02:58 diakopter the entire point of writing powershell was to provide a perl replacement, imho
02:58 diakopter it took about forever
03:00 diakopter 2.0 is mostly caught up in expressiveness, if not terseness
03:02 TimToady decommuting &
03:13 rodi updating some old Perl6 code to work with Rakudo.  Everything's working, except I'm getting a "Use of uninitialized value" warning in one method, don't know why...
03:13 rodi anyone willing to take a peek at it, might be able to tell at a glance:
03:13 rodi http://github.com/dbrunton/Automata-Cellu​lar/blob/git-svn/lib/Automata/Cellular.pm
03:14 rodi Looks like it's happening in the next() method.
03:14 rodi Any general debugging tips would also be welcome.
03:19 seanstickle joined #perl6
03:48 diakopter rodi: I'll take a look
03:49 diakopter rodi: masak was just noticing your commits... (irclog above)
03:50 rodi diakopter: oh, nice, thanks for the pointer.
03:52 rodi I like the spec changes that I noticed while updating the code.
03:52 gfx joined #perl6
03:53 diakopter rodi: $.rule.rule{
03:53 diakopter is that what you intended?
03:55 rodi heh, good question.  I think so, though.  $.rule is an Automata::Cellular::Rule object, and $.rule.rule is a hash.  Does that make my sigil wrong?
03:55 rodi I'm fuzzy on that...
03:56 TimToady seems a bit odd to index a hash by a decimal number
03:56 rodi Blame Wolfram.
03:56 rodi :-P
03:57 TimToady as in The Emperor's New Science  :)
03:57 rodi A New Kind of Perl
03:58 TimToady I'd make sure the keys of the hash aren't actually like '101'
03:58 TimToady wrong keys would certainly get you uninits
03:59 diakopter maybe stringify the key too
03:59 diakopter I dunno
03:59 TimToady likewise if it's really returning @ instead of %
04:00 TimToady though you'd think in that case it'd complain "I'm not a hash."
04:01 TimToady also, stylistically, you don't need parens on the for loop args
04:01 rodi mmm, pretty.
04:01 TimToady and the final conditional could simply return the result of the comparison, since that's already a Bool
04:02 TimToady well, you'd have to negate it
04:03 rodi e.g. "return $.stage < $.steps" ?
04:03 rodi also pretty.
04:03 meppel joined #perl6
04:03 diakopter return $.steps < $.stage
04:04 TimToady <= maybe
04:04 diakopter or  return $.stage <= $.steps
04:04 sjohnson rakudo:  $/ = "\n";
04:04 p6eval rakudo 7ef386:  ( no output )
04:04 TimToady and the pod has a syntax error :)
04:04 TimToady std: while($ca.next()) { }
04:04 p6eval std 29258: [31m===[0mSORRY![31m===[0m␤while() interpreted as function call at line 1; please use whitespace instead of parens␤Unexpected block in infix position (two terms in a row) at /tmp/djrRJwk5LT line 1:␤------> [32mwhile($ca.next()) [33m⏏[31m{ }[0m␤    expecting any of:␤     bracketed
04:04 p6eval ..infi…
04:04 sjohnson hmm
04:05 sjohnson does p6 supprt input_record_separator-type things?
04:05 sjohnson i was thinking irs supporting regex would be pretty cool, as i can't get that to work in p5
04:05 TimToady in theory
04:06 TimToady that's because P5 doesn't support that
04:06 TimToady you need a regex engine that can ask the input system for more string for that to work
04:07 sjohnson i took a guess that it didnt support it either once i couldn't get it to work :]
04:07 TimToady you didn't have to guess; the documents say as much :P
04:08 sjohnson i suppose i could wing it, by splitting input instead of using while and $/ on it
04:08 sjohnson split it by a regex thingy
04:08 TimToady how big is the input?
04:09 TimToady if it's smaller than your memory, just slurp the whole thing in and split
04:09 TimToady otherwise you're likely to end up with buffer-wrap errors
04:09 sjohnson about 1k EDIFACT files
04:10 TimToady 1k each?
04:10 sjohnson around there, nothing bug
04:10 sjohnson big*
04:10 sjohnson they're for orders of books at work
04:10 sjohnson maybe biggest one i'll ever see might be 50k at the most
04:11 TimToady then by all means, just slurp in entire files; it's much more straightforward that way
04:11 sjohnson boss asked me to parse some edifact data to grab a few of the fields out
04:11 sjohnson tene was kind enough to write me a nice slurp() sub
04:11 sjohnson i'll use it to slurp my way up the corporate ladder
04:12 sjohnson .. in the programming sense
04:12 sjohnson ( `ー´)
04:12 TimToady is built-in to P6, fortunately
04:13 sjohnson sweet
04:13 sjohnson perl6++
04:13 sjohnson @karma perl6
04:13 lambdabot perl6 has a karma of 5
04:15 sjohnson @karma P6
04:15 lambdabot P6 has a karma of 0
04:15 sjohnson @karma p6
04:15 lambdabot p6 has a karma of 0
04:16 TimToady @karma lambdabot
04:16 lambdabot lambdabot has a karma of -1
04:17 TimToady so anything lambdabot says, you have to multiply by -1
04:18 sjohnson heh
04:18 sjohnson thanks for the work tips too btw
04:19 sjohnson advice straight from the Camel's mouth !
04:20 seanstickle joined #perl6
04:21 sjohnson i have a theory.  i think the given ()  function simply sets $_ to be the given argument
04:22 sjohnson to make way for the pretty p5.10.0 when () which i believe is simply an if statement, as it needs the () brackets... and does a next; implicately
04:25 sjohnson (my perldoc won't tell me about given or when :(
04:27 sjohnson or maybe a last;
04:27 sjohnson something to get out of that given block
04:27 rodi TimToady, diakopter: thanks for the help, working great now.
04:27 TimToady what was the problem?
04:29 rodi Um, I was falling off the end of an array </sheepish>
04:29 rodi It's way prettier now, though :)
04:31 rodi I just printed rule 30 with it, which is the WHOLE ENTIRE UNIVERSE, and there's probably a little tiny me inside of it, debugging this same problem again.  Actually, I was a little fuzzy on that part of New Kind of Science, but it was something along those lines...
04:31 rodi I also added some fmt-fu, thanks to today's Perl6 Advent.
04:32 rodi Funny how Advent is such a time for renewal.
04:32 rodi Our four-year-old is insisting we go to church, too.
04:34 TimToady yes, well, sometimes they know better than we do :)
04:34 rodi It was my three-month-old that sat with me at the terminal writing Perl 6 :)
04:34 rodi wonder what my two-year-old has in store...
04:35 TimToady well, fortunately, you don't have to be an expert in everybody's kids, just your own
04:36 TimToady unfortunately, you're not an expert in your own kids till they're grown up  :)
04:37 sjohnson TimToady: is it wrong to make life easy by using unicode characters that you can assume no one will ever use as delimiters, to get around escaping nightmares?
04:38 sjohnson i'm wondering if i'm making a "programming paradigm" mistake
04:39 TimToady no, that's why we let you pick your own quotes
04:40 TimToady of course, if you're generating code, you probably shouldn't assume that, but be ready to do proper escaping for pathological cases
04:40 TimToady but usually you can be lazy and get away with it
04:41 sjohnson yeah, splitting by '  but not ?' is kind of hard in regex, as i don't want the /[^\?]'/ regex to suck up the not-question mark character in the split job
04:41 TimToady sometimes I run through a list of delimiters to pick one that doesn't occur in the text, just to avoid backslashes
04:41 sjohnson this is where the snowman chars might come in handy... and what better time than christmas too
04:42 TimToady doing that right is difficult; you basically have to parse left-to-right, and not make guesses about what came before
04:42 hack joined #perl6
04:43 TimToady well, the snowman is cute enough that someone might use it.  maybe you should go for something uglier
04:43 hack Dell
04:43 sjohnson they havne't made a unicode character of my face yet though :[
04:44 TimToady
04:44 sjohnson haha there it is
04:45 sjohnson i bet this could probably be used and would probably take 100 years before it broke
04:45 sjohnson maybe longer actually
04:45 sjohnson i doubt this unicode char would ever be used in an actual book title.  i think i'm good!
04:46 TimToady そうでしょう。。。
04:47 sjohnson i suppose i could die("sad face") if m/☹/;
04:47 sjohnson before the parsing took place
04:48 sjohnson <-- smart and safe
04:49 TimToady I'd use ⎮, which isn't the character it looks like
04:50 * diakopter is blown away by http://search.cpan.org/~rivy/Win32-Comman​dLine-0.4.4.269/lib/Win32/CommandLine.pm
04:50 TimToady or maybe ┋
04:51 TimToady something that's usually used only in drawings vertically is unlikely to occur in a title
04:51 carlin ng: my $x = 'foo'; say $x ~~ /foo/;
04:51 p6eval ng 545373: foo␤
04:51 carlin ng: my $x = 'foo'; say 'foo' ~~ /$x/;
04:51 p6eval ng 545373: ␤
04:51 TimToady ng: my $x = 'foo'; say $x ~~ m┋$x┋;
04:51 p6eval ng 545373: Confused at line 1, near "say $x ~~ "␤current instr.: 'perl6;HLL;Grammar;panic' pc 519 (src/stage0/HLL-s0.pir:336)␤
04:51 sjohnson TimToady++:  good unicode picking skills
04:52 sjohnson whatever doesn't get me fired i like
04:52 TimToady rakudo: my $x = 'foo'; say $x ~~ m┋$x┋;
04:52 p6eval rakudo 7ef386: Null PMC access in get_string()␤in Main (file <unknown>, line <unknown>)␤
04:52 TimToady rakudo: my $x = 'foo'; say $x ~~ rx┋$x┋;
04:52 p6eval rakudo 7ef386: Null PMC access in get_string()␤in Main (file <unknown>, line <unknown>)␤
04:52 carlin can't use variables in regexs in master
04:52 TimToady rakudo: my $x = 'foo'; say $x ~~ rx┋foo┋;
04:52 p6eval rakudo 7ef386: foo␤
04:53 carlin I hope it's fixed in ng
04:53 TimToady sjohnson: yes, well, scattering frowny faces all over your code might not impress your boss
04:53 sjohnson TimToady: best to pick a unicode character that looks like his favourite pet animal
04:53 sjohnson lesson the blow
04:54 TimToady don't think there's a tarantula symbol...
04:54 diakopter the Windows symbol works for that
04:54 sjohnson i know what'll NEVER get used
04:55 sjohnson
04:55 sjohnson have to balance the risk of someone seeing that vs. it ever crashing
04:55 TimToady well, that's not actually the Nazi swastika...
04:55 quantumEd joined #perl6
04:56 sjohnson TimToady: true, but not something i'd like to get into an argument with :)
04:57 carlin I quite like 몾
04:57 diakopter rakudo: say "hihi" =~ 卐i卐;
04:57 p6eval rakudo 7ef386: Unable to set lvalue on PAST::Val node␤in Main (file <unknown>, line <unknown>)␤
04:57 diakopter o wait
04:57 sjohnson carlin: chinese chars might slip up though in book titles :)
04:57 diakopter rakudo: say "hihi" ~~ 卐i卐;
04:57 p6eval rakudo 7ef386: Could not find non-existent sub 卐i卐␤in Main (file src/gen_setting.pm, line 324)␤
04:57 carlin rakudo: say chr 0xBABE
04:57 p6eval rakudo 7ef386: 몾␤
04:57 diakopter aww, I liked the first response
04:57 sjohnson diakopter: use racist;  first
04:57 sjohnson :)
04:58 TimToady I'd say that 卐 is quite likely to occur in a Chinese title
04:59 masak joined #perl6
04:59 diakopter masak: g'morning
04:59 masak o/
04:59 quantumEd 卐 is chinese for helicopter
04:59 sjohnson haha
04:59 sjohnson 卐kopter
05:00 sjohnson pool hall &
05:00 sjohnson thanks for the help
05:00 quantumEd np
05:02 masak I've seen 卐 in various religious circumstances across the world. mostly outside of Europe, though.
05:03 diakopter rakudo: say "hihi" =~ 5
05:03 p6eval rakudo 7ef386: Unable to set lvalue on PAST::Val node␤in Main (file <unknown>, line <unknown>)␤
05:03 diakopter masakbot: bug
05:03 masak long since reported :)
05:04 masak it's a variant on "cannot assign to a literal" bug.
05:04 TimToady no bug, I think
05:04 masak it's an LTA bug.
05:04 TimToady LTA message
05:04 TimToady yeah
05:04 TimToady std: say "hihi" =~ 5
05:04 p6eval std 29258: [31m===[0mSORRY![31m===[0m␤Obsolete use of =~ to do pattern matching; instead, in Perl 6 please use ~~ at /tmp/qYWsxSnBpZ line 1:␤------> [32msay "hihi" =~[33m⏏[31m 5[0m␤FAILED 00:01 106m␤
05:05 masak hugme: hug STD.pm
05:05 * hugme hugs STD.pm
05:05 diakopter oh. I thought it was failing on the parse
05:05 diakopter b/c of the PAST mention
05:06 masak no, it fails on the PAST->PIR transformation.
05:06 jaldhar joined #perl6
05:06 drbean_ joined #perl6
05:07 diakopter oh
05:08 cotto_w0rk joined #perl6
05:09 diakopter oh, interesting... mono has lower startup time than v8
05:09 diakopter but neither come close to perl's
05:10 TimToady hugme: hug STD
05:10 * hugme hugs STD
05:10 TimToady hmm, that didn't work
05:11 TimToady hugme: hug STD .pm
05:11 * hugme hugs STD
05:11 TimToady that didn't work either, hmm
05:11 Wolfman2000 hugme: hug STD\.pm
05:11 * hugme hugs STD.pm
05:11 Wolfman2000 hugme: hug STD..pm
05:11 * hugme hugs STD..pm
05:11 Wolfman2000 hugme: hug STD.pm
05:11 * hugme hugs STD.pm
05:11 Wolfman2000 any of those TimToady?
05:11 TimToady trying to get hugme to split on something invisible
05:13 TimToady as opposed to not splitting on something visible
05:13 rodi hugme: hug me
05:13 * hugme hugs rodi
05:13 * rodi hugs hugme
05:13 TimToady hugme: hug you and me
05:13 * hugme hugs you and me
05:14 diakopter hugme: hug '
05:14 * hugme hugs '
05:14 diakopter hugme: hug \'
05:14 * hugme hugs '
05:14 diakopter hugme: hug \\\\
05:14 * hugme hugs \\
05:14 diakopter hugme: hug $sssss
05:14 * hugme hugs $sssss
05:15 diakopter std: std: :std
05:15 p6eval std 29258: ok 00:01 104m␤
05:16 TimToady hugme: hug and kisses for all
05:16 * hugme hugs and kisses for all
05:16 pmichaud :-D
05:16 carlin std: say "{}#{}";
05:16 p6eval std 29258: [31m===[0mSORRY![31m===[0m␤(Possible runaway string from line 1)␤Confused at /tmp/S86NJGdaBV line 1 (EOF):␤------> [32msay "{}#{}";[33m⏏[31m<EOL>[0m␤    expecting escape␤FAILED 00:01 105m␤
05:17 carlin rakudo: say "{}#{}"
05:17 p6eval rakudo 7ef386: Embedded comments now require backticks at line 2, near "{}\""␤in Main (file <unknown>, line <unknown>)␤
05:17 * masak reads with enjoyment in the backlog how Perl 5 special-cases /ab$/ et al.
05:17 TimToady hugme: hug and kisses for all but TimToady
05:17 * hugme hugs and kisses for all
05:17 quantumEd hugme
05:18 drbean joined #perl6
05:21 Wolfman2000 ...right, masak is having his insomnia mode again
05:21 quantumEd me and masak
05:21 Wolfman2000 ...technically, so am I
05:22 Wolfman2000 I will want sleep within an hour so that I can wake up and knock out my last online final stuff
05:22 Wolfman2000 or rather, take home final stuff
05:22 masak Wolfman2000: I've fallen into a steady sleep cycle where I sleep for 6 hours and stay awake for 20 hours. you do the math. :)
05:22 Wolfman2000 PerlJam: you around?
05:22 Wolfman2000 masak: I'd...rather not.
05:23 masak it means I have a daily phase shift of 2 hours relative to the sun.
05:23 PerlJam Wolfman2000: oddly enough, I just arrived :)
05:23 PerlJam What's up?
05:23 Wolfman2000 I havne't gotten an answer on my NFS forum topic yet...at least, if the "email me on reply" thing is working right.
05:23 Tene masak: That's normal for me... I can't fit that with my work, though.
05:24 masak Tene: luckily, I'm on vacation.
05:24 Wolfman2000 Perhaps you had an answer
05:24 PerlJam What was the question?>
05:24 masak Tene: and I've timed it so that if I keep this up, by the time I get back to work, I'll be a very early riser. :)
05:24 Wolfman2000 or are you...more of an advertiser/middleman for NFS?
05:24 Wolfman2000 PerlJam: how many of my websites would require converting to work on their servers?
05:24 envi^home joined #perl6
05:24 * Wolfman2000 wishes they had an IRC room
05:25 PerlJam Wolfman2000: I have no relation to NFS really.
05:25 PerlJam and no, I have no answer for you.
05:27 PerlJam Wolfman2000: I'm more what The Tipping Point calls a "Connector" (but only sometimes :)
05:27 Wolfman2000 ...noted
05:31 rodi nighty night, all &
05:32 rodi left #perl6
05:38 JimmyZ joined #perl6
05:47 pugs_svn r29259 | lwall++ | [STD] string block escapes should be considered embedded, carlin++
05:50 orafu joined #perl6
05:51 masak TimToady: don't know if you saw in the backlog the other day -- is it correct that I can call a method .foo by interpolating the string "$.foo" ?
05:52 TimToady sure
05:52 TimToady syntactically it's just a variable
05:52 masak ok; good.
05:52 TimToady and $ varibles don't follow the bracket rule
05:52 TimToady *ia
05:52 masak right.
05:52 masak that's what I gathered from S02.
05:53 TimToady "It is a comfort not to be mistaken in all things."
05:53 masak I guess I was just surprised because it hadn't occurred to me before. :)
06:01 JimmyZ joined #perl6
06:13 diakopter speaking of snowmen: http://www.telegraph.co.uk/news/newsto​pics/howaboutthat/6724969/Scientists-c​reate-the-worlds-smallest-snowman.html
06:14 diakopter hugme: hug ll b
06:14 * hugme hugs ll
06:14 diakopter .u
06:14 phenny diakopter: 1 SPACE (U+0020)
06:15 diakopter ha
06:15 diakopter .u
06:15 phenny diakopter: You gave me zero length input.
06:15 diakopter .u l b
06:15 phenny U+2114 L B BAR SYMBOL (℔)
06:15 diakopter o_O
06:15 diakopter .u  b
06:15 phenny U+2114 L B BAR SYMBOL (℔)
06:15 diakopter .u
06:15 phenny diakopter: 1 SPACE (U+0020)
06:15 diakopter .u  b
06:15 diakopter oh
06:15 phenny U+2114 L B BAR SYMBOL (℔)
06:16 diakopter TimToady: nice one
06:17 masak if scientists create the world's smallest comet as well, we can arrange to have the world's smallest rakudobug submitted.
06:20 JimmyZ good afternoon, #perl6
06:20 masak JimmyZ! \o/
06:29 TimToady std: say "{}#{}";
06:29 p6eval std 29259: ok 00:01 106m␤
06:29 TimToady std: say "{ my $a; }#{ $a; }";
06:29 p6eval std 29259: Potential difficulties:␤  Variable $a is not predeclared at /tmp/dZHTe7aeKt line 1:␤------> [32msay "{ my $a; }#{ $a[33m⏏[31m; }";[0m␤ok 00:01 106m␤
06:29 masak std: say "{#}"
06:29 p6eval std 29259: [31m===[0mSORRY![31m===[0m␤Unable to parse statement list; couldn't find right brace at /tmp/rpbKXsDRd2 line 1 (EOF):␤------> [32msay "{#}"[33m⏏[31m<EOL>[0m␤FAILED 00:01 104m␤
06:30 TimToady std: say "{ our $a; }#{ $a; }";
06:30 p6eval std 29259: ok 00:01 106m␤
06:30 TimToady hmm
06:33 TimToady std: say "{ our $a; }#{ our $a; }";
06:33 p6eval std 29259: ok 00:01 106m␤
06:36 diakopter std: say "{ our $a; }#{ foo; }";
06:36 p6eval std 29259: Undeclared routine:␤  'foo' used at line 1␤ok 00:01 106m␤
06:37 masak rakudo: { our $a = 42 }; { say $a }
06:37 p6eval rakudo 7ef386: Symbol '$a' not predeclared in <anonymous> (/tmp/KOB2laIP38:2)␤in Main (file <unknown>, line <unknown>)␤
06:49 mberends joined #perl6
06:49 mberends good morning, feeding the backlog habit
06:50 masak morning, mberends.
06:51 mberends masak: goodness me, you've been through another strange sleep cycle ;) In sync with Europe again now?
06:51 diakopter vm integer primitives: http://perl6.pastebin.com/d247eb23    yah; it's not really a fair comparison...
06:51 masak mberends: no, I'm currently 180 degrees out of phase.
06:52 mberends lol
06:52 masak give it a few more days and I'll be an early riser. :)
06:54 mberends right. does you cycle average about 28 hours? several people seem to do that, and synthesize a 6 day week.
06:55 masak no, it seems to be about 26 hours.
06:55 mberends you could do a 13 day fortnight then
06:56 masak heh :)
06:56 masak I don't plan to keep this up when I return to $work.
06:56 masak but it has been very good for getting the tree spider semantics nailed down. and a bunch of other tasks I've done the last few nights.
06:58 mberends I plan to study the spider to see whether a C port is feasible, sometime soon.
06:58 mberends so write it good ;)
06:58 masak actually, I've finished it.
06:58 mberends \o/
06:58 masak all it ever was was a proof-of-concept.
06:58 masak but I promise to write plenty of GGE documentation comments. :)
06:59 mberends \o/
07:00 masak mberends: the basic idea of the tree spider is very simple: break down all recursive-descent-calls and continuations into simple message passing, so that it can all be done in the same lexical scope.
07:00 mberends that's a very useful concept, and sounds compatible with almost any implementation language
07:00 masak it is.
07:01 mberends \o/
07:01 mberends feasibility has just shot up
07:01 masak there are four messages: DESCEND, MATCH, FAIL and BACKTRACK, and the spider queries regex expression nodes, gets back one of these messages and. reacting to it, goes to another node and queries it.
07:01 mberends good spider, keep spinning :)
07:02 masak diakopter advised me that I'll want to do this on an expression tree cloned from the original one. he never said why. :)
07:02 masak but I can see there'd be a problem with reentrancy without the cloning.
07:03 mberends because history of previous visits is state
07:03 masak yes.
07:03 masak the spider keeps a little 'lexpad' for each expression node, hashed on that node's reference id.
07:04 masak I like how all this is handled by the spider though, and not by the nodes themselves. it feels very pure.
07:04 mberends a stack or linked list for state would be more economical than a tree clone
07:04 masak mberends: yes. the current model in GGE does that.
07:04 masak but it's a pure optimization step.
07:04 mberends \o/
07:04 mberends liking it more all the time
07:05 masak I'll probably start with getting the spider to work, but slowly.
07:05 masak (in GGE)
07:05 masak it'll involve throwing the old model out.
07:06 masak mberends: I'll tell you about what was probably the biggest surprise in all this.
07:06 mberends p6re! p6re! Soon coming to a language near you!
07:06 masak mberends: backtracking is done through 'savepoints', with the analogy being your regular platform game where you can save where you are.
07:06 mberends great analogy
07:07 masak mberends: the question is, at which point do we consider the regex to be so failed that it should activate a savepoint?
07:07 masak first I thought that a node should register a savepoint with its immediate parent.
07:07 masak and if the parent fails, it should trigger the savepoint.
07:07 masak but that turns out not to be the case.
07:07 mberends no
07:08 mberends savepoints are where you have alternatives
07:08 masak simple counterexample: x[a*?]y
07:08 masak matching on 'xaaaay'.
07:08 masak mberends: yes, savepoints are forks in the road.
07:09 mberends if y is not found, revert to x, not a
07:09 masak they're a way of saying "oh, I can go this way or that way. I'll try this way first".
07:09 mberends indeed
07:09 masak mberends: no, if y is not found, it should revert to the *? node.
07:09 mberends ok
07:10 mberends yes, * has the alternatives of course
07:10 masak mberends: but if the savepoint is registered with that node's parent (which is the [] group), we've already passed the point where the savepoint would have been triggered, and the match fails instead.
07:10 masak mberends: this was actually the reason I implemented the linked list optimisation, because then this example works again. :)
07:11 mberends that's all very C compatible, \o/
07:11 masak it's interesting to see how my four or five attempts all caught little glimpses of the real solution.
07:11 mberends yeah, testing corner cases is *very* important
07:12 masak the test suite has been good at letting me know where I'm thinking wrongly.
07:13 masak I'm on first-name basis with a few of the tests by now. :)
07:13 mberends etched on your fingers, no doubt :)
07:14 masak I'm now of the opinion that implementing a parser is something many programmers should try at least once.
07:14 mberends for great justice
07:14 masak that's why I'm eager to put much of it in a series of blog posts.
07:15 masak mberends: http://www.youtube.com/watch?v=qItugh-fFgg
07:15 mberends at least once, they get better each time
07:16 masak yes. I think I'll have a much better chance to grok nqp-rx after this.
07:17 mberends cool "all your base are belong to us" reference :-) # for backloggers
07:17 masak mberends: that's where "for great justice" comes from. :)
07:18 mberends read that on Wikipedia too
07:19 mberends the video is more derived content, but fits the meme well
07:19 mberends OJ appears :)
07:23 * masak wishes he knew enough Japanese to be able to read the Japanese in that Wikipedia article, not just the English translation
07:24 masak some things I grok a posteriori, though. had '通信士' ('communication operator') been Chinese, it could have meant 'through-send-scholar'.
07:25 masak which makes sense. :)
07:25 mberends related Fox news piece: http://www.youtube.com/wat​ch?v=cQnDkgdIn_A&amp;NR=1
07:25 mberends etc.
07:26 masak roses are red / violets are blue / all my base / are belong to you
07:26 mberends haha
07:27 masak some day I will meet a partner nerdy enough to appreciate that one. :)
07:27 mberends and then appreciate that partner :)
07:28 masak of course! all my base would be belong to her.
07:29 mberends even your base pairs
07:29 masak I'm willing to use them for cross-breeding experiments, yes.
07:30 mberends aww, sweet. *sigh*
07:32 masak :P
07:36 mberends still backlogging, it was an interesting past 8 hours
07:40 moritz_ good morning
07:40 masak moritz_! \o/
07:40 * spinclad iz backlogging the last week. that too has been interesting on first glimpse.
07:40 mberends good morning moritz_
07:41 spinclad good moritz, morniing
07:41 masak you want to see interesting? wait 'til ng lands. :)
07:41 masak laziness! infinite lists! metamodels!
07:41 masak variables in regexes!
07:42 moritz_ Mu!
07:42 spinclad specchanges!
07:43 spinclad iz all gud
07:43 masak rakudo: Mu # moritz_: doesn't master have Mu already?
07:43 p6eval rakudo 7ef386:  ( no output )
07:44 moritz_ masak: yes, but only as an alias to Object
07:45 masak moritz_: ah.
07:45 masak rakudo: say Mu === Object
07:45 p6eval rakudo 7ef386: 1␤
07:45 * spinclad -> bed &  # good turningearth, all
07:46 masak rakudo: say [-] (Mu, Object)>>.WHICH
07:46 p6eval rakudo 7ef386: 0␤
07:46 masak :)
07:50 masak rakudo: say True.name
07:50 p6eval rakudo 7ef386: Method 'name' not found for invocant of class ''␤in Main (file src/gen_setting.pm, line 324)␤
07:50 cotto_work joined #perl6
07:50 masak rakudo: say Bool::True.name
07:50 p6eval rakudo 7ef386: Method 'name' not found for invocant of class ''␤in Main (file src/gen_setting.pm, line 324)␤
07:50 * masak submits rakudobug
07:51 masak there are just so many ways in which the Bool type doesn't behave like an enum...
07:51 masak jnthn: is Bool implemented as an enum in ng? :)
07:52 moritz_ masak: that's already submitted
07:52 masak ok.
07:52 * masak stands down
07:52 masak I had a feeling it might.
08:03 masak ok, time for me to buy nom and then go to bed.
08:03 masak see you later today, #perl6.
08:18 zloyrusskiy joined #perl6
08:22 kaare joined #perl6
08:26 pnate joined #perl6
08:37 iblechbot joined #perl6
08:44 beggars joined #perl6
08:51 digirave joined #perl6
08:52 digirave anyone have installed http://moritz.faui2k3.org/en/ilbot before?
09:01 * moritz_ did
09:02 moritz_ but sometimes I get the impression the installation is not for the faint of hearted :/
09:15 digirave just finished installing
09:15 digirave noticed .htaccess is hard coded for / root install only, had to modd it
09:19 digirave left #perl6
09:27 moritz_ there might be some links in the template that are also hard-coded for /
09:29 * moritz_ will be offline for most of the weekend
09:30 hanekomu_ joined #perl6
09:31 yako joined #perl6
09:40 digirave joined #perl6
10:07 JimmyZ joined #perl6
10:23 snarkyboojum joined #perl6
10:25 szabgab joined #perl6
10:30 colomon joined #perl6
10:57 huf hm, so scripts get the extension .p6 but modules are still .pm, right?
10:59 mberends the .pm module convention is fairly common, but the .p6 extension is more a matter of personal taste
11:00 mberends in fact "use Test" currently implies reading a file called Test.pm, but extensions .pl and .pl6 (yuk) are valid
11:01 huf modules with extensions other than .pm are supported? uh
11:02 mberends in theory maybe, but not in practice. Rakudo can also use modules suffixed .pir and .pbc
11:09 mberends The preference is for all perl scripts to use the .pl extension or no extension at all, and for the shebang line or a perl-6-only construct such as "class" or "use v6;" to indicate Perl 6, and to otherwise default to Perl 5. Alas, no implementation does all that yet.
11:16 viklund joined #perl6
11:18 mberends OH HAI viklund, how are things?
11:33 mikehh joined #perl6
11:38 iblechbot joined #perl6
11:44 envi_home joined #perl6
11:45 envi_home2 joined #perl6
12:07 pmurias joined #perl6
12:10 zloyrusskiy joined #perl6
12:24 colomon_ joined #perl6
12:30 parduncia joined #perl6
12:32 xomas_ joined #perl6
12:33 meppl joined #perl6
12:46 mikehh joined #perl6
12:51 jnthn afternoon, #perl6
12:51 phenny jnthn: 02:54Z <diakopter> tell jnthn ok, now you've gone and done it.  ^^ # apt-get install mono-csharp-shell mono-gmcs # in Ubuntu Karmic
12:54 mberends afternoon, jnthn
12:59 * jnthn yawns
13:05 sjohnson yo jnthn
13:06 jnthn sjohnson: oh hai
13:12 iblechbot joined #perl6
13:20 hanekom__ joined #perl6
13:23 colomon joined #perl6
13:49 colomon joined #perl6
13:52 colomon masak: I've got a weird bug for you...
13:54 colomon When I try to run master rakudo from my ng rakudo root directory, I get the "You need to run make install" message like master has not been installed.  If I run it from any other directory it's fine.
14:02 pmichaud colomon: that's because it's finding the wrong dynamic libraries, likely.
14:02 pmichaud good morning, #perl6
14:02 jnthn o/
14:02 colomon pmichaud: good morning!
14:03 colomon I didn't know about the min operator before your Advent post.  Yay!
14:05 pmichaud yes, people are often surprised by that one :-)
14:13 colomon I knew there was @array.min, and was stymied by the lack of min($a, $b).
14:14 colomon Knowing about the operator feels huge, though.  Really handy, especially with the meta ops.
14:15 romanhunt joined #perl6
14:17 payload joined #perl6
14:20 pugs_svn r29260 | pmichaud++ | [perl6advent] Some perl6advent schedule/topic updates.
14:22 * jnthn just read the Perl 6 advent entries so far and is impressed.
14:23 jnthn Good work, folks. :-)
14:27 colomon I know I've learned several new-to-me perl 6 tricks already...
14:28 colomon Happy comments rolling in about the metaoperators post, too...
14:29 payload joined #perl6
14:35 romanhunt left #perl6
14:45 payload1 joined #perl6
14:47 astrojp left #perl6
14:49 pugs_svn r29261 | pmurias++ | [mildew] more porting over to new STD, t/if.t works
14:49 pmurias diakopter: hi
14:49 mathw pmichaud: Advent Calendar win :)
14:49 kcwu joined #perl6
14:50 colomon ng: say Inf.WHAT
14:50 p6eval ng 545373: Num()␤
14:55 colomon ng: say sin(1.2e0)
14:55 p6eval ng 545373: 0.932039085967226␤
14:55 colomon ng: say sin(Inf)
14:55 p6eval ng 545373: too many positional arguments: 2 passed, 1 expected␤current instr.: '&sin' pc 185594 (src/gen/core.pir:0)␤
14:55 colomon ng: say (1.2e0).WHAT
14:55 p6eval ng 545373: Num()␤
14:56 colomon ng: say Inf.WHAT
14:56 p6eval ng 545373: Num()␤
14:56 pmichaud ng: say Inf.PARROT
14:56 p6eval ng 545373: Float␤
14:56 pmichaud hmmm.
14:57 romanhunt joined #perl6
14:57 romanhunt morning all
14:58 romanhunt does anyone have any opinions on the book Perl6 and Parrot essentials?
14:59 pmichaud romanhunt: very out of date.
14:59 mathw I've got a copy
14:59 romanhunt thx
14:59 mathw It's good for nostalgic value
15:00 romanhunt unfortunately I cannot afford to spend the cash if its out of date. I was just hoping for something to read on the train etc
15:00 frettled Perhaps we should work on a small ebook?  :D
15:00 pmichaud are you more interested in p6 or parrot?
15:00 romanhunt perl 6
15:01 am0c joined #perl6
15:01 romanhunt both concepts are pretty facsinating though
15:01 pmichaud some of the parrot stuff is available as an e-book now (and updated).  there's not really an up-to-date perl6 book at the moment, although many of us are working on that.
15:01 romanhunt the multi-language interpreter <=> multi-interopreter-language ...
15:02 romanhunt I do want to learn parrot though
15:04 pugs_svn r29262 | pmichaud++ | [pm.txt]:  Another short question for TimToady++
15:04 pugs_svn r29262 |
15:04 pugs_svn r29262 | Pm-13:  What's the parent type of C<Regex>?  (I hope it's C<Method>.)
15:08 ng_feed rakudo-ng: colomon++
15:08 ng_feed rakudo-ng: Add all of the Num trig functions back in.
15:08 colomon ng: say Inf.sin
15:08 p6eval ng 545373: NaN␤
15:08 colomon oooo, that worked.
15:08 pmichaud ng:  say Inf ~~ Num
15:08 p6eval ng 545373: 1␤
15:12 dalek rakudo/ng: 5b836a4 | (Solomon Foster)++ | src/core/Num.pm:
15:12 dalek rakudo/ng: Add all of the Num trig functions back in.
15:12 dalek rakudo/ng: WARNING: Unfortunately, the trig spec tests are well beyond ng's capabilities at the moment.  atan, sin, cos, tan, sec, asin, and acos pass the basic tests from the old trig test suite (not counting the Inf tests, which all fail hard).  The rest are basically untested at this point.  I think I forgot to even implement atan2.
15:12 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/5​b836a4f12238f0c635c16218ba814474da8e688
15:16 pugs_svn r29263 | pmichaud++ | [pm.txt]:  Another question for TimToady++
15:16 pugs_svn r29263 |
15:16 pugs_svn r29263 | Pm-14:  Is the :c modifier allowed on token/regex/rule?  I.e., could
15:16 pugs_svn r29263 |     someone do...?
15:16 pugs_svn r29263 |         'abcdef' ~~ token :c(1) { cdef }
15:19 pugs_svn r29264 | mattw++ | [advent] subject alterations for mathw
15:30 he_ joined #perl6
15:42 rodi joined #perl6
15:50 Psyche^ joined #perl6
16:15 am0c__ joined #perl6
16:15 colomon_ joined #perl6
16:17 dalek nqp-rx: e6cb831 | pmichaud++ | src/Regex/Regex.pir:
16:17 dalek nqp-rx: Initial version of regex matching.
16:17 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​6cb831b3b53cc9e02ca32eab374a2052b31b749
16:17 dalek nqp-rx: fe021de | pmichaud++ |  (4 files):
16:17 dalek nqp-rx: Add ability to smartmatch regex/token/rule (although anchoring is
16:17 dalek nqp-rx: currently incorrect).
16:17 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/f​e021de05a74913f49c29892f45e6dc65c0e6b0a
16:17 dalek nqp-rx: 01c9533 | pmichaud++ |  (5 files):
16:17 dalek nqp-rx: Refactoring for Regex::Method.
16:17 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/0​1c953360b9c7d0d19e14b18566cb0ee05fbfb47
16:18 dalek nqp-rx: 6297c85 | pmichaud++ | src/Regex/Regex.pir:
16:18 dalek nqp-rx: Remove obsolete file.
16:18 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/6​297c85e67e37f009c700185cd56dc6a97a90e54
16:18 dalek nqp-rx: df1c1da | pmichaud++ | src/NQP/Actions.pm:
16:18 dalek nqp-rx: Small refactor of regex/token/rule action.
16:18 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/d​f1c1da18daf402bfc86c35b0f2e4df779393436
16:18 dalek nqp-rx: 5a0677a | pmichaud++ |  (3 files):
16:18 dalek nqp-rx: Add /.../ form of regexes and matching.
16:18 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/5​a0677a741b1f84dfe185ecf0df081507b3eb90b
16:36 zloyrusskiy joined #perl6
16:45 romanhunt joined #perl6
16:45 Wolfman2000 *yawn* morning
16:53 jeremiah joined #perl6
16:53 jeremiah OH HAI
16:53 payload joined #perl6
16:53 jeremiah is there a perl6 testing idiom for 'use'ing modules like in perl5?
16:54 jeremiah I'm thinking of something equivalent to use_ok
17:00 colomon joined #perl6
17:04 snearch_ joined #perl6
17:05 pnate2 joined #perl6
17:08 jeremiah rakudo; use Test; plan 1; sub ima_int(Int $x) {}; is ima_int(9), [], 'works with ints';
17:09 jeremiah rakudo: use Test; plan 1; sub ima_int(Int $x) {}; is ima_int(9), [], 'works with ints';
17:09 p6eval rakudo 7ef386:  ( no output )
17:09 jeremiah perl6: use Test; plan 1; sub ima_int(Int $x) {}; is ima_int(9), [], 'works with ints';
17:09 p6eval elf 29264: Cant locate Test in ( . ).␤
17:09 p6eval ..rakudo 7ef386:  ( no output )
17:09 p6eval ..pugs: pugs: *** Unsafe function 'use' called under safe mode␤    at /tmp/10oXn2wo4T line 1, column 1␤
17:12 jnthn jeremiah: there's some issues with Rakudo evalbot here...don't rely on "no output" meaning anything.
17:12 jeremiah okay :)
17:12 jnthn ng: use Test; plan 1; sub ima_int(Int $x) {}; is ima_int(9), [], 'works with ints';
17:12 p6eval ng 5b836a: 1..1␤Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
17:12 jnthn meh.
17:13 jnthn ng: use Test; plan 1; sub ima_int(Int $x) { 1 }; is ima_int(9), 1, 'works with ints';
17:13 p6eval ng 5b836a: 1..1␤ok 1 - works with ints␤
17:13 jeremiah ah!
17:13 jeremiah cool
17:14 jeremiah ng: use Test; plan 1; sub ima_int(Int $x) { 1 }; is ima_int("oh hai"), 1, 'works _only_ with ints';
17:14 p6eval ng 5b836a: 1..1␤Nominal type check failed for parameter '$x'; expected Int but got Str instead␤current instr.: '&ima_int' pc 153 (EVAL_1:56)␤
17:14 jeremiah ng: use Test; plan 1; sub ima_int(Int $x) { 1 }; dies_ok ima_int("oh hai"), 1, 'works _only_ with ints';
17:14 p6eval ng 5b836a: 1..1␤Nominal type check failed for parameter '$x'; expected Int but got Str instead␤current instr.: '&ima_int' pc 153 (EVAL_1:56)␤
17:15 jnthn jeremiah: You need to pass dies_ok a closure.
17:15 jeremiah ah, okay.
17:15 jnthn dies_ok { ima_int("lol") }, ...
17:15 jeremiah ng: use Test; plan 1; sub ima_int(Int $x) { 1 }; dies_ok { ima_int("oh hai") } 'works _only_ with ints';
17:15 p6eval ng 5b836a: sh: ./perl6: No such file or directory␤
17:16 jnthn ah, that'll just be the half-hourly rebuild.
17:16 jeremiah ng: use Test; plan 1; sub ima_int(Int $x) { 1 }; dies_ok { ima_int("oh hai") }, 'works _only_ with ints';
17:16 p6eval ng 5b836a: sh: ./perl6: No such file or directory␤
17:18 diakopter mberends: I saw your comments with masak... the new jsmeta/sprixel works the same way..
17:19 diakopter except instead of trampolining method calls (or recursive method calls as in TreeSpider) it's all inlined into one loop/switch
17:19 diakopter and the clones are extremely economical
17:20 diakopter there is just 1 allocation for each clone
17:22 diakopter mberends: except now I've got the itch to write a C# edition... b/c I'm morbidly curious how much faster it'd be :/
17:23 diakopter jnthn: C# C# C#
17:24 jnthn diakopter: Well, my priority is getting ng sorted out for now. :-)
17:26 ng_feed rakudo-ng: (jnthn)++
17:26 ng_feed rakudo-ng: Get role to instance application implemented (operators are fully in Perl 6, applicator is in NQP with one little Parrot-specific bit that we can eliminate later).
17:27 jnthn Mmmm. does and but are so nicer in ng. :-)
17:27 nihiliad joined #perl6
17:29 astrojp joined #perl6
17:30 dalek rakudo/ng: 10bc6e8 | jnthn++ |  (6 files):
17:30 dalek rakudo/ng: Get role to instance application implemented (operators are fully in Perl 6, applicator is in NQP with one little Parrot-specific bit that we can eliminate later).
17:30 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/1​0bc6e856b7e2df60293c2801175632915e34aa5
17:31 jnthn huh?
17:31 jnthn dalek reports ng as well as ng_feed now?
17:31 * jnthn would complain, but he likes the karma win.
17:32 * mathw would complain, because it clogs up his screen
17:32 * Wolfman2000 would complain, but he's doing homework
17:36 cognominal jnthn++  # more karma
17:37 jnthn @karma jnthn
17:37 lambdabot You have a karma of 587
17:38 * jnthn hopes his new laptop comes _early_ next week.
17:44 pnate2 joined #perl6
17:55 ng_feed rakudo-ng: (jnthn)++
17:55 ng_feed rakudo-ng: Allow my $x does Foo to work again.
17:55 ng_feed rakudo-ng: (jnthn)++
17:55 ng_feed rakudo-ng: Support for class Dog { does Smell }.
17:56 pmurias joined #perl6
17:57 diakopter pmurias: rehi
17:58 pmurias diakopter: once i port mildew to the new STD i could add a C# backend
17:59 dalek rakudo/ng: 1f1e259 | jnthn++ | src/core/traits.pm:
17:59 dalek rakudo/ng: Allow my $x does Foo to work again.
17:59 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/1​f1e2596bd78b3936b05c0eaa891ae1d7cbc5a9e
17:59 dalek rakudo/ng: 51c596c | jnthn++ | src/Perl6/ (2 files):
17:59 dalek rakudo/ng: Support for class Dog { does Smell }.
17:59 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/5​1c596c9670d5e47f4a9c20d83c00de4261ebf71
17:59 nihiliad joined #perl6
18:01 diakopter pmurias: cool
18:23 pmurias_ joined #perl6
18:24 pmurias joined #perl6
18:26 pmurias diakopter: i'm not familiar with .net so i will need help with writing the runtime
18:28 quantumEd joined #perl6
18:37 pointme joined #perl6
18:37 zaslon joined #perl6
18:43 justatheory joined #perl6
19:06 justatheory joined #perl6
19:06 ng_feed rakudo-ng: colomon++
19:06 ng_feed rakudo-ng: Add Num.atan2.
19:06 ng_feed rakudo-ng: colomon++
19:06 ng_feed rakudo-ng: Temporary patch to Any!to-radians and Any!from-radians to get them working in ng.  Also add Any.log.
19:07 finanalyst joined #perl6
19:07 colomon_ joined #perl6
19:08 dalek rakudo/ng: 8948704 | (Solomon Foster)++ | src/core/Any-num.pm:
19:08 dalek rakudo/ng: Temporary patch to Any!to-radians and Any!from-radians to get them working in ng.  Also add Any.log.
19:08 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/8​9487048f5c82e05e740a213c624277c866d2bda
19:08 dalek rakudo/ng: 15da065 | (Solomon Foster)++ | src/core/Num.pm:
19:08 dalek rakudo/ng: Add Num.atan2.
19:08 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/1​5da06541044b73f8bd6c20baf718711e2806be4
19:16 quantumEd left #perl6
19:21 ng_feed rakudo-ng: (jnthn)++
19:21 ng_feed rakudo-ng: Put back .?, .+, .* for method calls by name.
19:24 colomon_ jnthn: while I was messing around with trig, I discovered => doesn't work in ng yet.
19:25 dalek rakudo/ng: 53a6f77 | jnthn++ | src/glue/dispatch.pir:
19:25 dalek rakudo/ng: Put back .?, .+, .* for method calls by name.
19:25 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/5​3a6f77604fd4df549678906e491929d939f03b5
19:25 colomon_ I looked at adding it, but I can't figure out how to create a Pair other than :key(value), which doesn't seem useful for writing =>
19:36 jnthn colomon_: Pair.new(key => ..., value => ...)
19:36 jnthn I think.
19:41 colomon_ jnthn: errr.... => doesn't work, does it?  That was the whole point of the exercise...
19:42 colomon_ and ...
19:42 colomon_ > say Pair.new(:key("hello"), :value("42"));
19:42 colomon_ Could not find non-existent sub &fail
19:42 lambdabot <no location info>: parse error on input `;'
19:42 colomon_ Just occurred to me, though, that could be say failing rather than the new.  Let me check...
19:43 colomon_ ah, that's it, the new does work.
19:43 colomon_ Groovy, I think I can quickly make some improvements here...
19:43 jnthn colomon_: There's two => thingies.
19:44 jnthn colomon_: One is the operator
19:44 jnthn colomon_: The other is parsed by fatarrow.
19:44 colomon_ oh?
19:44 jnthn And happens when there's a literal on the lhs.
19:44 jnthn colomon_: See STD, fatarrow
19:45 colomon_ I think I'll try to add Pair.Str and Pair.perl first, they should be easy.
19:45 SirKay joined #perl6
19:45 jnthn colomon_: Which is separate from token infix:sym« => »
19:45 jnthn colomon_: OK, nice :)
19:47 colomon_ rakudo: say 10 => 20;
19:47 p6eval rakudo 7ef386: 10       20␤
19:47 jaldhar joined #perl6
19:47 payload joined #perl6
19:48 * jnthn afk for a bit
19:49 colomon_ rakudo: say (10 => 20).Str
19:49 p6eval rakudo 7ef386: Pair()<0x11fb390>␤
19:50 colomon_ rakudo: say ~(10 => 20)
19:50 p6eval rakudo 7ef386: 10       20␤
19:51 r0bby joined #perl6
19:58 colomon_ Just want to check and make sure the spec doesn't say anything about defining Pair.Str or ~Pair... anyone know?
20:09 ng_feed rakudo-ng: colomon++
20:09 ng_feed rakudo-ng: Early versions of Pair.perl and Pair.Str.
20:10 * colomon_ is starting to think helping write its library is a good way to learn a language.  :)
20:11 dalek rakudo/ng: 17a1ec1 | (Solomon Foster)++ | src/core/Pair.pm:
20:11 dalek rakudo/ng: Early versions of Pair.perl and Pair.Str.
20:11 dalek rakudo/ng: review: http://github.com/rakudo/rakudo/commit/1​7a1ec19e828f67359977a1428eb026803495fe1
20:13 finanalyst joined #perl6
20:14 finanalyst left #perl6
20:15 colomon_ Hmmm... looks like fatarrow is already in ng's grammer.
20:19 colomon_ Doesn't actually seem to be  infix:sym« => » in STD.pm ?
20:19 PacoLinux joined #perl6
20:21 jeremiah Can't find ./strict in @*INC
20:21 jeremiah ^^ What does that mean?
20:22 jeremiah Am I missing a library?
20:22 colomon_ did you say "use strict" in a Perl 6 program?
20:23 jeremiah I'm not sure, I am trying to compile masak's Web
20:23 jeremiah And I think his Configure script calls strict
20:23 jeremiah But I'm not certain since the next line of the error message is:
20:24 colomon_ I don't know anything about Web, alas.
20:24 jeremiah in Main (file <unknown>, line <unknown>)
20:24 jeremiah How can I print out the contents of @*INC?
20:24 colomon_ rakudo: say @*INC.perl;
20:24 p6eval rakudo 7ef386: ["/home/p6eval/.perl6/lib", "/home/p6eval//p2/lib/parrot/1.​8.0-devel/languages/perl6/lib", "lib", "."]␤
20:24 colomon_ but that won't be it.
20:25 jeremiah no?
20:25 colomon_ there absolutely should not a ./strict for you to find.
20:25 jeremiah okay
20:25 colomon_ use strict is a Perl 5ism.
20:25 colomon_ there is no Perl 6 equivalent yet (and actually, by default it is strict).
20:25 jeremiah I see.
20:26 jeremiah I think it is Configure.pm calling strict
20:26 jeremiah In any case, strace outputs this:
20:26 jeremiah stat64("./strict.pm", 0xbfc0affc)       = -1 ENOENT (No such file or directory)
20:28 colomon_ Huh.  Web/lib/Configure.pm does not call use strict.
20:28 colomon_ wonder if you're getting the wrong Configure.pm?
20:28 jeremiah I think I am!
20:28 jeremiah Good catch!
20:28 jeremiah I may have moved the wrong one.
20:29 jeremiah Going to diff them now
20:30 jeremiah Yup. Wrong Configure.pm
20:31 jeremiah Lo and behold, it works.
20:31 jeremiah Thanks colomon_
20:32 colomon_ jeremiah: you're welcome
20:34 huf where can i find a list of existing perl6 modules?
20:34 colomon_ huf: there isn't exactly one yet.
20:35 colomon_ the closest I'm aware of is proto's projects list.
20:35 colomon_ let me see...
20:35 nbrown_ huf: http://github.com/masak/prot​o/blob/master/projects.list
20:35 zloyrusskiy joined #perl6
20:36 nbrown_ huf: like colmon said it's not complete, but it has a few
20:36 huf thanks
20:36 colomon_ http://github.com/masak/prot​o/blob/master/projects.list ... whoops, nbrown_++ beat me to it.  :)
20:36 masak joined #perl6
20:36 masak oh hai, #perl6.
20:36 mberends speak of the ... breaker of things ?
20:37 masak anything need breaking? :)
20:38 mberends nah, your brainchild projects.list was being recommended
20:38 jeremiah lolitsmasak!
20:39 jeremiah I am still working in installing Web :P
20:39 masak omgitsjeremiah!
20:39 jeremiah (And blogging about it.)
20:39 masak jeremiah: let me know if I can help.
20:39 colomon_ jnthn, pmichaud: If one of you gets the chance, I've got an infix:«=>» for Pair, but can't figure out how to make the ng grammar recognize it.
20:39 jeremiah I've written 500 words, but I think about 100 more and it'll be finished. :)
20:39 masak jeremiah: I'm currently working on getting the last grant week blog post out.
20:39 jeremiah aha, groovy.
20:41 jeremiah So, one of the things is, perl6 doesn't necessarily have all the libraries needed in PERL6LIB to configure a given module
20:41 jeremiah For example, when installing Web, I needed to add Configure.pm to PERL6LIB
20:42 jeremiah But I put the wrong one there, since there are three I think under the rakudo dir.
20:43 masak jeremiah: PERL6LIB handling is not fun, agree.
20:43 jeremiah :)
20:44 masak jeremiah: that's probably the main reason I'm pushing for installed-modules despite being initially hesitant.
20:44 masak jeremiah: after that one lands, PERL6LIB will need to be set only for not-yet-installed modules.
20:44 jeremiah Well, with Configure.pm, that seems like a really good solution.
20:44 jeremiah Because there is more than on Configure.pm and users might get confused as to which one they want / need
20:44 romanhunt joined #perl6
20:45 masak nod.
20:45 masak proto introduces 'unintended success' in many dimensions.
20:45 jeremiah heh
20:45 masak I consider the proliferation of 'Configure.pm' in various places to be one of those dimensions.
20:49 colomon joined #perl6
21:07 mberends masak: those who do not learn history are doomed to repeat it: http://trac.parrot.org/parrot/browser​/trunk/compilers/p6ge/README?rev=7051 ;-)
21:08 Wolfman2000 rakudo: say "©".subst(/./, { ord($/).fmt('%X') }, :global);
21:08 p6eval rakudo 7ef386: A9␤
21:08 Wolfman2000 err
21:08 Wolfman2000 rakudo: say "©".subst(/./, { ord($/).fmt('%04X') }, :global);
21:08 p6eval rakudo 7ef386: 00A9␤
21:08 Wolfman2000 ...looks like I have to recompile rakudo
21:08 masak should ord() be defined on Str? not Buf?
21:09 Wolfman2000 masak: got me.
21:09 Wolfman2000 I did discover something interesting though
21:09 Wolfman2000 rakudo: say "hi".ord
21:09 p6eval rakudo 7ef386: 104␤
21:09 Wolfman2000 rakudo: say "h".ord
21:09 p6eval rakudo 7ef386: 104␤
21:09 Wolfman2000 ord only looks at the first character
21:09 Wolfman2000 or buf, or whatever it is
21:10 masak mberends: I'm curious about your URL, but I've yet to get through to the server.
21:10 jeremiah doing a 'perl6 t/01-web-basics.t' in Web's test dir produces this error Can't find ./Web in @*INC
21:10 jeremiah I do have Web in PERL6LIB
21:10 jeremiah Ah, but only as a dir, not as a .pm
21:11 masak jeremiah: export PERL6LIB=`pwd`/lib
21:11 mberends masak: tracked down pmichaud++'s first release of p6ge, relevant to parsers and grammar engines. 2004-11-18!
21:11 jeremiah ah okay
21:12 masak mberends: oh yes. I've actually tracked down the same file once. :)
21:12 masak mberends: PGE is a direct descendant of P6GE, IIRC.
21:14 mberends just wanted to be careful not to re-invent the same wheel ;)
21:14 masak hm, which wheel exactly? I'm already fully aware that what I'm writing is a port of PGE :)
21:15 masak that's why it has a very similar name.
21:15 mberends my perhaps redundant idea of porting (back) to C
21:15 masak oh!
21:15 masak now I see the relevant section.
21:17 masak right, P6GE started out as a PIR code generator written in C, and then changed into a PIR code generator written in PIR.
21:17 masak mberends: but your plan is to make neither, right?
21:17 masak yours would be a pure C regex engine.
21:18 pmichaud If I were to attempt a p6 regex engine in C, I'd start with nqp-rx.
21:18 mberends indeed, so there might be something not repeating there. The output would be the match object.
21:18 mberends pmichaud: thanks for a very good suggestion
21:18 lmc joined #perl6
21:18 pmichaud actually, I think it's more accurate to say that p6regex engines produce cursors nowadays
21:19 pmichaud match objects are really side-effects
21:19 masak nod.
21:19 pmichaud (even though they're the side effect we're most interested in :-)
21:19 mberends ok, need to sort out my terminology
21:19 masak I think I grokked the cursors model for a short while. need to re-grok it again soon.
21:20 pmichaud nqp-rx is much clearer on that model than pge, fwiw
21:20 mberends "second system done right"
21:20 masak :)
21:21 pmichaud anyway, to get p6regexes to work in C, you really need an underlying object model and methods
21:21 masak pmichaud: my plan for GGE is to first implement PGE to my own satisfaction, and then try to refactor it into nqp-rx.
21:21 pmurias joined #perl6
21:22 jeremiah t/01-web-basics.t ............. Symbol '$PERL6LIB' not predeclared in <anonymous> (t/01-web-basics.t:5)
21:22 pmichaud masak: (refactor into nqp-rx) ... that doesn't sound right.
21:23 jeremiah So reseting PERL6LIB produces a different test message.
21:23 pmichaud nqp-rx isn't a refactor of PGE.  It's a rewrite.
21:23 masak jeremiah: o.O
21:23 jeremiah I know, right. Weird.
21:23 masak pmichaud: yes, I know. maybe that plan won't work.
21:24 masak jeremiah: I'm now going to open t/01/web-basics.t to see what it contains.
21:24 jeremiah It is short. :)
21:24 masak and totally useless. :/
21:24 jeremiah Well, doesn't it check to see if we can find Web.pm?
21:24 jeremiah That seems useflu.
21:24 jeremiah oops
21:25 jeremiah useful.
21:25 masak jeremiah: I don't think so anymore.
21:25 jeremiah okay.
21:25 masak jeremiah: if the real tests run, then we've foind Web.pm.
21:25 masak no need to test it individually.
21:25 jeremiah okay
21:25 masak it just means there will be one more failing test in a sea of failing tests...
21:26 jeremiah I'll just jump over the tests for now and see if I can use Web.pm directly.
21:26 masak Ovid (I think it was him) has written at length about the evils of use_ok in Perl 5.
21:26 masak jeremiah: that sounds like a plan.
21:26 jeremiah cool
21:38 fridim_ joined #perl6
21:41 masak S05 says :actions, but Rakudo uses :action. which is it?
21:46 masak as uasi++ points out in http://twitter.com/uasi/status/6366831553 , there are numerous problems with S05:3794. calling the grammar 'Integer' produces a strange error in Rakudo. there's a missing semicolon on the line ending with "'binary'". &make doesn't work, since the parameter is named $match, not $/.
21:47 masak I'll fix the ones that seem obvious, and leave the rest to TimToady or someone.
21:48 colomon_ joined #perl6
21:49 pugs_svn r29265 | masak++ | [S05] fixed a number of infelicities in action example
21:49 jnthn evenin'
21:49 masak also, while I'm thinking about these things, why instantiate the action object? it has no state.
21:49 masak jnthn! \o/
21:50 colomon_ o/
21:50 masak rakudo: grammar Integer { rule TOP { x } }; Integer.parse("x")
21:51 p6eval rakudo 7ef386:  ( no output )
21:51 masak locally, that says "set_attr_str() not implemented in class 'Integer'"
21:51 * masak submits rakudobug
21:51 jnthn meh
21:51 rgrau could any of the rakudoperl twitter admins tweet today's advent? it deserves to be known :)
21:51 masak jnthn: works in ng? :P
21:52 jnthn masak: Dobut it.
21:52 jnthn masak: I fear it's the darn Parrot Integer PMC leaking in...even though we're in a HLL. :-/
21:52 masak hugme: help
21:52 hugme masak: (add $who to $project | list projects | show $project | hug $nickname | tweet $twittername $message )
21:54 masak hugme: tweet rakudoperl Perl 6 Advent Calendar Day 5: Metaoperators -- http://bit.ly/6ZiHlr
21:54 * hugme hugs masak; tweet delivered
21:54 masak jnthn: well, that's just too bad.
21:54 masak literally. it's exceedingly bad.
21:54 rgrau thanks masak++
21:54 masak rgrau: thanks for the suggestion. :)
21:54 jnthn masak: It's only my first guess.
21:55 jnthn ng: class Integer { }
21:55 p6eval ng 17a1ec:  ( no output )
21:55 jnthn ng: class Integer { }; say Integer
21:55 masak jnthn: it sounds reasonable.
21:55 p6eval ng 17a1ec: Integer()␤
21:55 jnthn ng: class Integer { }; say Integer.new.WHAT
21:55 p6eval ng 17a1ec: Integer()␤
21:55 jnthn hm
21:55 jnthn ng: grammar Integer { };
21:55 p6eval ng 17a1ec:  ( no output )
21:55 jnthn ng: grammar Integer { }; Integer.new
21:55 p6eval ng 17a1ec:  ( no output )
21:55 jnthn ng: grammar Integer { }; Integer.parse("")
21:55 p6eval ng 17a1ec: Could not find non-existent sub die␤current instr.: 'perl6;Grammar;parse' pc 8144 (src/builtins/Any.pir:52)␤
21:56 jnthn ng: grammar Integer { method TOP { say "called" } }; Integer.parse("x")
21:56 p6eval ng 17a1ec: Unexpected named parameter 'grammar' passed␤current instr.: 'perl6;Integer;TOP' pc 250 (EVAL_1:112)␤
21:56 jnthn heh
21:56 jnthn masak: It looks like ng may resolve it, but I don't think we do rule/regex/token yet.
21:58 masak nod.
21:58 masak will we have ng for the December release? or even for Christmas Eve? only time will tell.
21:58 * masak glances longingly skyward
22:01 jnthn masak: I'm getting settled down again now in the UK, so am digging in again. :-)
22:01 masak hugme: hug jnthn gratefully!
22:01 * hugme hugs jnthn
22:01 jnthn masak: Things should accelerate once I can haz a laptop that's not powered by clockwork. :-)
22:01 * masak thought all digital computers were powered by clocks
22:02 masak jnthn: are you getting one of those analog computers?
22:02 masak I hear Windows 7 runs smoother on those.
22:03 jnthn masak: I thought everything was smoother in the analog world. ;-)
22:04 masak yes, exactly! :)
22:04 masak well, as exact as it gets with physical moving parts. :)
22:06 snarkyboojum_ joined #perl6
22:06 jeremiah Solid state analog
22:11 mathw jnthn: are you on a seasonal visit to the UK?
22:11 jnthn mathw: Sorta.
22:12 jeremiah I Sweden, the seasons visit you.
22:12 jnthn mathw: At the moment I'm on a looking-after-family-dog visit. :-)
22:12 mathw woof
22:12 jnthn w00f
22:13 mathw oh it's an internet dog is it
22:13 masak loldog.
22:13 jnthn Mostly it's a sleeping and eating and barking at the postman dog. :-)
22:14 mathw sounds a bit like my cat
22:14 mathw except for the barking at the postman bit
22:14 mathw instead of that, he sits on the laptop
22:14 jnthn mathw: I suspect your cat would take less kindly to having a leash put on it and being taken for a walk around the block, though. :-)
22:14 mathw probably
22:15 mathw not many people train their cats to be walked
22:15 mathw and I find that self-walking is one of the best features of the cat
22:18 snarkyboojum joined #perl6
22:24 jeremiah A self-walking cat!
22:24 jeremiah What will they think of next.
22:24 mberends self-GC (or at least G-hiding) is also superior to dogs
22:26 mathw a self-writing compiler?
22:26 jeremiah _that_ will be the singularity for sure.
22:27 mberends self-certifying wasn't good for mortgages though
22:27 mathw yes, when we have a computer that's as smart as jnthn and pmichaud combined
22:27 mathw but now I'm off to bed
22:27 mathw night
22:27 masak mathw: 'night!
22:27 jeremiah Self-sleeping human ^^
22:27 * Wolfman2000 is almost done...
22:31 * jnthn is finally doing something (small) for book!
22:36 colomon_ mathw: how goes the Advent post?
22:38 snarkyboojum_ joined #perl6
22:38 colomon_ rakudo: say (-<<(1, 2, 3, 4)).perl
22:38 p6eval rakudo 7ef386: say requires an argument at line 2, near " (-<<(1, 2"␤in Main (file src/gen_setting.pm, line 2593)␤
22:39 colomon_ rakudo: say (-«(1, 2, 3, 4)).perl
22:39 p6eval rakudo 7ef386: say requires an argument at line 2, near " (-\x{ab}(1, 2,"␤in Main (file src/gen_setting.pm, line 2593)␤
22:44 masak rakudo: class A { method true() { False }; method Num() { 42 }; method Str() { "foo" }; method list() { (1,2,3) } }; my $a = A.new; say ?$a; say +$a; say ~$a; say @($a)
22:45 p6eval rakudo 7ef386:  ( no output )
22:45 masak locally, that yields 0, 42, foo, 123 (each on its own line)
22:45 masak Perl 6 aims to remove unnecessary surprises; things that complicate learning and hinder memory.
22:45 jnthn hehe
22:45 dalek book: dd9b746 | jnthn++ | src/roles.pod:
22:45 dalek book: Stub in an initial example we can use for explaining/discussing roles.
22:45 dalek book: review: http://github.com/perl6/book/commit/dd​9b746844cd39e23d321cc42c24d9370b08cd98
22:45 dalek book: 7519c2f | jnthn++ | outline.pod:
22:46 dalek book: Remove (?) from Roles chapter in outline, add an idea of something else we could have a chapter on.
22:46 dalek book: review: http://github.com/perl6/book/commit/75​19c2f64f5f412fb9d52b89a69cd694a9b4447e
22:46 masak why do I have to define the methods true, Num, Str, and list to do the above?
22:46 masak it's totally random.
22:46 masak Bool, Num, Str and List would have been fine.
22:46 masak or bool, num, str and list.
22:47 jnthn masak: I think there's some improvement to do there, yeah. I do wonder to what degree the Numeric role etc factors in to this.
22:47 jnthn That is, we'd go by those names in th efuture.
22:47 jnthn And hopefully they'd be more consistent.
22:48 jnthn masak: I agree that as it currently stands it's sub-optimal though.
22:48 colomon_ Are prefix and postfix hyperoperators supposed to work at the moment in master?  I can get >>. to work, and nothing else I've tried this week works.
22:48 masak it looks like a corner no-one's ever thought to dust.
22:48 jnthn colomon_: No, they don't.
22:48 jnthn colomon_: We only did infix ones.
22:49 jnthn >>. is a special case.
22:49 jnthn masak: It's come up in various other ways before.
22:49 masak jnthn: nod.
22:49 masak I've been known to bring it up, too.
22:50 jnthn masak: Aye. It's worth asking again. Hopefully each time it's asked, a solution gets more likely. :-)
22:50 masak ok, I'll ask it again then.
22:50 masak :)
22:50 jnthn ;-)
22:51 masak why do the conversion methods to Bool, Str, Num and List look so haphazard?
22:51 masak they're pretty important, and it would really help if they were consistent.
22:51 jnthn masak: Part of the problem though is that .Num suggests "return a Num"
22:51 jnthn But we'd rather +42 did not.
22:51 jnthn We want an Int there.
22:52 masak Int does Num.
22:52 Wolfman2000 If $ == $.Int, force Int?  I don't know
22:52 jnthn masak: In a slightly haphazard kinda way, yes.
22:54 masak jnthn++ # @!whoz-op
22:54 masak it's a "Kill your darlings" kind of joke to have in a book, but at least I enjoyed it :)
22:55 masak jnthn: oh, and you seem to suffer from the illusion that one can check array membership by smartmatching against the array. that hasn't been true for some time.
22:55 masak jnthn: I can fix it, if you want.
22:56 masak jnthn: easiest is $sender ~~ any(@!whoz-op), I think.
22:57 jnthn masak: Oh, that was taken out?
22:57 jnthn You sure?
22:57 masak 100% sure.
22:57 masak that was part of the big smartmatch refactor that got backported into 5.10.
22:58 masak in a way, smartmatch got slightly less smart.
22:58 masak I think I've come around to it being a good change, though.
22:58 jnthn masak: OK, go ahead and fix.
22:59 jnthn masak: It reads nicer anyway.
22:59 masak is there a way to remove a role at runtime? the opposite of 'self does $plug-in'?
22:59 jnthn masak: not as far as I'm aware.
22:59 masak jnthn: I think I'll make it 'eq' instead of '~~' then, too. since it's string comparison anyway.
22:59 jnthn masak: There's "a way"
22:59 jnthn masak: Yes, do.
23:00 jnthn masak: Keep a copy of the object around, pre-compositon.
23:00 colomon joined #perl6
23:00 jnthn masak: well, but that doesn't actually do what you want too well though.
23:00 masak no, not really.
23:00 jnthn masak: heh. use Role::doesn't
23:00 masak :)
23:00 masak Role::undoes
23:01 jnthn Role::donotwant
23:01 masak :)
23:01 cognominal short for Role does is Droid?
23:02 jnthn masak: Anyway, I'll try and fill out the text in that chapter a bit tomorrow :-)
23:02 jnthn masak: It's another little bit of progress towards book. :-)
23:02 masak \o/
23:03 jnthn masak: Does it look like a decent example, overall?
23:03 jnthn (once we tidy up the rough edges, of course)
23:04 masak jnthn: yes, I like it.
23:05 masak jnthn: I'm thinking whether it might be too much to show all that code and then explain it, but we can always think about order a bit later on.
23:06 jnthn masak: Well, I'm assuming classes (and thus methods and attrs) along with a bunch of basics, plus regexes and so on have come before this.
23:06 jnthn masak: If so, it puts many things together as well as adding some new things.
23:06 jnthn masak: It is quite a bit of code though, yes.
23:06 masak nod.
23:07 meppl joined #perl6
23:09 dalek book: 9a50799 | masak++ | src/roles.pod:
23:09 dalek book: [roles] fixed spelling error, smartmatch thinko
23:09 dalek book: review: http://github.com/perl6/book/commit/9a​507994b3e9fe6418d9ed0ff3a983eb9fa9920e
23:09 dalek book: c41383f | masak++ | src/builtins.pod:
23:09 dalek book: [builtins] fixed typo
23:09 dalek book: review: http://github.com/perl6/book/commit/c4​1383fa1981f75be8552a767815f5605b11b043
23:11 * jnthn has to say, (my family)++ for equipping the conservatory with good heating and a good sound system.
23:11 jnthn This is quite a cool hacking/writing space.
23:12 masak what's a conservatory? sounds like a fancy word for 'storeroom' :P
23:12 jnthn lol
23:13 jnthn masak: best explained with an image...
23:13 jnthn masak: something like http://www.clean2u.com/imag​es/Conservatory%20clean.gif
23:13 arnsholt masak: Vinterhage, in Norwgian
23:13 masak arnsholt: oh. never heard that.
23:13 masak arnsholt: I think we'd just say 'glasveranda'.
23:13 arnsholt That works too =)
23:13 mberends not where one puts one's conserves :-/
23:14 masak mberends: or one's embalmed relatives.
23:14 mberends lol
23:14 jnthn mberends: Huh? You expected English to be logical? :-)
23:14 cognominal conservatory:  2 a room with a glass roof and walls, attached to a house at one side and used as a greenhouse or a sun parlor.
23:15 jnthn cognominal: Pretty much.
23:15 jnthn On a clear night, also nice to lie on a sofa in it and look at the stars. :-)
23:17 mberends it's the pantry where one puts one's conserves, but not one's pants
23:18 brrant joined #perl6
23:18 mberends jnthn: English can be consistently illogical
23:19 jnthn .oO( mum: JONATHAN!!! What are THESE doing in here?! )
23:19 jnthn mberends: I guess there's always a chance that the larder contains a bar of lard...
23:19 Tene jnthn: where does your family live?
23:20 jnthn Tene: In a village in Yorkshire.
23:20 jnthn (North east of England)
23:20 jnthn If I walk fast, I can get to somewhere that I can see the sea in ~ 30 mins.
23:20 Tene nice. :)
23:21 jnthn Yeah. It's quite a change in pace after having spent the rest of the year mostly living in a capital city. :-)

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

Perl 6 | Reference Documentation | Rakudo