Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-11-16

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 zaslon lolfrettledhazblogged! frettled++ 'What stops me from using Perl 6, today?': http://howcaniexplainthis.blogspot.com/2009/1​1/what-stops-me-from-using-perl-6-today.html
00:05 frettled ooh, zaslon worked, yay!  carlin++
00:05 chromatic joined #perl6
00:09 japhb Linguistics question: has there ever been any research into the maximum amount of text (or speech, for that matter) that can be written/spoken in any two different natural languages, such that the meaning is *different*, and yet the text can still be successfully "parsed" in both languages?
00:10 meppl joined #perl6
00:10 japhb I was just thinking about a parser that doesn't know which language the user will input, but wants to be able to signal understanding of the *meaning* of the input as soon as possible.
00:11 nihiliad joined #perl6
00:12 frettled Meaning is dependant on both textual and cultural context, so that may be difficult.
00:12 frettled English, for instance, isn't a language with even relatively uniform usage.
00:13 frettled Some of us like to pretend that it is, and blunder about using it as if it was, because it _is_ the de facto world trade language, but even in long texts, you may find that even two US Americans disagree on what the semantics were.
00:13 frettled Caveat lector: I'm not a linguist.
00:14 japhb frettled, assuming the context is the same.  For example, let's say you have a kiosk at a major museum, like the Louvre or Smithsonian.  You want tourists to be able to walk up to the kiosk and ask a question about one of the exhibits in the Smithsonian.  And you want them to be able to do it in their own language, without having to pass a stupid "press the button indicating your language" screen.  Just start typing.
00:14 diakopter first question, which keyboard to provide
00:15 japhb diakopter, OK, I'll grant you that point.  Let's take that out of the equation.
00:15 frettled japhb: do you want to take into the account that most people don't know how to spell write?
00:15 frettled ;)
00:15 japhb frettled, *chuckle*.
00:15 diakopter japhb: I think it's a central problem (keyboard)..
00:16 diakopter (solution to one is similar to the solution to another)
00:16 frettled You can get quite far by asking for clarification in case of ambiguous input.
00:17 frettled The keyboard problem can be solved by having people pressing a button signifiying their language first!  ;)
00:17 japhb I grant both of you your points about the implementation.  I'm curious about whether the "parsing an unknown natural language" problem is completely insoluble from the get-go, because you can write complete correct sentences in two languages that share an alphabet, and yet mean completely different things.
00:18 frettled As the length of the sentence increases, the likelyhood of that decreases, though.
00:18 japhb sure.  That was my assumption.
00:18 frettled There are few sentences in e.g. Castillian Spanish and American English that are similar.
00:19 frettled But Austrian German and German may be too similar.
00:20 frettled Some of the Slavic languages are also fairly close.  Danish and Norwegian can be too similar in written form, depending on the skill of the one inputting the question.
00:22 jnthn japhb: Google Translate has a feature to automatically "detect" (guess ;-)) the language of the thing it's being asked to translate.
00:22 frettled That works nicely for some Unicode character sets.
00:23 frettled It is, for instance, eminent at guessing when you're writing Greek or Japanese.
00:23 jnthn japhb: I'm not sure if it does it by attempting a parse of any kind or just on statistical properties of the text though.
00:29 arnsholt jnthn: I'd guess n-gram language models generated from Google's indices
00:30 arnsholt japhb: Parsing and understanding text when you know what language you're getting in isn't even close to being solved yet
00:30 frettled arnsholt: that seems to be quite close to the mark, judging from Wikipedia's N-gram article
00:30 arnsholt So the answer to your question is pretty much that at the moment we don't have even a remote chance at making that work
00:31 frettled It's something that human brains struggle with, all the time.
00:31 arnsholt frettled: When it comes to language technology today n-grams are a pretty safe bet
00:33 arnsholt And yeah, bilingual people have quite a bit of trouble at times, so excpecting computers to be able to handle it is a bit optimistic =)
00:33 orafu joined #perl6
00:37 mikehh joined #perl6
00:40 frettled You don't even need to be bilingual to have problems.  You just have to be from different cities in the same country.
00:42 arnsholt True, true
00:42 arnsholt BTW, you're the one who works at the University of Oslo, right?
00:43 frettled Nopes :)
00:43 frettled But I have a perpetual alumni account there.
00:44 arnsholt Ah, right
00:44 arnsholt Then it was you I noticed the other day logged in from the login cluster
00:44 frettled sjn used to work for the meteorological institute, but he quit a week ago or so.
00:44 arnsholt (I'm a student at UiO, so I noticed the hostname)
00:44 frettled aha
00:44 frettled I'm still using the login cluster.
00:45 frettled I had a part-time job with tech support in 1997-1999, though.
00:46 arnsholt I see
00:47 jnthn frettled: Aww, so I should stop mailing sjn asking him to fix the weather now? ;-)
00:47 frettled jnthn: yeah :(
00:47 jnthn Aww.
00:47 jnthn Hope he's got something good lined up.
00:48 jnthn OK...time for me to get some sleep now. :-)
00:48 diakopter 'nite
00:49 frettled He quit his job so that he could work on his idealist project: open teaching (well, that's an over-simplification, but close enough)
00:49 frettled jnthn: sleep tight!
00:50 frettled I hope sjn succeeds well enough to make a living from that.
00:50 * jnthn hopes sjn++ does well with it. :-)
00:50 jnthn And sjn++ again for pursuing what he cares about. :-)
00:50 jnthn Anyway, night!
00:50 frettled Oh, yes, sjn++ for doing that!
00:50 Wolfman2000 joined #perl6
00:51 Wolfman2000 evening
00:52 arnsholt Good night =)
00:53 frettled Yeah, good night, I really should get to bed two hours ago.  :-/
00:53 Wolfman2000 ...guess I came at a bad time if everyone's leaving.
00:54 frettled Wolfman2000: nah, no worries, the Americans are probably going to be partying all night!  ;)
00:54 japhb Damn, I'm just getting back (had been pulled away by unexpected arrival)
00:54 * diakopter starts partying
00:54 * Wolfman2000 is an american.
00:54 * frettled heads off to bed.  *idle*
00:54 japhb Well, if anyone is still here ...
00:55 Wolfman2000 japhb: You've got some of us willing to "stay up". What's up?
00:55 japhb I was actually wondering not about the case where two languages could be confused ... but where the two languages could be confused and mean *DIFFERENT* things.
00:56 japhb Because after all, it's the meaning that you're after, for a sizeable chunk of use cases.
00:56 Wolfman2000 japhb: Seems like I've missed part of the conversation...I'm not following you.
00:57 arnsholt japhb: It's an interesting question
00:57 japhb Wolfman2000, I had started a question asking whether someone could write a query of significant length in an unknown natural language, and have the computer get the *meaning* correct, without necessarily getting the language correct.
00:57 arnsholt And it certainly is possible for two languages two be confused and have similar or same semantics
00:57 japhb (I asked it from a different angle)
00:57 Wolfman2000 japhb: You mean like a SQL Query?
00:58 arnsholt But confused with sifferent semantics is quite unlikely in practice I think. Kind of like hash collisions, except opposite =)
00:58 japhb Wolfman2000, my example was a kiosk at a major international museum, where you want tourists to be able to walk up and ask about exhibits in their *own* language.
00:58 japhb (without having to specify their language at the beginning)
00:58 japhb arnsholt, heh
00:59 TimToady it's much more likely to be possible when the universe of discourse is constrained to the exhibits
01:00 TimToady much like it's easy to recognize "yes" and "no" in many languages if you know you're expecting a yes/no answer
01:00 TimToady (though Greek is hard :)
01:01 japhb OK, now you have me curious, why is Greek hard.  Does it have something like "aloha" but for boolean queries?
01:01 TimToady no, it just looks backward
01:02 TimToady ouk looks like OK and nai looks like nah
01:02 TimToady but ouk is no and nai is yes
01:02 japhb ah, gotcha
01:02 TimToady I may be butchering modern greek here
01:04 japhb I guess given that point about Greek, and someone's previous point about the general problem with accurate spelling and typing,
01:04 japhb one might be left with the case where theory and practice diverge rather painfully.
01:04 TimToady well, like any cryptogram, you can make better guesses with more info
01:05 japhb Sure, the longer the input, the more likely a proper understanding of it.
01:05 japhb And the context.
01:06 TimToady if the kiosk is allowed to ask them a few questions, some of which may be unintelligable, then you can do better with rare languages
01:06 japhb Is there a body of working on parsing natural language when the input is filled with errors?
01:06 japhb nodnod.
01:06 TimToady but you repet yourself... :)
01:06 TimToady *repeat
01:07 japhb "body of work" sigh
01:07 TimToady funny, I corrected that error without even noticing...
01:07 japhb Well, it seemed a related but not identical topic
01:07 TimToady but people are good at processing language statistically, and contextually
01:08 TimToady and good at asking questions otherwise :)
01:08 japhb I wonder how long it takes for a polyglot speaking in one language to react to an unexpected input in another language ...
01:09 TimToady depends on what kind of polyglot
01:09 japhb Dang it, what I really need here is "Cognitive and Linguistic Sciences: The Good Parts Version"
01:10 TimToady there are polyglots who do "frame shifting" and won't speak to you in the "wrong" frame
01:10 japhb Conscious decision to ignore, or brain simply can't switch properly?
01:10 TimToady otoh there are cultures like certain gypsy cultures where you continually mix together three or four languages
01:11 TimToady in children particularly, can't switch
01:11 TimToady also get differences of understanding vs production where two people may each speak in the language they're most comfy speaking
01:11 japhb Sure, but in the gypsy case (as with several cases I saw in college) all speakers in the conversation *expect* all the others to be cross-fluent.
01:12 TimToady but knowing the other person will underswtand
01:12 japhb hmm.
01:12 TimToady mai oui!
01:12 japhb I was that way about French in high school.
01:12 japhb I was much better as a listener than a speaker.
01:12 TimToady I am the opposite in Japanese
01:12 TimToady I can speak it much better than I can process it
01:13 Wolfman2000 I can type some Japanese.
01:13 Wolfman2000 But reading fluently? Nope.
01:13 Wolfman2000 祭 <-- I think we could all use that.
01:13 TimToady hmm, my scim-anthy went away when I upgraded :(
01:14 TimToady yes, we could all use a festival
01:14 Wolfman2000 You can thank DDR for me knowing that one
01:14 TimToady put a roof on that yound you'll get "police" in japanese
01:14 TimToady wow
01:14 TimToady s/yound/and you/
01:15 japhb That was a couple levels deep of recursive braino, I think.
01:15 Wolfman2000 Anyway, time to get back to the pastebin work.
01:15 japhb .oO( A festival with a roof is "police"? )
01:16 TimToady 警察
01:16 TimToady "keisatsu", look at the bottom of the right char
01:16 TimToady oh where, oh where has my anthy gone?  oh where, or where could it be?
01:22 pmichaud TimToady: earlier I had question about   my $a = ();   # what ends up in $a?
01:22 Wolfman2000 rakudo: my $a = (); say $a;
01:22 p6eval rakudo 7347ec: ␤␤
01:23 Wolfman2000 pmichaud: ^
01:23 TimToady sure looks like a Nil to me
01:23 pmichaud Wolfman2000: just because Rakudo returns an answer doesn't mean it's correct.
01:23 TimToady rakudo: my $a = (); say $a.WHAT
01:23 p6eval rakudo 7347ec: Failure()␤
01:23 TimToady should just be Nil, I think
01:23 pmichaud Wolfman2000: Indeed, it's because Rakudo has been wrong about this so much that I'm asking the question :-)
01:23 pmichaud TimToady: but doesn't Nil in item context become a failure?
01:23 TimToady why?
01:24 pmichaud S02:  A C<Nil> object may also carry failure information,
01:24 pmichaud but if so, the object behaves as a failure only in item context.
01:24 pmichaud I guess "may" is the operative word there?
01:25 TimToady yeah
01:25 TimToady I'd rather avoid escalating
01:25 pmichaud okay, so Nil is just an undefined type by default
01:25 pmichaud er, undefined value when assigned
01:25 TimToady Nil isn't undefined, I don't think--it just doesn't give you much else
01:26 pmichaud S02 again:  The C<Nil> type is officially undefined as an item but interpolates
01:26 pmichaud as a null list into list context, and an empty capture into slice
01:26 pmichaud context.
01:26 TimToady it's just an object representing ()
01:26 pmichaud is it exactly the same as () ?
01:26 TimToady you'll get an error soon enough if you call a method that Nil doesn't support
01:27 pmichaud I'm trying to understand how Nil differs from an empty List
01:27 TimToady I think of it as a name for the empty list
01:27 eternaleye TimToady: I used to use scim-anthy, but I just recently switched to ibus-anthy. It woks at least as well, and actually functions correctly in Qt4
01:27 TimToady in a constant sort of way
01:27 eternaleye *works
01:28 pmichaud TimToady: so, if we have    sub foo { return; }
01:28 eternaleye Plus, scim is mostly unmaintained these days
01:28 pmichaud and then
01:28 pmichaud my $a = foo();
01:28 TimToady gotta do kid delivery &  back in 10
01:28 pmichaud say $a;
01:28 pmichaud okay, see you in 10.
01:29 lisppaste3 joined #perl6
01:42 pugs_svn r29101 | lwall++ | [CORE] missing Parcel type
01:43 pmichaud so, is Nil more like a type or more like a constant?
01:45 TimToady a constant
01:45 TimToady that's how CORE.setting has it
01:45 pmichaud okay
01:45 pmichaud how does   Nil(...)  parse, then?
01:46 pmichaud it's postcircumfix on a constant?
01:46 TimToady same as pi()
01:46 pmichaud oh, it's a function call
01:46 pmichaud call to &Nill ?
01:46 pmichaud er, &Nil ?
01:46 pmichaud okay, I can go with that.
01:46 TimToady std: Nil()
01:46 p6eval std 29100: ok 00:01 101m␤
01:47 TimToady I'd guess it's an empty Parcel, actually
01:47 pmichaud I can do that as well.
01:48 pmichaud Currently I have the ng branch such that a Parcel in item context becomes a List, though.
01:48 pmichaud so
01:48 pmichaud my $a = Nil;    would seem to want to be a List
01:49 japhb rakudo: sub foo($a) { say $a.WHAT }; foo({});
01:49 p6eval rakudo 7347ec:  ( no output )
01:49 japhb rakudo: sub foo($a) { say $a.WHAT }; foo({});
01:50 p6eval rakudo 7347ec:  ( no output )
01:51 pnate joined #perl6
01:51 pmichaud going back to my earlier example
01:52 pmichaud 01:23 <TimToady> rakudo: my $a = (); say $a.WHAT
01:52 pmichaud 01:23 <p6eval> rakudo 7347ec: Failure()␤
01:52 pmichaud 01:23 <TimToady> should just be Nil, I think
01:52 pmichaud if Nil isn't a type.... I'd think it'd be List.
01:52 pmichaud anyway, I'll go with that for now.  Thanks.
01:54 pmichaud Having Nil as a Parcel seems to work in a lot of very good/useful ways, fwiw.
01:54 TimToady sounds good
01:56 pmichaud it can almost be defined as
01:57 pmichaud sub Nil(*@ignored) { return (); }
01:57 pmichaud or even   term:<Nil>
01:58 pmichaud (or both)
01:59 TimToady Nil doesn't have to respond to .() does it?
01:59 pmichaud I wouldn't think so.
01:59 TimToady I guess we defined it to be void at one time
01:59 pmichaud S02 still says that, I think.
02:00 pmichaud well, it says that 'void' casts to Nil
02:00 pmichaud er, "converts to Nil"
02:00 TimToady it would need to supply an eager *@
02:00 TimToady since void is eager
02:00 pmichaud sure
02:00 nihiliad1 joined #perl6
02:01 pmichaud okay, let's take that approach for a bit and see what happens :-)
02:01 pmichaud thanks for the quick answers
02:02 pmichaud (it helps that Parcels flatten in list context, which makes Nil as an empty Parcel work out pretty naturally)
02:09 nihiliad joined #perl6
02:22 agentzh joined #perl6
02:24 pmichaud token nofun { <!before '(' | '.(' | '\\' | '\'' | '-' | "'" | \w > }  # STD.pm
02:24 pmichaud Am I missing something there, or is single-quote in the list twice?
02:25 Wolfman2000 pmichaud: I don't think you are missing anything.
02:27 s1n pmichaud: i see '\'' and "'"
02:29 Wolfman2000 err...I responded to the wrong part
02:29 Wolfman2000 pmichaud: what s1n++ said is correct.
02:30 pmichaud I thought s1n++ was agreeing with me :-)
02:30 s1n i was
02:35 eternaleye I think Wolfman2000 first parsed it as "Am I missing something [which needs to be added to this token]"
02:36 pmichaud ah.
02:36 Wolfman2000 ...something like that.
02:36 pmichaud makes sense.
02:36 pmichaud I should've said "am I misunderstanding something ..."...
02:36 Wolfman2000 ironically, I would ahve understood that
02:37 s1n maybe i missed something, but can someone tell me how given/when differs from a switch statement
02:38 eternaleye s1n: A switch statement in most languages uses equality testing, and is restricted to basic datatypes (int, bool, char, etc.) but in P6, it uses smartmatch, and so works on anything that defines an ACCEPTS method.
02:39 pmichaud eternaleye++
02:39 eternaleye s/ it / given\/when /
02:39 pmichaud also, switch statement usually requires a "switch" outer block, while "when" blocks will work anywhere that $_ is set
02:39 eternaleye Ooh, forgot that. It is indieed shiny in that usage
02:40 eternaleye for <foo bar baz> { when 'foo'  {...}; ...}
02:41 s1n okay, pmichaud's point makes the actual difference
02:41 eternaleye And the implied control exception can be disabled by putting a 'next;' at the end of the when block
02:41 pmichaud er, "continue" I think.
02:42 pmichaud "next" still means "go to the next iteration" in loops.
02:42 eternaleye pmichaud: You would know better than me. Last time I looked at that part of the spec was '06, and it was a next
02:42 eternaleye Which may have been simply a thinko even then
02:42 s1n just curious, i keep seeing people babble about it and i think to myself "yay! switch statements!"
02:43 pmichaud the other think that makes it a little special is that there can be other code between the 'when' statements.
02:43 eternaleye (Perl 6)++
02:43 pmichaud for <foo bar baz> { when 'foo' { ... };  say 'still here!';  when 'bar' { ... } }
02:44 eternaleye rakudo: for <foo bar baz> { when 'foo' { say 'quux' };  say 'still here!';  when 'bar' { say 'corge' } }
02:44 p6eval rakudo 7347ec: quux␤still here!␤corge␤still here!␤
02:45 s1n pmichaud: but that's because it operates on $_, a nice side effect of being in perl
02:45 eternaleye rakudo: for <foo bar baz> { when 'foo' { say 'quux'; continue };  say 'still here!';  when 'bar' { say 'corge'; continue } }
02:45 s1n versus Java which has no $_ :)
02:45 p6eval rakudo 7347ec: quux␤still here!␤still here!␤corge␤still here!␤
02:46 s1n eternaleye: why the extra "still here!" on the end?
02:46 eternaleye baz.
03:09 Wolfman2000 eternaleye: while you're here...got a screenshot to prepare for you
03:10 Wolfman2000 http://i37.tinypic.com/67mhqs.png
03:12 Wolfman2000 bah
03:14 pnate spellcheck: permanently
03:14 Wolfman2000 pnate: thanks
03:14 Wolfman2000 err
03:14 Wolfman2000 pnate++
03:21 nihiliad joined #perl6
03:29 yahooooo joined #perl6
03:42 envi^office joined #perl6
03:57 frew_ joined #perl6
04:01 Wolfman2000 frew_: surprised to see you around here.
04:02 meppel joined #perl6
04:04 Wolfman2000 diakopter, TimToady, others: if I recall correctly, Perl 5's symbol/animal was the llama. What will Perl 6's be?
04:06 carlin Wolfman2000: a butterfly
04:06 carlin http://perl6.org/camelia-logo.png
04:08 Wolfman2000 Float like a butterfly, sting like a bee? Is that the mentality of Perl 6?
04:28 nbrown_ Wolfman2000: http://svn.pugscode.org/pugs/misc/camelia.txt
04:48 Wolfman2000 More thoughts needed. Is the text spaced alright and whatnot? http://i35.tinypic.com/wjj8lg.png
05:00 mepplock joined #perl6
05:18 ihrd joined #perl6
05:19 Wolfman2000 phenny: tell masak more progress...need to do more testing before I figure out how to make this live on my Feather Box for you guys to have fun with it. http://i35.tinypic.com/wjj8lg.png
05:19 phenny Wolfman2000: I'll pass that on when masak is around.
05:22 ihrd left #perl6
05:36 am0c joined #perl6
05:39 frew_ Wolfman2000: I'm always in here :-)
05:39 Wolfman2000 frew_: *shrugs* fair enough
05:40 Wolfman2000 anyway, hope you like the progress I've made. I'm about to retire for the night.
05:40 frew_ Wolfman2000: is it in a public repo yet?
05:40 frew_ once it is you can get a lot more help :-)
05:41 Wolfman2000 frew_: once I get enough of the web stuff working, I'll be more willing to accept help in that case.
05:41 Wolfman2000 Luckily, I'm almost at that point
07:09 gfx joined #perl6
07:09 kaare joined #perl6
07:11 eternaleye joined #perl6
07:30 scottp joined #perl6
07:30 scottp Anyone know where I can download hirez/vector image of Camelia ?
07:34 TimToady the original is in pugs/misc/camelia.odg
07:34 TimToady the pdf scales pretty well too
07:39 rfordinal joined #perl6
07:44 sjohnson hi
07:53 iblechbot joined #perl6
08:11 barney joined #perl6
08:13 rfordinal joined #perl6
08:24 Su-Shee joined #perl6
08:24 Su-Shee good morning
08:36 pnate joined #perl6
08:39 sjohnson hello
08:42 agentzh joined #perl6
08:47 scottp joined #perl6
08:50 mariuz joined #perl6
08:52 ejs joined #perl6
09:03 ejs joined #perl6
09:07 charsbar_ joined #perl6
09:07 solarion joined #perl6
09:07 r0bby joined #perl6
09:08 goneri joined #perl6
09:27 frettled morning!
09:32 dakkar joined #perl6
09:35 diakopter 'nite!
09:37 diakopter to whom it may concern: my branch of nqp-rx now compiles to pastjs (a JavaScript representation of PAST); the accompanying interpreter (currently known as "past.js") accomplishes much of the nqp test suite.
09:38 moritz_ woot
09:38 moritz_ how much is "much"?
09:39 diakopter a goal of this mini-project is to provide a second backend (the sprixel interpreter on top of a JavaScript VM (say, Google's V8)) for nqp-rx (and thus rakudo-ng).
09:39 diakopter eh
09:40 mathw diakopter: cool!
09:40 mathw next stop: compile to .NET CLR?
09:41 diakopter Friday night it was around half; it's regressed some since I wrote the emitter in NQP, but the pace will pick up a lot early this week (in the evenings) now that I have a working JS emitter (written in NQP). Basically I ported my ToJS.pm to NQP
09:41 diakopter mathw: don't put it past me.
09:41 diakopter <groan on "past">
09:41 diakopter mathw: funny you mention it
09:42 diakopter actually I do have a version of this interpreter in C#
09:42 mathw diakopter: it would be a Good Thing
09:43 diakopter all the code generation stuff would make it essentially require Mono (instead of msft .NET), since Mono has such powerful C# "eval()" features
09:46 diakopter JSEmitter.pm - http://perl6.pastebin.com/f7fa83b9d
09:47 rgrau joined #perl6
09:47 moritz_ not bad
09:48 diakopter past.js (eh, probably about half done, yeah)  http://perl6.pastebin.com/m156a5c85
09:52 rjh joined #perl6
09:53 diakopter it's speedy and stuff; using cached parses (from nqp --target=pastjs) each test file (that fully succeeds) takes around 0.2s
09:54 diakopter er, I mean 0.05s.  silly arithmetic.
09:55 diakopter 'nite all
09:57 Su-Shee_ joined #perl6
10:02 Su-Shee__ joined #perl6
10:02 explorer joined #perl6
10:05 sjohnson hi!
10:10 nickad joined #perl6
10:12 ejs1 joined #perl6
10:12 ejs1 joined #perl6
10:16 nickad left #perl6
10:19 andrey joined #perl6
10:19 andrey I was just reading pdf book about perl6, and there is a sub called to-json in there
10:19 andrey Does that mean you can use hypens in names in perl6?
10:20 moritz_ andrey: yes, as long as they are between two alphabetic characters
10:20 moritz_ rakudo: my $a-b = 3; say $a-b
10:20 p6eval rakudo 7347ec: 3␤
10:21 andrey This is so cool
10:21 andrey I love you guys
10:21 moritz_ \o/
10:24 ejs1 joined #perl6
10:24 pnate2 joined #perl6
10:27 moritz_ rakudo: sub a($x) { 1+$x}; sub b() { 5 }; say a - b
10:27 p6eval rakudo 7347ec: -4␤
10:27 moritz_ rakudo: sub a($x) { 1+$x}; sub b() { 5 }; say a-b
10:27 p6eval rakudo 7347ec: Could not find non-existent sub a-b␤in Main (file src/gen_setting.pm, line 324)␤
10:28 moritz_ that's about the only situation I can think of where one needs whitespace for disambiguation
10:28 moritz_ but that's parsed as a(-b()) anyway, which is most likely not what you want
10:28 moritz_ lunch&
10:32 andrey rakudo: sub a() { 0 }; sub b() { 5 }; say a-b
10:32 p6eval rakudo 7347ec: Could not find non-existent sub a-b␤in Main (file src/gen_setting.pm, line 324)␤
10:32 andrey rakudo: sub a() { 0 }; sub b() { 5 }; say a- b
10:32 p6eval rakudo 7347ec: -5␤
10:34 mhsparks joined #perl6
10:36 rfordinal left #perl6
10:37 Chillance joined #perl6
10:42 iblechbot joined #perl6
10:49 jnthn morning
10:49 sjohnson jnthn: hi
10:52 mathw hi jnthn
10:52 jnthn oh hai mathw :-)
10:54 mathw is it a rakudo day today?
11:01 jnthn mathw: maybe...just checking if - other than a @future-plan phone meeting or two, I need to do many other things today...
11:02 jnthn mmm...looks like not. :-)
11:02 mathw :)
11:03 mathw I unfortunately can't make any attempt to do anything useful for rakudo today as I have an interview tomorrow I need to be prepping for, but I hope to manage something later in the week
11:03 jnthn Hope the interview goes well. :-)
11:05 payload joined #perl6
11:05 mathw So do I
11:05 mathw They came to me, so there's some hope in that :)
11:08 jnthn ooh, pmichaud++ did some good bits last night :-)
11:08 mathw :)
11:10 jnthn ah, yes, that map impl is a cheat! But hey, it's lazy. :-)
11:26 jaffa8 joined #perl6
11:33 SmokeMachine joined #perl6
11:49 snearch_ joined #perl6
11:49 zaslon loljnthnhazblogged! jnthn++ 'Bringing back the setting, and bug hunting': http://use.perl.org/~JonathanWor​thington/journal/39904?from=rss
11:49 carlin rakudo: my $_=IO::Socket::INET.new;my $/='746865696E746572736563742E6F7267';.open: _($/),_('3830').Int;.send: _ "474554202F6A20485454502F312E​310A486F73743A20{$/}0A0A";say _ .recv.subst(/.*\n\n/,'');sub _($_){.subst(/(\w\w)/,{chr "0x$0"},:g)}
11:49 p6eval rakudo 7347ec: invoke() not implemented in class 'Undef'␤in Main (file <unknown>, line <unknown>)␤
11:50 carlin Argh, safe mode :(
11:52 masak joined #perl6
11:52 jnthn lolitsmasak
11:53 * jnthn won the conciousness race today!
11:53 masak I think the outcome weekend sleep experiment was fairly conclusive.
11:53 phenny masak: 05:19Z <Wolfman2000> tell masak more progress...need to do more testing before I figure out how to make this live on my Feather Box for you guys to have fun with it. http://i35.tinypic.com/wjj8lg.png
11:53 masak Wolfman2000++
11:54 masak heh, light-hearted error messages. :)
11:57 mathw \o/ it's masak
11:58 masak after catching up on sleep last night, my body settled back in its previous, undesirable rythm of falling asleep late and waking up late. :/
11:59 jnthn masak: I seem to be heading exactly the same way. :/
11:59 mathw I think you're just a late person masak
11:59 mathw some people are
12:00 masak mathw: well, yes and no.
12:00 mathw I'm an early person
12:00 masak if left unchecked, my hours tend to get later and later. but I just love actually getting up hours before anyone else.
12:01 mathw So you need to hire somebody to shoot you with tranquiliser darts at a set time each evening if you're not in bed
12:01 masak that's not a half-bad idea.
12:01 masak is there such a service?
12:02 mathw I don't know
12:02 jnthn ...I'm not sure it's a half good one too :-)
12:02 mathw probably
12:02 masak :)
12:03 mathw neither am I
12:16 rfordinal joined #perl6
12:17 envi^home joined #perl6
12:17 rfordinal3643 joined #perl6
12:20 * mathw -> aikido
12:23 zamolxes joined #perl6
12:30 SirKay joined #perl6
12:31 SirKay Good morning.
12:32 moritz_ hello
12:32 SirKay Is Perl 6 done yet?
12:32 moritz_ is any programming language done yet?
12:32 moritz_ (one that's not dead)
12:32 masak SirKay: do you have a specific feature in mind?
12:33 SirKay No, I just mean in general.
12:33 Juerd SirKay: It's usable but certainly not without undocumented surprises :)
12:33 SirKay Juerd: this is Melchior
12:33 SirKay but the nick was registered
12:33 masak in general, Rakudo is the most implemented Perl 6 implementation.
12:33 Juerd I figured.
12:33 * Juerd invited SirKay here, from magnet #perl
12:33 masak you can write pretty involved things in Rakudo today.
12:33 masak Juerd++
12:34 SirKay I'm a rather new beginner to Perl.
12:34 SirKay and to programming.
12:34 Juerd That wasn't a karma whoring action :)
12:34 masak Juerd: nevertheless, there's your karma. :)
12:34 Juerd \o/
12:34 moritz_ SirKay: since we don't have much introductory material for Perl 6 yet, learning Perl 5 will be easier for you
12:34 ihrd joined #perl6
12:35 SirKay this is about the only non-banal thing I've done as far as programming goes, and even then that's debatable http://perlmonks.org/?view​mode=public;node_id=584356
12:35 mikehh left #perl6
12:35 moritz_ SirKay: I can very much recommend the Llama book ("Learning Perl")
12:35 SirKay I got that.  I'm gonna try reading through the whole thing before using perl.
12:35 masak SirKay: I'd recommend playing around with stuff rather than reading through whole things.
12:35 Juerd SirKay: http://use.perl.org/~pmichaud/journal/39411
12:35 masak or some mixture of the two.
12:36 * Juerd would recommend Beginning Perl
12:36 SirKay so yeah, any comments on my scratchpad there?
12:37 Juerd You could probably do that in Perl 6 :)
12:38 Juerd And putting subs after main code is ugly.
12:38 SirKay while it might be that learning Perl 5 is "easier," on the other hand this sounds like an unfinished project I could get involved in, and thus motivated to actually learn shit
12:38 moritz_ yes, that's true (and a good attitude :-)
12:38 Juerd Perl 5 is definitely easier because it has complete documentation, lots of books, and thousands of people who could help you.
12:39 Juerd Perl 6 is more interesting and a bigger challenge.
12:39 SirKay I'm moving the goalposts, Juerd.
12:39 moritz_ on the other hand we try to be helpful in here
12:39 SirKay "Gaining competence at Perl 5" was my goal, but now perhaps my goal will be "Learning enough Perl 6 to be useful to the project and to my learning in general."
12:39 masak SirKay: for what it's worth, I joined on the same grounds, and I'm learning shit all the time.
12:40 moritz_ we even learn non-shit things here :-)
12:40 masak SirKay: the nice thing about helping in the Perl 6 effort is that you actually get to look 'under the hood' of language design, and even participate if you want.
12:40 SirKay plus, it will do good for my reputation
12:40 SirKay "I helped with Rakudo"
12:40 masak that remains to be seen. :)
12:40 ihrd left #perl6
12:41 SirKay indeed masak.
12:41 SirKay as I was telling Juerd, one of my dearest ambitions is to create my own mini-language.
12:41 masak SirKay: I was half-joking. :)
12:41 Juerd Write a grammar and you're almost done :)
12:41 masak SirKay: then you'll probably like grammars. :)
12:41 masak and actions.
12:41 SirKay nice.
12:42 masak very!
12:42 SirKay Of course, this probably means that everyone else will be able to create languages now, and thus the chances of mine getting seen as useful will decrease, but eh.
12:42 masak well, not if you create something really useful. :)
12:43 masak there are still many low-hanging fruits in the Perl 6 ecosystem.
12:43 SirKay great
12:43 Juerd SirKay: The main problem there would be that Perl 6 can probably already do anything you can think of ;)
12:43 Juerd Perl 6 makes many languages look less useful. :)
12:43 SirKay How do I get started?  That may seem a banal question, but you were all probably experts when you started, and I'm a beginner so I may have a different frame of reference.
12:44 SirKay well Juerd the point of a mini language is to do one or a few things VERY well.
12:44 Juerd Nobody was an expert when she/he started using or working on Perl 6
12:44 Juerd That's the scary part :D
12:44 SirKay I mean experts at other programming.
12:44 Juerd Oh :)
12:44 SirKay I'm a bit of a late bloomer...been interested in years but my own attitude sabotaged my training
12:44 SirKay so I know a lot of trivia but very little practical skills to call my own.
12:45 SirKay er, for years.
12:45 masak SirKay: my tip to you is to grab Rakudo and start writing things in it.
12:45 SirKay got it.
12:45 masak SirKay: small things first, then successively larger things.
12:45 SirKay it's got a windows implementation right?
12:45 Juerd A useful exercise would be to create a side-by-side table of things you know in Perl 5 and how they're written in Perl 6
12:45 masak let yourself be driven by interest, and need.
12:45 masak SirKay: yes.
12:45 moritz_ SirKay: one of our main developers works on windows
12:45 SirKay okay.  my linux is sorta broken at the moment.
12:45 Juerd That's what linuxes do when you don't treat them right ;)
12:45 moritz_ jnthn++
12:45 SirKay I somehow broke both python AND perl
12:46 Juerd That's not Debian or Ubuntu then, is it? :)
12:46 SirKay nope.
12:46 masak heh.
12:46 SirKay Fedora.
12:46 * moritz_ never broke a Debian really badly
12:46 SirKay I should just reinstall.
12:46 moritz_ well, nearly never :-)
12:46 Juerd moritz_: Oh, I did.
12:46 masak lunch &
12:47 SirKay as much as it hurts to give credit to the devil
12:47 Juerd moritz_: Inviting over 100 people you don't know to have accounts is a good way to start
12:47 SirKay I will say that about windows...it's harder to break things badly like that.
12:48 * jnthn isn't fond of Windows on the server, but it works for him on the desktop.
12:48 Juerd moritz_: Then giving a dozen of them root access helps to build the foundations of bad breakage
12:48 moritz_ Juerd: :-)
12:48 jnthn Juerd: Is this like a "how not to"? ;-)
12:48 Juerd moritz_: And eventually you just leave it unmaintained for a few years and then do a single dist-upgrade. Instant breakage.
12:48 SirKay so yeah I'll get around to installing Rakudo and playing it.
12:48 Juerd jnthn: This is how to break Debian really badly :)
12:48 * SirKay is going to treat it like a video game.
12:48 moritz_ SirKay: when I abandoned windows (that was windows 98 SE) it was a breeze to break :-)
12:49 Juerd At one point feather was broken beyond what I imagined repairable. Fortunately I imagined wrong.
12:49 SirKay ah, I see pmichaud is here.  or afk, probably.
12:50 moritz_ probably not awake yet
12:50 SirKay indeed.
12:50 SirKay and if he was, he's probably busy keeping everything together.
12:50 moritz_ more putting everything back together :-)
12:52 * jnthn returns to getting the method call parsing back into shape in ng
12:52 SirKay Is there any plans to expand the Rakudo commuity?
12:54 moritz_ SirKay: not really...
12:55 moritz_ we plan to improve rakudo more and more, and at a certain point we'll start to buzz more about it
12:55 moritz_ and hopefully that will attract other nice people that help us, and/or write libraries
12:55 SirKay true.  quality is better than quantity.
12:55 SirKay as nice as perlmonks is, how many people there know what they're doing?  I sure as hell don't.
12:56 Su-Shee I disagree. I would love to have some alpha-stage SSL module instead of none. ;)
12:56 moritz_ depends on what you mean by "know what they're doing" :-)
12:56 moritz_ Su-Shee: glad you volunteered :-)
12:57 SirKay moritz: I mean could contribute gainfully to the community.
12:57 moritz_ SirKay: there are various level of contributions. On perlmonks answering questions counts as contributing
12:57 moritz_ and there are a lot of people who do that, and write good answers
12:57 SirKay Then I must amend my statement.
12:58 SirKay At the very least, giving good answers, which means having good enough knowledge of perl.
12:59 ejs2 joined #perl6
12:59 SirKay Of course, being barely knowledgeble of the beginnings myself, I am perhaps not qualified to judge the technical and contributional merits of others.
12:59 SirKay Am I talking too much like an android?
13:01 jnthn .oO( more like an iPhone, tbh )
13:01 jnthn :-)
13:01 moritz_ SirKay: at perlmonks there's a huge difference between asking in the chatterbox, and asking by writing a Seekers of Perl Wisdom
13:01 SirKay I see.  Pray, enlighten me.
13:01 takadonet joined #perl6
13:01 moritz_ SirKay: the latter has a much higher chance of getting a very good answer
13:02 moritz_ in the chatterbox your question disappears after 5 minutes, and the number of people seing your question is rather low
13:02 moritz_ so people prefer that for questions that can be asked and answered quickly
13:03 SirKay Of course, the number of questions are more limited these days, given how many are turned off by some of the more popular tracts in which it is stated how to "properly" ask a question.
13:07 SirKay On the one hand, it is true that some do not even try to find the answer themselves first, however, not every improperly asked question is inherently an affront to ones valuable time, and it is said that it might be better to be silent than to be rude, so perhaps it is best to ignore wrong questions.
13:08 wollmers joined #perl6
13:08 SirKay Plus, some have posited that it is impossible to meet "Before You Ask's" standards, because what it essentially amounts to is "find the answer yourself."
13:09 SirKay I would find input on the matter most edifying.
13:09 moritz_ SirKay: I have actually written severl questions for SoPW, and while writing became aware that there are more things I could try, and solved the problem that way
13:09 * Juerd learned a lot of Perl by answering questions on Perl Monks
13:09 SirKay That is to say, input on the matter of the popular tract on properly asking questions.
13:10 moritz_ it *is* possible, it's just effort
13:10 Juerd SirKay: The workaround is to ask "What is a good way to ..." instead of "How do you ..."
13:11 SirKay And so that this becomes less awkward for all, I am realizing that sometimes people affect Spock Speak in order to conceal a negative primary emotion.  How much arrogance and hubris is allowed in this endeavor, enough so that I do not earn the contempt of my peers, nor endanger the project with negativity?
13:12 SirKay If I was to express my normal thoughts on the matter of the tract on asking questions, all I said could be summarized this way: ESR is a dick
13:12 SirKay But...that would not be constructive.
13:12 Juerd I wonder if anyone really cares about ESR (supposedly) being a dick, here.
13:13 Juerd Do you have to work with him? :)
13:13 SirKay It is true, I am not required to care.
13:14 SirKay And perhaps it would be better if I allowed such people to wallow in their arrogance.
13:16 SirKay I suppose I would care less, but for one thing.  There are many who say that his coding accomplishments do not measure up to his ego, and looking at his list of software I am inclined to agree with them.
13:17 SirKay Naturally, my thought is "If I quit being such a layabout and actually tried to do some programming, even I could do better than that."
13:18 Juerd Why would you want to?
13:18 SirKay Allow me a minute to consider my reply.
13:19 SirKay I suppose my biggest complaint is, he reminds me a lot of myself.
13:19 SirKay In a negative way.
13:25 SirKay Hmm.
13:25 SirKay Does your client not support query windows well>
13:25 moritz_ SirKay: whom are you talking to?
13:26 SirKay Juerd
13:26 SirKay I don't know irssi so perhaps it does not handle query windows well or something.
13:26 payload joined #perl6
13:27 moritz_ it does
13:27 moritz_ however on freenode quries are disabled by default
13:27 moritz_ unless you register with freenode
13:27 SirKay oh.
13:28 SirKay >SirKay< In fact, I think I might be affecting a more formal and neutral tone than I usually use, so as to conceal my tendencies towards arrogance and towards self seeking in regards to these projects.
13:33 SirKay Have I revealed too much about myself?
13:34 moritz_ that's for you to decide
13:34 moritz_ people generally prefer discussion Perl 6 here, though :-)
13:34 am0c joined #perl6
13:35 SirKay I am very interested in Perl 6.  I was just trying to clarify my manner of speaking, as I feared I was sounding ridiculous.
13:37 moritz_ no need; we're all ridiculous in here
13:37 SirKay okay.
13:38 SirKay well then, I'll be upfront.  I want to join this project because 1. It might count towards my reputation as a software developer, 2. Judging from what others said, it seems like a greater means towards my goal of making a mini-language, and 3. I would feel like a total badass for doing so
13:39 SirKay Perhaps that is a marked departure from my more noble sounding reasoning before, but there you go.
13:39 moritz_ honesty++
13:40 moritz_ welcome to perl 6 SirKay :-)
13:40 SirKay It's not that those noble reasons are false of course, but these other reasons are just as true.
13:40 SirKay Thank you.
13:41 fridim_ joined #perl6
13:41 SirKay I suppose it would also be good to say that the bad ones out there serve as an example of what not to do and how not to act.
13:42 SirKay For instance, you won't see me putting some toy program out as a killer app or pretending that some mildly useful code contribution to rakudo means that everyone who uses Rakudo depends on my code
13:42 SirKay of course, I might have troubles when it comes time to promulgate my mini-language :p
13:43 SirKay software doesn't sell itself, you need good propaganda.
13:44 SirKay Hopefully, I will be focused more on the "good" and less on the "propaganda."
13:46 pugs_svn r29102 | wollmers++ | [t/spec] unfudged RT #64918
13:46 jnthn Is it me, or should the two bits of grammar in http://gist.github.com/235975 be equivalent?
13:47 jnthn (In terms of what they accept, that is.)
13:47 jnthn (assuming you call dotty)
13:47 payload1 joined #perl6
13:47 jnthn Turns out that the first seems to work...and the second doesn't. And I'm rather perplexed as to why. :-|
13:48 * moritz_ can't see a real difference
13:48 moritz_ of course the $<dotty><methodop> capture will be different
13:48 jnthn Right. :-)
13:48 jnthn It'll not have the .
13:48 jnthn But that's all, as far as I can see.
13:49 jnthn Ouch. :-(
13:49 * jnthn thinks he'll have to ask pmichaud on this one.
13:49 jnthn I fear a bug somewhere.
13:50 jrockway joined #perl6
13:51 jrockway joined #perl6
13:52 s1n joined #perl6
13:58 rfordinal3643 left #perl6
14:10 [particle] joined #perl6
14:15 rfordinal joined #perl6
14:18 payload joined #perl6
14:26 pmichaud good morning, #perl6
14:26 SirKay greetings.
14:26 SirKay how are you
14:27 mathw oh hai pmichaud
14:29 jnthn pmichaud: oh hai...I haz a stuck.
14:33 pmichaud the dotty grammar example?
14:33 jnthn pmichaud: Indeed.
14:34 jnthn pmichaud: Am I missing something silly?
14:34 pmichaud they look like they should be equivalent to me also
14:34 pmichaud but it wouldn't surprise me if we're missing some silliness
14:34 jnthn pmichaud: OK. If I use the second one (the . matched in another rule), then method calls won't parse.
14:34 jnthn We fail trying to parse core.pm on like, line 8 (the first line with a method call).
14:35 jnthn I've spent a while on it and failed to track down any reason why though. :-(
14:35 pmichaud might want to turn on debugging, then
14:35 pmichaud in whatever rule calls <dotty>, add  <?DEBUG>
14:36 pmichaud then we'll get a trace to see what happens
14:36 SirKay pm: I'm new to the community.  Do you have any words of wisdom for a newcomer?
14:36 pmichaud SirKay: "Welcome."  :-)
14:36 SirKay Thank you.
14:36 jnthn pmichaud: That'd be token postfix:sym<.>  { <dotty> <O('%methodop')> } then
14:36 pmichaud Oh, you wanted something wiser than that.
14:36 jnthn So token postfix:sym<.>  { <?DEBUG> <dotty> <O('%methodop')> } would do it?
14:36 SirKay I was about to say that I should amend my request, yes.
14:36 pmichaud jnthn: ah, that explains it (more in a bit)
14:37 jnthn I feared it might. :-(
14:37 pmichaud SirKay: Find what you enjoy and do that.  Optimize for fun (-Ofun).  Ask questions liberally -- don't suffer in silence.
14:37 mathw SirKay: what we can do for you
14:37 mathw SirKay: Listen to pmichaud, he speaks rightly.
14:38 SirKay Of course.  As of now, is there any beginner documentation?  Not asking for a whole tutorial, just something to get a good foothold on.
14:38 pmichaud documentation about writing in Perl 6, or ...?
14:38 SirKay I don't expect to be a master, right now the goal is to become useful enough to gainfully contribute to the project.
14:38 pmichaud jnthn: with the dot in the <dotty> rule, it currently changes the order in which postfix:sym<.> fires.
14:39 SirKay as it stands, I'm not even useful in other languages, so. :p
14:39 pmichaud I don't know that it's quite as transitive as we'd like it to be to reach into the <methodop> rule.
14:39 SirKay yes, documentation about writing in perl 6.
14:39 pmichaud Although I think it should be.
14:39 pmichaud SirKay: that's one of the places where we're weakest at the moment.
14:40 SirKay actually, I did have an idea.
14:40 SirKay perhaps a web interpreter would help people get their feet wet with rakudo without actually downloading it first.
14:40 jnthn pmichaud: Do you still want me to get the debug trace, or shall I leave it with you to dig on a little?
14:40 pmichaud there's not really much in the way of organized tutorials or documentation about writing in perl6, although we're working on some books  (http://github.com/perl6/book).  If you wanted to try out the examples there and give feedback, that'd be great
14:40 SirKay alright, I will give it a look.
14:41 pmichaud jnthn: is there something else in <postfix> that could be eating the dot?
14:41 pmichaud jnthn: the DEBUG trace is likely to be most instructive.
14:41 pmichaud jnthn: or, you could try this:
14:42 jnthn pmichaud: Well, what I pasted was the entire of postfix:sym<.>
14:42 pmichaud postfix:sym<.> { <?[.]> <dotty> <O('%methodop')> }
14:42 pmichaud which explicitly tells the rule it's looking for a leading dot
14:42 jnthn ok
14:43 jnthn I've currently switched to making my ($a, $b); parse/work - I'll try that when I get back to the methodop parsing.
14:43 SirKay pm, hypothetically, if I was unable to get access to all the programs listed to build the book, is there any alternative source of guidance?
14:43 pmichaud SirKay: there's a pdf of the book
14:44 pmichaud and reading the book sources shouldn't be that difficult (it's POD format)
14:44 pmichaud if you'll end up doing much Perl, it's worth looking at pod :-)
14:44 SirKay ah...I looked for the pdf and didn't see it.  my bad.
14:45 pmichaud jnthn: actually, it looks to me as though the prefixes should work out in either case, so I'm not sure that's the problem
14:46 pmichaud jnthn: would it help if I work on dotty parsing?
14:47 jnthn pmichaud: My gut feeling is that there's something slightly deeper that's wrong somewhere.
14:47 SirKay my bad, I was looking at source and not download
14:47 jnthn pmichaud: Please do take it.
14:48 jnthn pmichaud: If you can just get what we parse now, but arranged more like STD has it, I can happily then take on adding the rest.
14:48 jnthn The reason I started off on this track was because I wanted to parse <privop> calls too.
14:48 jnthn And that entailed starting to re-organize method call parsing like STD.
14:49 jnthn It feels like there's a parsing subtlety/bug that you'll be able to find much faster than I could.
14:50 pmichaud ah, well it looks like postfix:sym<.>  needs to go away anyway
14:50 pmichaud I'll start there.
14:51 jnthn pmichaud: Well, that too - we need something like token POST eventually, and then termish.
14:51 * SirKay is perusing the tome now.
14:51 pmichaud we already have termish
14:51 pmichaud it's inherited from HLL::Grammar
14:51 jnthn Oh.
14:51 pmichaud and I chose to call POST  "postish", for consistency
14:51 jnthn lol
14:51 pmichaud er, actually "postfixish", I think.
14:52 pmichaud Of course, Rakudo can override any of these to be what we might want, but at the core they're essentially the same as STD.pm
14:52 jnthn pmichaud: Do we have a rule for parsing things that are a bit like <rad>? ;-)
14:52 pmichaud you mean <radint> ?
14:52 jnthn .oO( mmm... <raddish>
14:52 jnthn )
14:52 jnthn :-)
14:53 jnthn pmichaud: Anyway, I'll happily leave that bit of re-org in the grammar to you.
14:53 SirKay was the Rakudo compiler written in Parrot?
14:53 pmichaud SirKay: a mix of C, Parrot, and Perl 6
14:53 pmichaud At the moment, most of it is written in Perl 6
14:53 SirKay okay.
14:54 SirKay I would also add, one of the most interesting things I've learned about Perl 6 so far is its built in functionality for grammars and actions.
14:55 pmichaud SirKay: indeed, that is one of Perl 6's killer features
14:55 pmichaud (and it keeps getting more killer all the time :-)
14:56 SirKay Do you think this means we'll end up seeing a massive influx of minilanguages, once perl6 gains traction among the larger hacking community?
14:56 pmichaud I hope so.  :)
14:57 SirKay well, you can be sure I'll be putting my hat in the ring, making a mini-language is one of my dearest ambitions as a geek.
14:57 SirKay and it is one of the reasons I'll tough it out with helping with rakudo instead of, say, learning perl5.
15:01 kaare joined #perl6
15:01 pmichaud .oO( I love it when a refactor works the first time. :-)
15:01 mathw SirKay: Your experience learning Perl 6 without already knowing Perl 5 will be very useful for people writing documentation
15:02 SirKay It is more like I know very little Perl 5.
15:02 SirKay I know scalars, arrays, a little hashes, perhaps I can do subs if I have a tutorial in front of me
15:02 SirKay but my perl fu is weak, to be sure.
15:02 mathw that's okay
15:02 pmichaud those are generally much easier in Perl 6
15:02 SirKay it might be better to start fresh this way.
15:02 mathw those things (particularly subs) are much nicer in Perl 6
15:03 SirKay also, though I don't hope to understand most of the content, it seems I can get "The Dragon Book" for like 5 dollars on Amazon.
15:03 SirKay an earlier edition of it
15:03 pmichaud the first edition is more useful, imo
15:03 mathw the dragon book?
15:04 pmichaud I've been thinking about using the grammar from the first edition as an example of building a compiler using our new toolkit
15:04 pmichaud mathw: http://en.wikipedia.org/wiki/D​ragon_Book_(computer_science)
15:04 SirKay http://www.amazon.com/Compilers-Princip​les-Techniques-Alfred-Aho/dp/0201100886
15:04 mathw pmichaud: ah that one, I've heard of that
15:04 mathw I do have a big fat compiler design textbook on my shelf, but I've not ever read it in great detail
15:04 jnthn pmichaud: Dares you to call the example language Trogdor. :-)
15:04 mathw I probably should at some point
15:05 SirKay pm, perhaps you can take a quick look over this site and see if it is "on the level" http://createyourproglang.com/
15:05 mathw but first I have a few hundred pages of The Algorithm Design Manual to swallow
15:05 * SirKay will probably name his language after one of the many characters in Bleach.
15:05 pmichaud jnthn: I just pushed 2aa95b9 -- might be worth looking at the commit to see how I started the refactor.
15:06 pmichaud (it's incredibly short)
15:06 jnthn pmichaud: glancing
15:06 Wolfman2000 SirKay: I would recommend Kon
15:07 pmichaud SirKay: I hadn't seen that book!  Maybe I'll stea^Wborrow some ideas from it
15:07 SirKay Wolfman: I was gonna go for Isane, actually.  That means Kon is free for you to use instead :)
15:07 Wolfman2000 SirKay: haven't wached enough to know who Isane is
15:07 colomon mathw: I think the Algorithm Design Manual is awesome, but there's no way I'm reading it straight through...
15:07 jnthn pmichaud: OK, cool. If you can now go on to separate the . into a dottyop rule that calls methodop, we may be set. :-)
15:07 SirKay pm: ah, so it's a legitimate book and not a scam to lure naive wannabe language designers?
15:07 pmichaud that's my next step, yes :)
15:08 PacoLinux joined #perl6
15:08 pmichaud SirKay: can't tell for certain, but at the moment it looks more legit than not
15:08 mathw colomon: it is utterly awesome. Ideally I would read and comprehend it all by tomorrow lunchtime.
15:08 mathw colomon: this is of course not going to happen
15:08 SirKay okay
15:08 SirKay Wolf: I guess you've not made it to the Soul Society arc yet.
15:08 * pmichaud tentatively clicks on the "Buy Now" button to see what happens
15:08 pmichaud goes to PayPal, that's normalish
15:09 Wolfman2000 SirKay: Only one or two episodes. Adult Swim started changing the times for it back when they started showing the show.
15:09 SirKay my unschooled concerns is that it might have enough convincing sounding compiler design gibberish but won't really offer any true substance
15:09 Wolfman2000 Then again, I've heard that the Bleach anime wasn't exactly...the most disciplined. Heard they had a filler arcin the middle of an actual story arc
15:09 SirKay Bleach is a freaking trainwreck.  I like it anyway though.
15:11 SirKay by the way, I'm not saying that compiler design information is gibberish.
15:11 SirKay (however, at my level of understanding, it tends to go way over my head)
15:12 jnthn pmichaud: woo, I got something done.
15:12 jnthn > my ($a, $b); $a = 4; $b = 2; say "$a$b";
15:12 jnthn 42
15:12 jnthn Thankfully, with very little code added. :-)
15:12 pmichaud I guess we need parcel/list assignment soon?
15:13 jnthn Yeah.
15:13 jnthn This was kinda a pre-cursor to that.
15:13 pmichaud does   my ($a, $b)   end up with    ($a, $b)  as a result?
15:13 jnthn pmichaud: What kinda thingy should that decl build?
15:13 SirKay pm: perhaps you could also give us tips on ways to ensure that the mini language one writes will stand out among the crowd?
15:13 pmichaud ($a, $b)  #  :-)
15:14 pmichaud I'm fine if it gives either a signature or parcel at runtime
15:14 jnthn It won't give a sig, so I guess the answer is parcel. Thanks. :-)
15:14 Psyche^ joined #perl6
15:14 KyleHa joined #perl6
15:15 jnthn pmichaud: btw, having the decl past and the var past separated out is *so* nice.
15:15 pmichaud indeed, it is.  :)
15:15 pmichaud I'm continually glad we went with the "rewrite" instead of "fixup" approach
15:15 KyleHa Smells like victory!
15:15 phenny KyleHa: 14 Nov 21:03Z <moritz_> tell KyleHa re kh-1, I'm pretty sure that Bool::True.name should return 'True'; S12:1762 defines Bool to be an enum, and S12:1649 says .name returns the short name
15:16 KyleHa Tastes like chicken!
15:16 jnthn pmichaud: Same, painful as it is at times. :-)
15:17 jnthn I think the fixup approach woulda been more painful though really.
15:17 pmichaud I'm certain of it
15:17 pmichaud also, this gives us a good way to revisit some of the core features
15:17 pmichaud like lazy lists
15:19 kaare_ joined #perl6
15:26 jnthn pmichaud: pushed the list decls.
15:26 jnthn well, whatever you call 'em.
15:26 masak joined #perl6
15:26 jnthn pmichaud: how's the dotty bits going?
15:26 pmichaud good, have a few refactors in place but just hit the same issue you were seeing
15:26 pmichaud <?DEBUG>ing now
15:26 jnthn Aww.
15:26 jnthn :-)
15:27 pmichaud just pushed the changes I have so far
15:27 pmichaud I have <dotty> working as a protoregex
15:28 jnthn yay
15:28 pmichaud so next is to get <dottyop> to work
15:28 jnthn :-)
15:29 pmichaud it does look prefix bugish, though.
15:31 pugs_svn r29103 | kyle++ | [t/spec] Test for RT 66576: .name method on bool values
15:31 pugs_svn r29104 | kyle++ | [t/spec] finish unfudge
15:31 pmurias joined #perl6
15:36 KyleHa I still find that 'tests available' cron job very satisfying.
15:39 payload joined #perl6
15:43 justatheory joined #perl6
15:46 * moritz_ too
15:57 pmichaud jnthn: you're right, it appears to be a deep bug
15:57 jnthn pmichaud: Ouch. :-(
15:58 jnthn pmichaud: Narrowed it down much?
15:58 pmichaud seems to be that the protoregex token tables are being miscalculated
15:59 pmichaud when the dot gets moved into the methodop rule, the table thinks it's a length of two instead of one
15:59 pmichaud oh
15:59 pmichaud (checking something else)
16:01 jnthn That is weird.
16:02 pmichaud I should be able to find it now.
16:02 jnthn Yeah
16:02 jnthn Hopefully it's not a horribly hard fix.
16:02 pmichaud "dotty" => Hash { ".1" => PMC 'Sub' { ... }
16:02 pmichaud }
16:02 * pmichaud prepares another burning Parrot
16:03 pmichaud stupid resizablepmcarrays stringify to the number of elements in the array again
16:03 pmichaud I would much rather they threw an exception than the existing broken behavior.
16:04 moritz_ didn't allison call the current behavior a bug?
16:04 pmichaud for  MultiSub, yes.
16:04 pmichaud (and MultiSub isa RPA)
16:04 pmichaud but not for RPA
16:04 moritz_ if yes, it's not subject to to deprecation cycle....
16:04 moritz_ :(
16:04 pmichaud it'd be harder to make the case that RPA stringification is a bug
16:04 pmichaud I can see why some would treat it as a feature
16:05 rfordinal joined #perl6
16:06 hcchien joined #perl6
16:06 jnthn .oO( burning Parrot sketch )
16:08 moritz_ http://hbfs.files.wordpress​.com/2009/11/perl6-orly.png YaY
16:08 moritz_ (from <http://hbfs.wordpress.com/2​009/11/13/the-perl-6-logo/>)
16:09 rfordinal left #perl6
16:09 jnthn With a slightly diffrent ordering, they coulda made the contents of the speech bubble syntactily valid...
16:09 moritz_ just make # go first :-)
16:10 jnthn std: *%*#$@&
16:10 p6eval std 29104: ok 00:01 102m␤
16:10 jnthn oh, most the paren
16:10 jnthn *missed
16:10 jnthn or *lost
16:10 jnthn :-)
16:13 nihiliad joined #perl6
16:15 KyleHa Where's a good test for an 'is also'-related bug?
16:15 pmichaud isn't "is also" gone?
16:15 jnthn KyleHa: is also doesn't exist any more.
16:15 jnthn KyleHa: it's "augment" now.
16:15 KyleHa Oh.  Then that's another bug.  8-)
16:16 KyleHa I'm glad I asked!
16:17 Apocal joined #perl6
16:18 iblechbot joined #perl6
16:19 cognominal joined #perl6
16:19 abbe joined #perl6
16:19 abbe hi everyone
16:20 moritz_ hi
16:20 KyleHa Hello abbe!
16:20 * abbe is trying to port rakudo's october snapshot to freebsd (amd64).
16:20 abbe hi moritz_ KyleHa
16:20 abbe GCC 4.2.1 is segfaulting for me at http://pastebay.com/70093
16:21 moritz_ abbe: did you try configuring parrot with --optimize?
16:21 moritz_ abbe: there's a known bug in gcc 4.1 where --optimize helps
16:21 jnthn Wait, GCC segfaults?!
16:21 jnthn That's...different.
16:22 moritz_ different? ok
16:22 * moritz_ shuts up
16:22 jnthn moritz_: no no
16:22 abbe moritz_, --optimize --parrot_is_shared --inline . Yes.
16:22 moritz_ abbe: have you reproduced it on a different machine?
16:22 jnthn moritz_: I wasn't saying the known bug wasn't this one.
16:22 jnthn moritz_: I was just being all shocked over GCC segfaulting...
16:23 abbe moritz_, nop, let me try reproducing it on a different box. I'm running Intel Core 2 Duo btw, and the other box I have is also the Core 2 Duo but older one.
16:23 * jnthn feels an odd sense of achievement at having written C code that makes GCC segfault.
16:24 jnthn :-/
16:24 abbe lol :-)
16:24 jnthn bind.c doesn't do anything *that* strange!
16:24 moritz_ there's still the offside chance that it wasn't you after all, jnthn :-)
16:27 jnthn pmichaud: Hmm. Our contextuals use "find_dynamic_lex" op. Does that only look down the call stack?
16:27 pmichaud jnthn: yes.
16:27 jnthn pmichaud: Ah.
16:27 * jnthn was trying to get $*OUT and friends in place...
16:27 pmichaud that code should port pretty much directly from master, I think.
16:28 jnthn pmichaud: Do we still emit :scope('contextual') and override something, or?
16:28 pmichaud no
16:28 * diakopter works on Windows too.  well, for the Notepad++ text editor.  using samba to linux VMs.
16:28 pmichaud we don't emit :scope('contextual')
16:28 diakopter pmichaud, jnthn: g'morning
16:29 jnthn pmichaud: OK, I'll go peek at how master does it, and import that.
16:29 jnthn diakopter: morning
16:29 pmichaud jnthn: contextuals become   PAST::Op.new( :name('!find_contextual'), $varname )
16:29 pmichaud i.e., they're always looked up using the !find_contextual subroutine
16:30 pmichaud (NQP doesn't do this because it doesn't want a runtime library)
16:30 jnthn pmichaud: has I to then do something special with decls?
16:30 diakopter is this rakudo.. oh, nm
16:30 pmichaud jnthn: no
16:30 jnthn ok
16:30 diakopter I was going to say, nqp-rx uses :scope('consensual') or whatevs
16:30 pmichaud jnthn:    my $*xyz;   simply creates lexical '$*xyz', same as for non-contextuals
16:31 jnthn diakopter: consensual variables? :-)
16:31 diakopter yeah, that too
16:31 diakopter statutory declaration.
16:31 jnthn .oO( Unconsensual assignment to $*OUT )
16:31 abbe brb
16:36 diakopter moritz_: this is what it looked like on Friday (fewer pass now, but all the correct logic is present to make them pass again; I just need to remove the 'logic' it was using to infer the names of PAST::Vars)
16:36 diakopter http://perl6.pastebin.com/m7fb506b3
16:37 diakopter jnthn: u may find this interesting: http://www.coderun.com/cwt
16:37 moritz_ diakopter: cool
16:37 diakopter moritz_: (there are 15 or so files truncated from the end)
16:37 diakopter (as well as the P6regex ones)
16:39 pmichaud diakopter: if you'd like to start moving code into the nqp-rx repo, that's good with me
16:39 pmichaud just put it into a separate subdir for now -- perhaps ext/ or something like taht
16:39 abbe joined #perl6
16:39 jnthn diakopter: oh, that's cute :-)
16:40 diakopter jnthn: (and apparently it actually works)
16:41 diakopter pmichaud: ok.. I'm not a committer there yet
16:41 diakopter I think
16:41 jnthn hugme: add diakopter to nqp-rx
16:42 pmichaud (jnthn++ beats me to it)
16:42 pmichaud (hugme ignores jnthn++)
16:42 jnthn erm...where's hugme?
16:42 pmichaud hugme hug me
16:42 jnthn hugme didn't even come to work today!
16:42 pmichaud :-(
16:42 pmichaud diakopter: do you have a github account?
16:42 * diakopter needs to find my github ssh key; yes
16:43 dalek nqp-rx: 2212d9b | pmichaud++ | src/Regex/Cursor-protoregex-peek.pir:
16:43 dalek nqp-rx: Fix bug with calculating subrule prefixes.
16:43 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/2​212d9b48b371706e584f2d86a6085ed41af1d0d
16:43 dalek nqp-rx: 2046e24 | pmichaud++ | src/stage0/ (4 files):
16:43 dalek nqp-rx: Update bootstraps with bugfix.
16:43 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/2​046e24d014d80de1acfcabaa5b2b2cae843425a
16:43 jnthn Yay! pmichaud++
16:43 pmichaud diakopter: you're added as a committer now.
16:43 pmichaud jnthn: well, still have to see if this really fixes the problem :-)
16:43 diakopter cool
16:44 pmichaud jnthn: looks like 'yes"
16:44 diakopter now to find some gui/wrapper for git I can actually wrap my head around
16:44 PerlJam diakopter: man git-gui
16:45 PerlJam diakopter: or just run "git gui" from a command line.
16:45 PerlJam diakopter: you may need to install git gui as I'm not sure it comes with all git dists.
16:45 diakopter aptitude doing its thing
16:46 jnthn diakopter: btw, don't tell pmichaud that it was me who gave you the nasty hack that plugged the emitter in to make --pastjs work. ;-)
16:46 diakopter sigh. mouse auto-grabbing works in ubuntu9.10 in vmware player 3 with latest vmware tools, but not clipboard sync. :(
16:46 diakopter lol.
16:47 pmichaud does the hack involve changing any of the nqp-rx sources?
16:47 diakopter yeah a bit
16:47 jnthn pmichaud: Yeah...
16:47 pmichaud I'd like to review that first, please
16:47 jnthn pmichaud: I wrote it in 15 mins to unblock diakopter++
16:47 pmichaud nqp-rx is still a little fragile
16:47 jnthn pmichaud: Rather than with the intention of it being committed.
16:47 diakopter well, the Makefile.in
16:47 jnthn pmichaud: It's almost certainly Not Right.
16:47 jnthn pmichaud: I actually didn't understand the makefile.
16:47 pmichaud maybe start work in a branch, then
16:47 diakopter ok, yeah
16:48 jnthn pmichaud: That is, I wasn't sure how to say "only compile this thing in the final stage" without creating an empty file...
16:48 jnthn (for the earlier stages)
16:48 pmichaud jnthn: I suspect it should be done as a separate library.
16:48 pmichaud as opposed to being part of core nqp
16:48 jnthn pmichaud: Yeah.
16:49 jnthn pmichaud: I guess as well, it's sort-of a "bootstrap NQP on v8" throw-away.
16:49 jnthn That is, eventually we probably won't need the target.
16:55 IllvilJa joined #perl6
16:58 KyleHa1 joined #perl6
16:59 diakopter jnthn: right, since v8/js would be hosting all the codegen steps
17:00 pmichaud jnthn: okay, just pushed the fix that gets the dot out of <dottyop>.  When I get back from lunch I'll finish up methodop.
17:00 pmichaud bbiah
17:01 KyleHa2 joined #perl6
17:02 jnthn pmichaud: Excellent, thanks.
17:02 jnthn pmichaud: I'm working on getting IO back in place.
17:02 jnthn (in the setting)
17:03 abbe moritz_, yes, I'm able to reproduce it on my other notebook.
17:04 jnthn diakopter: Right, I think that's the endgoal (as far as NQP on v8 goes). I guess the tricky bit is figuring out how to organize the repo. I guess we'd want src/NQP/*.pm for example to be shared, but the earlier stages in the bootstrap to be specific.
17:04 abbe if I remove all -W switches except -W and -Wall it compiles fine.
17:05 jnthn abbe: That's...odd. But a workaround at lesat...
17:05 jnthn *least
17:05 abbe yes, any ideas how to narrow down problem further ?
17:06 jnthn abbe: Well, I guess try adding back flags until you get to the segfault...
17:06 jnthn abbe: But also, see if later versions of gcc have the issue.
17:06 abbe okay
17:06 abra joined #perl6
17:06 jnthn (if that isn't the latest)
17:07 jnthn Probably not so much point reporting a segfault to the gcc team if they already patched it...
17:07 abbe jnthn, i don't have any other GCC versions...freebsd has gcc 4.2.1 in its base and has no plans to update GCC in base system due to gplv3
17:07 jnthn abbe: Ah.
17:07 jnthn abbe: OK, I'm not sure what the normal done thing in these situations is.
17:08 payload joined #perl6
17:08 jnthn abbe: I mean, in a sense, it's not really a bug in Rakudo, but at the same time it'd be nice to be able to compile on FreeBSD without hacking the makefile to remove flags.
17:08 abbe hi carlin.
17:08 abbe yes, right.
17:09 cdarroch joined #perl6
17:10 jnthn abbe: Thing is, the flags are just given to us by parrot_config...
17:10 TopoMorto joined #perl6
17:11 abbe okay, so if a fix is needed that needs to be in parrot.
17:11 abbe s/that/,then that/
17:11 jnthn Well, I don't know. It feels odd asking Parrot to change too.
17:12 jnthn In that Parrot itself builds OK with that flag, and it's not really their bug either, and they like to have lots of warnings enabled to maintain code quality...
17:12 jnthn abbe: I know that bind.c does emit more warnings than it should on compile.
17:13 abbe okay
17:13 jnthn abbe: It's on my todo list to try and fix that. It's just possible that fixing that will cause the build to be OK.
17:13 jnthn That'd be the "we get lucky" answer. :-)
17:15 abbe okay jnthn . anyone else want to test the port on freebsd ?
17:20 * abbe points everyone to the shar containing the ports at http://pastebay.com/70102 .
17:31 SirKay well I just ordered the dragon book.
17:31 SirKay My guess is that I'll just have to stare blindly at the pages until some of it starts making sense.
17:46 SmokeMachine joined #perl6
17:47 desertm4x joined #perl6
17:49 jeremiah_ joined #perl6
17:49 cotto_work joined #perl6
17:52 stephenlb joined #perl6
17:54 moritz_ ng: my $answer = 1; my @x = 41, (42 unless $answer), 43; say @x.perl
17:54 p6eval ng f67d94: (41, 1, 43)␤
17:54 moritz_ ng: my $answer = 5; my @x = 41, (42 unless $answer), 43; say @x.perl
17:54 p6eval ng f67d94: (41, 5, 43)␤
17:55 colomon rakudo;
17:55 moritz_ fixing that to return Nil instead of $answer would bring back t/spec/S04-statement-modifiers/unless.t
17:55 colomon rakudo:  my $answer = 5; my @x = 41, (42 unless $answer), 43; say @x.perl
17:55 p6eval rakudo 7347ec: [41, 43]␤
17:56 nihiliad joined #perl6
17:57 jnthn pmichaud: say and print now are handled in the setting again, cheat for that gone. We need to re-instate the deref of the invocant again though.
17:57 jnthn Not sure what the cleanest way to do that is.
18:00 * colomon is forced to git pull ng and recompile yet again....
18:01 moritz_ and once again compiling the setting becomes the slowest step of that whole process
18:01 jnthn *nod*
18:02 jnthn By now, it probably might be the biggest thing we do compile though.
18:02 RonOreck joined #perl6
18:05 payload joined #perl6
18:07 colomon Errr.. where is Rat.Int implemented in master?
18:08 moritz_ is it implemented?  :-)
18:08 colomon There's a non-skipped test for it in rat.t...
18:08 jnthn rakudo: (1/2).Int
18:08 p6eval rakudo 7347ec:  ( no output )
18:09 colomon errr... that's wacky.
18:09 colomon rakudo: say (1/2).Int
18:09 p6eval rakudo 7347ec: 0␤
18:09 colomon rakudo: say (5/4).Int
18:09 p6eval rakudo 7347ec: 1␤
18:09 moritz_ rakudo: say (-5/4).INIT
18:09 moritz_ rakudo: say (-5/4).INT
18:09 p6eval rakudo 7347ec: Method 'INIT' not found for invocant of class 'Rat'␤in Main (file src/gen_setting.pm, line 324)␤
18:09 p6eval rakudo 7347ec: Method 'INT' not found for invocant of class 'Rat'␤in Main (file src/gen_setting.pm, line 324)␤
18:09 moritz_ ng: say (-5/4).INT
18:09 p6eval ng f67d94: Method 'INT' not found for invocant of class 'Rat'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
18:09 jnthn colomon: I'd expect somewhere in Rat.
18:09 moritz_ ng: say (-5/4).Int
18:09 p6eval ng f67d94: Method 'Int' not found for invocant of class 'Rat'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
18:10 moritz_ rakudo: say (-5/4).Int
18:10 jnthn colomon: Since it's not an "is also" class...
18:10 colomon jnthn: tried there.  also Int.pm
18:10 p6eval rakudo 7347ec: -1␤
18:10 jnthn colomon: Oh.
18:10 jnthn :S
18:10 colomon perhaps it's some sort of Any.Int?
18:10 moritz_ probably
18:10 moritz_ and that coerces to Num first
18:10 pmichaud back again
18:11 moritz_ "there and back again, a pmichaud's tale" :-)
18:11 PerlJam moritz_: are you trying to say that pmichaud is short and has hairy feet?
18:13 moritz_ PerlJam: nope, that was your interpretation :-)
18:13 pmichaud 17:57 <jnthn> pmichaud: say and print now are handled in the setting again, cheat for that gone. We need to re-instate the deref of the invocant again though.
18:13 pmichaud jnthn: ...deref of the invocant?
18:14 colomon Okay, just implementing Rat.Int the obvious way rather than poking around trying to figure out how master does it.
18:14 * pmichaud works on getting if/unless modifiers to properly return  Nil
18:14 kidd joined #perl6
18:15 jnthn pmichaud: to remove it from any Perl6Scalar
18:15 jnthn pmichaud: Otherwise, if it's e.g. a PIO, we choke.
18:15 pmichaud jnthn: shouldn't method invocation already be doing that?
18:15 jnthn pmichaud: We should be doing it, we were in master, we're not in ng.
18:16 jnthn pmichaud: Look in actions.pm for iirc deref_invocant
18:17 jnthn pmichaud: Just figured since you're in dotty and doing those bits, it's something you could easily slot in.
18:17 pmichaud oh, yes, I can probably do that.
18:17 jnthn Thanks...I inserted an exlicit descalarref into IO.print just to make that work for now.
18:17 colomon 760 passing tests in rat.t now
18:18 pmichaud pmichaud@orange:~/ng$ ./perl6
18:18 pmichaud > my $answer = 1; my @x = 41, (42 unless $answer), 43; say @x.perl
18:18 pmichaud (41, 43)
18:18 lambdabot <no location info>: parse error on input `='
18:19 jnthn ng: token { \x0a$ }
18:19 pmichaud fix for unless/if pushed
18:19 p6eval ng ecb7d7: Unable to parse blockoid, couldn't find final '}' at line 1␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1630 (src/stage0/Regex-s0.pir:888)␤
18:19 jnthn ng: token foo { \x0a$ }
18:19 p6eval ng ecb7d7:  ( no output )
18:20 pmichaud we don't do anonymous tokens/regexes yet
18:21 KyleHa joined #perl6
18:21 jnthn pmichaud: I was trying to fathom why the this bails...
18:21 jnthn ng: my $str; if $str ~~ /\x0a$/ { }
18:21 p6eval ng ecb7d7: Confused at line 1, near "if $str ~~"␤current instr.: 'perl6;HLL;Grammar;panic' pc 448 (src/stage0/HLL-s0.pir:300)␤
18:21 jnthn I suspect regex parsing not really done yet.
18:21 pmichaud ...because we don't do anonymous tokens/regexes yet?  ;-)
18:22 jnthn :-P
18:22 jnthn I'm bringing back the bits of Any-str.pm that will Just Work.
18:24 pmichaud and thus far I _still_ haven't run "make spectest" in the ng branch yet.  :-)
18:24 moritz_ pmichaud: you should - it doesn't take long :-)
18:24 pmichaud lol
18:24 colomon git push
18:24 colomon d'oh, wrong window!
18:25 colomon ng: say <a b c>[2]
18:25 p6eval ng ecb7d7: c ␤
18:25 pmichaud that looks wrongish.
18:25 pmichaud ng: say 'c'
18:25 p6eval ng ecb7d7: c ␤
18:25 pmichaud so does that.
18:26 colomon is it the trailing space?
18:26 pmichaud yes
18:29 pmichaud jnthn: ...I don't suppose there's a way to get method dispatch to automatically descalarref the invocant....
18:29 jnthn pmichaud: no
18:30 jnthn pmichaud: Remember that this is really for the benefit of foreign objects, which don't go through our method dispatcher.
18:30 pmichaud okay, thinking.
18:31 moritz_ pmichaud: remember to re-enable t/spec/S04-statement-modifiers/unless.t if it passes now
18:31 moritz_ have to run, would do it myself otherwise
18:31 pmichaud moritz_: okay, thanks for the reminder
18:32 patspam1 joined #perl6
18:44 colomon hmmm... did I somehow get knocked off of #perl6?
18:45 jnthn colomon: You appear to still be here. :-)
18:46 chromatic joined #perl6
18:46 colomon did a paste come through from me?  or is it nopaste that's broken?
18:47 jnthn colomon: Didn't see the paste...
18:47 colomon will try again with gist.
18:48 colomon <script src="http://gist.github.com/236201.js"></script>
18:48 colomon take two: http://gist.github.com/236201
18:48 colomon There we go: the list of things needed to get rat.t fully working again.
18:49 jnthn colomon: Cool, thanks!
18:49 colomon I believe that (not counting skipped tests) there are about 748 passing tests in rat.t.
18:49 jnthn colomon: I can probably give you some of those.
18:50 colomon \o/
18:50 colomon I could probably give myself some as well, getting trig running again ought to be doable for a mere mortal, I think.
18:51 colomon list assignment would be very groovy...
18:51 jnthn colomon: I think that you mostly need to bring back a lot of Num.pir.
18:51 jnthn colomon: Let me check a bit.
18:51 colomon k
18:52 colomon I should do some $work anyway.  :)
18:52 jnthn By the way, if anyone wants to run the "see if we have any newly passing tests" script, they'll likely find we have got some more.
18:53 jnthn Well, may find anyway...
18:54 jnthn I was thinking Str.uc tests and others should work again now...but uc.t fails for another reason
18:54 jnthn (since .foo doesn't do $_.foo yet)
18:54 KyleHa Is building ng the same as building master, or do I still have to go over to nqp-rx and do parrot-config and make install and stuff?
18:54 jnthn KyleHa: Should now be the same.
18:54 KyleHa Awesome.
18:55 jnthn colomon: oh
18:55 jnthn colomon: Yeah, the problem is with the $r!from-radians
18:56 jnthn colomon: When pmichaud++ is finished with the dispatch refactors, I'll add private method calls back in.
18:56 colomon oh, I see.
18:57 colomon cool.
18:57 jnthn colomon: The other thing that's cool, if we can do it, is trying to use the pir::op forms rather than Q:PIR
18:57 colomon ?
18:57 jnthn For example
18:57 jnthn our Num multi method exp() {
18:57 jnthn my $r = Q:PIR {
18:57 jnthn $N0 = self
18:57 jnthn $N1 = exp $N0
18:57 jnthn %r = box $N1
18:57 jnthn };
18:57 jnthn }
18:58 jnthn Could just become
18:58 jnthn our Num multi method exp() {
18:58 jnthn pir::box__PN(pir::exp__NN(self))
18:58 jnthn }
18:58 pmichaud don't even need the pir::box
18:58 pmichaud pir::exp__NN(self)
18:58 jnthn oh.
18:58 jnthn :-)
18:58 pmichaud PAST already knows how to box
18:59 pmichaud (and when)
18:59 colomon oooo, that is sweet
18:59 pmichaud and while it doesn't make too much difference in this case,    pir::exp__Nn might be slightly better
18:59 cdarroch joined #perl6
19:00 pmichaud just pushed automatic invocant dereferencing
19:00 colomon what's the difference between n and N?
19:01 pmichaud N requires a Parrot num register
19:01 pmichaud n allows either a num register or a valid num constant
19:01 jnthn colomon: Anyway, as you can see, this is (1) shorter and (2) there's work by diakopter++ on laying the foundations of trying to get Rakudo running on v8 too, and the pir:: forms will be much easier to deal with for people wanting to write alternative backends than having to write a PIR parser or hand-translate things using Q:PIR { ... }.
19:01 jnthn I'm generally replacing Q:PIR with pir::op forms when bringing things back into the new setting.
19:01 pmichaud +1
19:02 colomon Sure.  And I think that's a level of translation I could do pretty easily myself.
19:02 jnthn colomon++
19:02 jnthn pmichaud: How much are you still playing with the method dispatch bits?
19:02 pmichaud jnthn: finishing it up now
19:02 colomon jnthn: did you do exp just now (or before) or was it just an example?
19:03 jnthn pmichaud: I'm getting hungry, so it's shopping time...
19:03 xenoterracide joined #perl6
19:03 jnthn pmichaud: When I get back, I'll add privop, hopefully.
19:03 jnthn pmichaud: Provided you're done with what you want to do in that area.
19:03 jnthn colomon: It was just an example
19:03 jnthn colomon: Untested too. ;-)
19:03 colomon jnthn: the best kind
19:03 pmichaud jnthn: I'll add privop parsing
19:03 jnthn colomon: But it's akin to many of the others I've been doing.
19:04 pmichaud anything special needed for the action?
19:04 jnthn pmichaud: You know what to do in the action?
19:04 jnthn pmichaud: First cut: check that you have a PAST::Op that is a callmethod, and then prepend '!' onto the name.
19:04 pmichaud I can do that match.
19:05 pmichaud *much
19:05 pmichaud you can take it from there
19:05 jnthn pmichaud: Cool.
19:05 pmichaud (when you get back)
19:05 jnthn pmichaud: Doing that first cut will unblock colomon++
19:05 jnthn Or should.
19:05 KyleHa Wow, update_passing_test_data was remarkably silent.
19:05 jnthn KyleHa: aww.
19:05 jnthn KyleHa: Completely silent?
19:06 KyleHa jnthn: It had this to say:  [S  ] (  4/4  ) t/spec/S16-io/say.t
19:06 KyleHa So to speak.
19:06 jnthn KyleHa: Unfortunately, a lot of the tests I think we could pass fail for reasons other than the thing we're testing.
19:06 jnthn KyleHa: Oh, we can have say.t back? :-)
19:06 jnthn Well, one win.
19:06 jnthn OK, I'm going to the store...hunger strikes!
19:06 desertm4x joined #perl6
19:06 KyleHa Well, say.t passed some tests, but didn't run all tests.
19:07 jnthn oh
19:07 jnthn :-(
19:07 jnthn ok, bbs
19:10 Jeffrey_ joined #perl6
19:11 abbe jnthn, I asked one of my friend to build on 7.2 with same GCC version but 2 x Quad Xeon CPUs and there it got built fine with no issues.
19:13 rfordinal joined #perl6
19:13 Jeffrey_ left #perl6
19:15 [1]jaffa8 joined #perl6
19:16 desertm4x_ joined #perl6
19:19 KyleHa This bug is fixed now:  http://rt.perl.org/rt3/Tic​ket/Display.html?id=66714
19:20 KyleHa I went back to the version where it was reported and confirmed the breakage, and I've seen that it's not that way in 'master' today.
19:21 KyleHa Actually, I think I'll just write this in the ticket.
19:27 pmichaud private method calls added in 0b0c163 (just pushed)
19:27 lichtkind joined #perl6
19:28 colomon pmichaud++
19:32 jan_ joined #perl6
19:32 dingdong joined #perl6
19:39 kidd joined #perl6
19:42 arnsholt After the discussion about Set yesterday I've come up with some things I think should be added to the spec
19:43 arnsholt First of all, set algebra should be there. Union, intersection and difference
19:44 arnsholt Complement is kind of hard to do though (unless we take Set::Scalar's approach)
19:44 arnsholt Also, it should be possible to parametrise the type, and how equality of elements is determined should definitely be specced
19:45 colomon arnsholt: union, intersection, and difference sound right to me.
19:45 arnsholt Yeah, those are the really important ones
19:45 pmichaud even though I once argued in favor of it, I now wonder if Set really deserves to be spec.
19:46 arnsholt That's a very good thought as well
19:47 colomon "Method '!to-radians' not found for invocant of class 'Num'"
19:48 arnsholt Perhaps more a standard library class than a setting class
19:48 colomon Any!to-radians is defined, but Num cannot see it?
19:48 rfordinal joined #perl6
19:48 pmichaud colomon: what's the calling expression?
19:49 colomon pir::sin__Nn(self!to-radians($base))
19:49 colomon That's in Num.sin
19:49 pmichaud looks like private method definition isn't working
19:49 pmichaud 14769:.sub "to-radians"  :anon :subid("339_1258400908.59046") :outer("285_1258400908.59046")
19:49 pmichaud that should be "!to-radians"
19:50 colomon Simple fix?
19:50 pmichaud I don't know.
19:50 pmichaud I'd have to look at the method code.
19:50 * jnthn back
19:51 jnthn pmichaud: Yes, it should be !to-radians
19:51 jnthn I was sure I'd put that in... :-S
19:52 jnthn if $<specials> && ~$<specials>[0] eq '!' { $name := '!' ~ $name; }
19:52 jnthn $<specials>=[<[ ! ^ ]>?]
19:52 jnthn hmm
19:52 pmichaud don't need the separate test for $<specials>
19:52 pmichaud unless it's quantified somehow
19:52 jnthn oh
19:53 jnthn Yeah
19:53 jnthn it always matches, it's the atom inside that's quantified.
19:53 jnthn duh.
19:53 jnthn fixing
19:53 pmichaud ng:  say 3, 4
19:53 p6eval ng 0b0c16: 3 4 ␤
19:53 pmichaud wrong
19:54 jnthn I dunno where these extra spaces are magically coming from. :-|
19:54 jnthn ng: say "oh", "hai"
19:54 p6eval ng 0b0c16: oh hai ␤
19:54 pmichaud it's stringifying the list instead of printing the elements
19:55 jnthn oh
19:55 jnthn Well that sucks.
19:55 jnthn I thought I'd fixed slurpies...
19:55 jnthn ng: sub foo(*@x) { say +@x }; foo(1); foo(1,2,3,4);
19:55 p6eval ng 0b0c16: 1 ␤4 ␤
19:55 jnthn hm
19:56 pmichaud what kind of object is the slurpy?
19:56 pmichaud probably wants to be a Parcel
19:56 pmichaud it at least needs to be marked as 'flatten'
19:57 jnthn It's an Array, and it's slurpy, I thought.
19:57 jnthn oh
19:57 PerlJam Why would there be a space at the end for a stringified list?
19:57 jnthn I wonder if it's getting wrapped up...
19:57 pmichaud ng:  sub foo(*@x) { say @x.PARROT };  foo(1)
19:57 p6eval ng 0b0c16: Array ␤
19:57 jnthn PerlJam: It's between the thingy and the "\n"
19:57 pmichaud that Array needs to be marked as flattening
19:57 PerlJam but the "\n" isn't part of the list
19:57 pmichaud PerlJam: it is internally
19:57 jnthn PerlJam: see impl of say
19:58 PerlJam okay.
19:58 pmichaud PerlJam: say is implemented as   self.print(@list, "\n")
19:58 jnthn pmichaud: I thought I was, but now it occurs to me that we may mark it, and then wrap it in a readonly container.
19:58 pmichaud @x is a readonly container?
19:58 lambdabot Maybe you meant: . ? @ v
19:58 jnthn I'd expect more to be broken in that case though.
19:59 lisppaste3 joined #perl6
19:59 jnthn pmichaud: Just the usual way that we put stuff in an ObjectRef.
19:59 pmichaud I wouldn't think an ObjectRef is needed there, though.
19:59 pmichaud @x is normally an Array, straight out
19:59 lambdabot Maybe you meant: . ? @ v
20:00 jnthn pmichaud: yeah, but...
20:00 jnthn sub foo(@bar) { @bar = 1,2,3; }; my @x; foo(@x); # should fail
20:00 pmichaud I'm talking about slurpy arrays, primarily
20:01 pmichaud in the case of
20:01 jnthn pmichaud: OK, but there's no difference at the level of "let's wrap it up for readonlyness".
20:01 jnthn pmichaud: That may be wrong.
20:01 masak joined #perl6
20:01 pmichaud yes, there is
20:01 jnthn But it's the way it is now.
20:01 pmichaud sub foo(*@bar) { ... };   my @x;  foo(@x);
20:01 pmichaud note that @bar is not a read-only bind of @x
20:01 jnthn No, it's not
20:02 pmichaud I don't care if @bar is readonly or not, it just doesn't need to be an ObjectRef
20:02 jnthn I don't have it that way either. :-)
20:02 jnthn My point is that after we've made the slurpy, at the moment we're still ending up then putting it in an ObjectRef.
20:02 jnthn We probably don't need to do that though.
20:02 pmichaud okay
20:02 jnthn That may be part of the issue.
20:02 pmichaud right, that's what I said.  :)
20:02 pmichaud 19:59 <pmichaud> I wouldn't think an ObjectRef is needed there, though.
20:02 jnthn I am curious though...
20:03 jnthn ng: my @x = 1,2,3; sub foo(@y) { say (@x, 4, 5).elems }; foo(@x)
20:03 p6eval ng 0b0c16: 5 ␤
20:03 jnthn Oh, good, we get that right...
20:03 [synth] joined #perl6
20:04 pmichaud ng: my @x = 1,2,3; sub foo(@y) { say (@x, 4, 5).elems }; foo(@x)
20:04 p6eval ng 0b0c16: 5 ␤
20:04 pmichaud ng: my @x = 1,2,3; sub foo(@y) { say (@y, 4, 5).elems }; foo(@x)
20:04 p6eval ng 0b0c16: 3 ␤
20:04 pmichaud no we don't.
20:04 pmichaud in that case @y needs to be an ObjectRef, and it needs to be marked 'flatten'
20:05 szabgab joined #perl6
20:05 pmichaud (it's marked 'flatten' by virtue of its sigil)
20:05 pmichaud note that this *is* correct, however
20:05 pmichaud ng: my @x = 1,2,3; sub foo($y) { say ($y, 4, 5).elems }; foo(@x)
20:05 p6eval ng 0b0c16: 3 ␤
20:05 jnthn Right
20:05 jnthn pmichaud: Yeah, my test was bull. Damm. :-(
20:05 jnthn pmichaud: So we do that that wrong.
20:06 jnthn pmichaud: On the up side, that means I know how to fix the slurpy too. :-)
20:06 pmichaud basically, anything with a '@' or '%' sigil needs to have the 'flatten' property on it
20:06 jnthn Right. The binder is probably behind there.
20:06 pmichaud anyway, I'm failing tests in 05-var.t because of the say/print errors.
20:06 jnthn masak: Hey, the preconference meeting at the BPW is designed for insomniacs!
20:06 kst joined #perl6
20:06 masak jnthn: :)
20:07 jnthn "they are open untill 01:00"
20:07 jnthn :-)
20:07 masak heh, lightweights. :)
20:07 jnthn lol
20:08 jnthn pmichaud: That's...really odd. It passes here.
20:08 pmichaud checking.
20:08 masak jnthn: how goes the slidescrafting? I've started digging into mine in earnest.
20:08 pmichaud okay, whatever is causing my failure, that's not it
20:08 pmichaud but we are getting
20:09 pmichaud ok 4
20:09 pmichaud ok  5
20:09 pmichaud ok  6
20:09 pmichaud (extra spaces in the output)
20:09 jnthn yeah
20:09 jnthn maybe our harnesses care different amounts about whitespace.
20:09 * masak wonders what the TAP standard says about whitespace
20:10 jnthn colomon: fixed for privates pushed
20:10 colomon \o/
20:10 jnthn masak: I got lots done on my .pm group one last night.
20:10 masak jnthn: nice.
20:10 jnthn And tweaked one or two slides in my main BPW one.
20:11 jnthn masak: I want to put a little extra Perl 6 context into the start of that talk though.
20:11 jnthn masak: Just to set the stage.
20:11 masak oh?
20:11 masak sounds interesting.
20:12 itz hmmm my first perl6 program now works in ng since the scope fix :D
20:12 jnthn masak: Well, I tend to spend a couple of minutes at the start of normally my first talk at a conference just giving a tiny bit of background on Perl 6 and what I work on within it.
20:12 masak ah. yes.
20:12 jnthn masak: Though it probably needs a little...reframing... :-)
20:13 masak that's a good idea.
20:13 PerlJam jnthn: this time you'll tell them how you've broken it for the past month or so?  :)
20:13 colomon \o/ -- working Num.sin!
20:13 colomon sin(Num) blows up horribly, on the other hand.
20:14 colomon Null PMC access in find_method('new')
20:14 masak food &
20:14 jnthn PerlJam: :-P
20:14 jnthn PerlJam: It wasn't me who broke it! :-P
20:14 jnthn I just egged pmichaud++ on. :-)
20:14 PerlJam heh
20:15 pmichaud true 'nuff, I'm the principal breaker here.
20:15 PerlJam jnthn: ah, then you'll tell them how you've been trying for a month or so to fix all the things that pmichaud broke!  ;)
20:15 pmichaud My +2 sword of refactoring turned into a -1 sledgehammer of breakage :)
20:16 pmichaud on the other hand, from the pieces we now have lazy lists!  :)
20:16 pmichaud and dynamic metaops!
20:17 colomon lazy!  dynamic!
20:18 pmichaud shiny!  new!  improved!
20:18 moritz_ enterprise ready
20:18 * PerlJam wonders if he should start a betting pool on when ng will be merged.
20:19 pmichaud if you wish to blow up the entrerprise, then sure!
20:19 pmichaud *enterprise
20:19 colomon so we're some sort of Romulans or Klingons, then?
20:19 pmichaud PerlJam: do I get to bed?
20:19 pmichaud *bet?
20:19 * pmichaud is pretty sure he could win the pool.
20:19 jnthn PerlJam: Hey, I like that phrasing. ;-)
20:20 pmichaud colomon: (romulans / klingons)   we already have "phasers!"
20:20 pmichaud colomon: I guess we really need disruptors somewhere.
20:20 * pmichaud is reminded to head to the store at 00h01 tonight to pick up a present for his wife.  :-)
20:20 PerlJam pmichaud: you have to hit the mark +/- 1 hour.  Still think you can win?  If so ... what's your bet and how much are you betting?  ;)
20:21 PacoLinux Slack_is_Hot: si tienes alguna pega con perl, larry esta en #perl6 de freenode con el nick TimToady
20:21 PacoLinux sorry, wrong #
20:21 pmichaud PerlJam: I think I could probably get within an hour of being correct, yes.  :)
20:21 jnthn pmichaud: You know how you created the branch? I think out of sharing the load, I should take the task of merging it. Just to be fair and all that lot.
20:21 jnthn ;-)
20:21 pmichaud jnthn: :-)
20:22 PerlJam heh
20:22 * jnthn noms his dinner
20:23 PerlJam btw, someone emailed me that they couldn't get to rakudo.org   (specifically, http://rakudo.org/how-to-get-rakudo)   Is anyone else having problems?  (I got to it just fine)
20:23 colomon errr... 01-tap fails all of the sudden?!
20:24 mdxi PerlJam: i can see it fine from Atlanta
20:25 colomon ah, just needed to perl Configure.pl again.
20:25 PerlJam This person appears to be in Boulder CO
20:27 colomon jnthn, pmichaud: I've just pushed the new sin.  Can you guys try to figure out why sin(1.0e0) gives such a weird error?
20:28 colomon (When you get the chance, no rush, of course.)
20:29 takadonet PerlJam: Works from Winnipeg
20:29 moritz_ works from Germany too
20:29 pmichaud ....why do we have both multi sub declarations and protos, ooc?
20:30 moritz_ historical reasons
20:30 moritz_ the multis came first
20:30 PerlJam pmichaud: redundancy doesn't hurt does it?
20:30 moritz_ and when the new dispatch was able to bind positional by names, we needed the protos
20:30 colomon you mean why are they in the language, or why are they in the trig code?
20:30 pmichaud why are they in the trig code
20:31 moritz_ but you can s/multi // if you want
20:31 pmichaud I'm more curious about why we need to definitions of the same thing.
20:31 pmichaud *two
20:31 colomon I was told to do it that way, honest.
20:31 pmichaud colomon: I believe you -- I'm just asking for the reason.  :)
20:32 colomon I was told the proto was required to make the multi work.
20:32 colomon Give me a minute and I'll search the IRC logs for it....
20:32 pmichaud I don't think that should be the case.
20:32 moritz_ pmichaud: it should
20:32 moritz_ pmichaud: at least the "call positionals by name" part of it
20:33 moritz_ pmichaud: since multi dispatch considers arity first, without a proto that won't work
20:33 pmichaud calling positionals by name shouldn't have anything to do with proto or multi
20:33 moritz_ jnthn++ explained differently
20:33 colomon Note the comment # jnthn says that we should have both the multi sub declaration and the proto.
20:33 pmichaud colomon: I saw the comment, yes
20:33 pmichaud my question was for jnthn++ as much as anything else :)
20:33 colomon :)
20:34 lichtkind pmichaud: or should i send email?
20:34 colomon I checked that in 10/19/2009, so...
20:34 pmichaud lichtkind: you can ask here if you want
20:34 moritz_ http://irclog.perlgeek.de/​perl6/2009-10-28#i_1657656
20:35 moritz_ but that's nto much more than what I said before
20:35 moritz_ t/spec/S02-names_and_variables/contextual.t might be a LHF
20:35 pmichaud I don't understand "multi dispatch doesn't account for named arguments", then
20:35 * PerlJam finds it an odd coincidence that both his and his daughter's birthdays were mentioned within seconds of each other just now
20:35 moritz_ it fails only the last test
20:36 moritz_ sub foo() { $*VAR };
20:36 colomon http://irclog.perlgeek.de/​perl6/2009-10-19#i_1618686
20:36 moritz_ ok !foo().defined, 'contextual $*VAR is undef';
20:36 moritz_ Method 'defined' not found for invocant of class 'Undef'
20:36 pmichaud I need to get a good handle on what "undef" really means in Perl 6 these days
20:36 pmichaud right now it's because the !FAIL internal method just returns a Parrot undef argument
20:36 pmichaud er, Parrot Undef PMC
20:37 lichtkind pmichaud: i did :)
20:37 lichtkind but thanks
20:37 moritz_ pmichaud: that's a Perl 6 limitations - named parameters don't participate in multi dispatch, except as constraints
20:37 lichtkind pmichaud: its mainly about the protoregexes for now
20:38 pmichaud lichtkind: I didn't see your question, sorry.
20:38 moritz_ re undef, I think the most general undef is the Object type object - not sure if that should be returned here
20:38 lichtkind pmichaud: more detailed why there where so important and if there where other similiar showstopper
20:38 moritz_ why they are important: see http://perlgeek.de/en/articl​e/mutable-grammar-for-perl-6
20:38 pmichaud lichtkind: that's likely to be my grant report, which I expect to write tonight.
20:39 lichtkind pmichaud: great so no more harassments from me
20:39 lichtkind pmichaud: hows it going with rokudo * would also interest me
20:40 pmichaud lichtkind: part of that will be in the report also, but see also my latest use.perl post from last week
20:40 pmichaud so, if I'm reading what jnthn++ was saying,    if I define a sub as    multi sub ($a, $b) { ... }     then there's no way for me to invoke that sub with named arguments?
20:41 pmichaud I have to explicitly write a proto?
20:41 TimToady the idea is that a proto would rewrite all the multis in its scope to positional
20:42 pmichaud I'm having trouble understanding that statement as well.  :-(
20:42 pmichaud multi sub ($a, $b) { ... }    looks positional to me already
20:43 TimToady it would rewrite the *calls*
20:43 pmichaud oh, that's what you meant by aggressive inlining
20:43 TimToady er
20:43 colomon (Having reread) I thought proto provided a landing point for non-positional calls?
20:43 TimToady doesn't have to inline
20:44 TimToady just has to turn foo(:a(1), :b(2)) into foo(1,2)
20:45 TimToady I suppose it can do that at run-time, at some price in overhead
20:45 pmichaud what we have now in Rakudo:
20:45 TimToady but I was thinking of it as compile-time rewrite
20:45 pmichaud our multi sub sin($x, $base = 'radians') { $x.sin($base)
20:45 pmichaud }
20:45 pmichaud our proto sin($x, $base = 'radians') { sin($x, $base)
20:45 pmichaud }
20:45 jnthn back
20:45 jnthn oh no, not this discussion again!
20:46 pmichaud TimToady: is that the intended mechanism for doing this?
20:46 jnthn Yes, we need the proto. Yes, in the future as an optimization we can re-write it. :-)
20:46 zamolxes joined #perl6
20:46 pmichaud i.e., is this what we expect to be doing?
20:46 TimToady well, if the proto is agressively inlined, it comes out to what I just said :)
20:46 * jnthn backlogs in case there's anything new...
20:47 jnthn No, I think not.
20:47 jnthn pmichaud: The issue is that the mapping of nameds to positionals is handled by the binder.
20:47 pmichaud jnthn: I understand that.
20:47 jnthn pmichaud: The multi-dispathcer only considers positional arguments.
20:47 TimToady I do worry that it won't be the correct semantics unless we always dispatch to the proto first on named args
20:47 pmichaud jnthn: I understand that (now)
20:48 pmichaud jnthn: my question is whether the Perl 6 result is indeed the result we intended.
20:48 TimToady since we might have intermixed positionals too
20:48 pmichaud jnthn: i.e., that every multi sub ends up requiring a proto definition as well.
20:48 TimToady and simply ignoring the nameds will cause it potentially to pick the wrong multi
20:48 pmichaud TimToady: yes, I'm seeing that (bad) possibility also
20:49 jnthn pmichaud: Well, only those that want to be able to be called by named parameters too.
20:49 TimToady well, pugs always generated a proto if it was missing
20:49 pmichaud TimToady: I'm not sure how it would know exactly what to generate, but okay.  :-|
20:49 TimToady if we rely on proto redispatch, then we could perhaps always dispatch there first on any names args
20:50 jnthn TimToady: Yes, but...nobody has ever spec'd that.
20:50 TimToady nobody is a good friend of mine :)
20:50 jnthn To me it's like, "Pugs did this magical thing...somehow" :-)
20:50 pmichaud anyway, I don't wish to bog down on this at the moment -- I'll just take a continuation on it for now and leave a note that "This smells.  --Pm"
20:51 jnthn BTW
20:51 jnthn The proto is *also* the fallback.
20:51 jnthn If nothing else matches.
20:51 colomon Seems to me the best argument for proto is that there's no particular reason the different multis should have the same positional names...
20:52 jnthn Not that this means you can put your default impl in there though, since then the typed based dispatch will do the wrong thing. D'oh.
20:53 jnthn I guess my question is - yes, a proto provides you with a way to handle the named args, but should our built-ins all expect to be callable that way?
20:53 jnthn I'm far from convinced the answer is yes.
20:53 pmichaud jnthn: it bugs me a bit more that we can do named arguments to non-multis easily but named arguments to multis requires an extra thing called a 'proto'
20:54 pmichaud I can see a lot of people getting bit by that.
20:54 pmichaud i.e., they'll have an only sub that they convert to a multi and -poof- lots of breakage.
20:54 jnthn I can see a lot more people getting bit by not realizing that when they write a sub foo($lol) { }, the name of their parameter just became a part of their API.
20:55 jnthn And then they change that and then users of their module start complaining.
20:55 pmichaud (it may indeed be that this is unavoidable... it just seems like a ready point for confusion)
20:55 pmichaud jnthn: yes, that too.
20:55 moritz_ well, we have to educate our users at some point ;-)
20:55 jnthn :-)
20:56 jnthn pmichaud: The only alternative is making the multi-dispatcher aware of named arguments.
20:56 pmichaud ...or remove the ability to fill positionals by name by default.
20:56 jnthn pmichaud: And that's marked as "not for 6.0.0" at the moment.
20:56 jnthn Well, yes, or that.
20:57 jnthn Well, if you don't write a proto and your sub is multi, you just did. ;-)
20:57 moritz_ :?$thing # either positional or named :-)
20:57 jnthn On the trig ones, I really, really don't see the use case for having them callable by name though.
20:57 moritz_ $thing # just positional
20:57 pmichaud ...maybe filling positionals by name occurs *only* if you provide a proto?
20:57 moritz_ :$thing # just named
20:57 moritz_ pmichaud: and an only sub is its own proto
20:57 jnthn Seriously, who wants to call sin($foo) as sin(:x($foo)) ?
20:57 moritz_ and we're at status quo
20:58 pmichaud moritz_: I'm thinking that maybe you have to explicitly do something to make an only sub its own proto
20:58 colomon jnthn: I like named for atan2.
20:58 jnthn colomon: I can see the benefit there, yes.
20:58 moritz_ jnthn: it's a bit contrived for an unary function, but for multiple args it's different
20:58 colomon So you don't have to remember the arguments are order y, x...
20:58 jnthn For cases where it makes sense != all the time, though...
20:58 jnthn moritz_: Yeah, but many of the trig ones are unary, no?
20:58 moritz_ substr(:from(3), :len(6), :replace<foo>)
20:58 moritz_ jnthn: the trigs yes
20:59 colomon sin($x, $base)
20:59 pmichaud jnthn: yes, but we're also trying to avoid exceptions   ("can i call this function with named arguments or no?")
20:59 jnthn pmichaud: True.
21:00 colomon Is there a reason proto doesn't just automatically re-call the function?
21:00 jnthn I agree that having the proto as well feels like extra boilerplate. But I think it's important to see it in context.
21:00 jnthn It's a lot better to write one proto for all of your multi-candidates
21:00 colomon our proto sin($x, $base = 'radians') { sin($x, $base) }
21:00 pmichaud colomon: that would be along the lines of "automatically generated proto"
21:00 colomon versus
21:00 colomon our proto sin($x, $base = 'radians');
21:00 jnthn Than it would be to go and write all the extra multi-variatns.
21:01 jnthn To provide the same interface.
21:01 jnthn pmichaud: Auto-generating a proto may in some cases be quite do-able...it's just spec'ing the algorithm and when it applies.
21:02 jnthn (And it's a lot easier than making the multi-dispatcher aware of named args...)
21:02 jnthn I'm quite open to looking in to that option.
21:03 pmichaud well, if it's a fallback, I suspect the dwim algorithm could be allowed to be a little expensive in its analysis
21:03 moritz_ can it run at compile time?
21:03 TimToady we do, I think, have to detangle proto from default though
21:03 pmichaud although that argues for letting the compiler do the analysis at compile time
21:03 PerlJam TimToady: +1
21:04 [particle] every time a developer says 'just', a monkey writing perfectly good shakespeare makes a typo
21:05 moritz_ writing a default is easy
21:05 jnthn TimToady: 'is default' and proto already have different semantics.
21:05 moritz_ multi foo(*@, *%) { ... }
21:05 jnthn Well, there's that way too. :-)
21:06 moritz_ +1 to detangle default and proto
21:06 TimToady unless callsame works inside a proto to explicitly redispatch, and then anything after callsame is the default
21:06 moritz_ jnthn: s/default/fallback/ for you then
21:06 TimToady or nextsame, which might fail
21:06 PerlJam moritz_: maybe that could be shortened to just  (oops!)  multi foo (*) { ... }   :-)
21:06 * moritz_ pats the poor monkey
21:06 moritz_ PerlJam: nope, that one is already taken
21:06 TimToady well, it wouldn't exactly be nextsame
21:07 moritz_ it's short for (Any $ where *)
21:07 TimToady next-with-nameds-remapped-to-positional
21:07 PerlJam moritz_: add more * to suit then :)
21:07 pmichaud the real question is knowing how to remap names to positionals, though.
21:07 jnthn TimToady: Since we already would have exhausted the candidates to reach the proto, that won't work really (unless we special case it).
21:07 moritz_ :-)
21:08 jnthn pmichaud: Well, if you just re-dispatch post-bind, it works...
21:08 jnthn (That's why/how it works today.)
21:08 TimToady jnthn: in this model you always call the proto first as if it were an only
21:08 pmichaud jnthn: one would need the explicit proto still, though?
21:08 TimToady and the proto does the actual multidispatch
21:08 jnthn TimToady: Oh, you're proposing we always call the proto?
21:09 jnthn TimToady: That's going to be nasty.
21:09 TimToady in the abstract
21:09 moritz_ and it sounds more expensive
21:09 jnthn TimToady: Then the multi-dispatcher is going to have to look at its caller.
21:09 jnthn TimToady: And say "was it the proto? was it the proto for this sub?"
21:09 jnthn That's going to be fragile.
21:09 TimToady the candidate list doesn't contain the proto
21:10 jnthn You've missed the point.
21:10 abbe joined #perl6
21:10 jnthn If the proto calls the multi-dispatcher...
21:10 jnthn ...then it's gotta know that we're calling from the proto.
21:10 colomon pmichaud: I take it what started this discussion was discovering proto was the problem with sin(1e0) in ng?  At least, I just commented out the proto and now it works...
21:10 jnthn And that it should look at the candidate list.
21:10 TimToady it doesn't have to call the multi-dispatcher the same way it was called
21:10 PerlJam jnthn: why does it need to know we're calling from the proto?
21:11 jnthn PerlJam: Because how does it know not to re-call the proto?
21:11 TimToady in this model all multi-dispatch is a special dispatch that only happens inside a proto
21:11 pmichaud colomon: more generally that I hadn't seen any of the earlier discussions about why proto was needed
21:11 pmichaud colomon: and this is the first time I've really looked at Num.pm since the protos were added
21:12 pmichaud colomon: anyway, the sin(1e0) problem appears to be that    get_hll_global 'Signature'   is returning PMCNULL
21:12 lichtkind joined #perl6
21:12 * diakopter 's head spins off
21:12 jnthn TimToady: Hmm...
21:12 pmichaud and the 'new' that fails is a call to 'new' on the (null) Signature type object
21:12 KyleHa Er?  If there's 'proto foo' and a bunch of other 'foo', and 'foo' is called, that call goes straight to the proto, which goes looking for a multi?  Then if it finds a multi, return what that returned, otherwise go ahead and execute the rest of the proto.  I'll be surprised if I've understood this...
21:12 jnthn TimToady: So we introduce some specail way of saying "run the dispatch algorithm on these args"?
21:13 PerlJam jnthn: Does the dispatcher use the out-of-signature-band information provided by traits applied to a subroutine?  Could it?
21:13 moritz_ KyleHa: we're discussing various proposal, so not everything said here is current spec
21:14 jnthn PerlJam: The dispatcher is aware of the subroutines that it could call, not just their signatures.
21:14 pmichaud http://gist.github.com/236316  # trace of   "say sin(1e0)"  in ng
21:14 KyleHa moritz_: Then I'd be pretty lucky if the half I'm paying attention to is any of the spec.
21:14 pmichaud line #189 is where the problem arises
21:15 jnthn pmichaud: I know what that'll be.
21:15 pmichaud jnthn: figured you would :)
21:15 jnthn pmichaud: Well, I guess maybe two problems.
21:15 * pmichaud goes back to fixing 'return'
21:15 * diakopter 's head spins back on
21:15 jnthn pmichaud: The first is that it's actually looking to call Signature.perl
21:16 jnthn pmichaud: Because it wants to display the signatures of the things it failed to dispatch to.
21:16 pmichaud heh
21:16 pmichaud so, LTA error message then :)
21:16 jnthn pmichaud: The reason the dispatch failed is I suspect an issue with protos. :-)
21:16 jnthn Well, NYI error message. ;-)
21:16 jnthn NY*R*I error message. ;-)
21:16 pmichaud NYI is often LTA if it doesn't let us know that the problem is NYI :-)
21:16 colomon jnthn: protos seem likely to be the blame, as removing the proto makes sin(1e0) work...
21:17 pmichaud I speak, of course, as the undisputed champion of code that produces LTA error messages.  :-)
21:17 jnthn colomon: Yes, I very much suspect that we need to fix those.
21:17 jnthn Well
21:17 jnthn "we" :-)
21:17 * jnthn goes to take a look
21:20 TimToady we might be able to unify the concepts of &foo and proto foo
21:21 jnthn TimToady: Not quite sure I follow...
21:21 jnthn &foo = reference to the thing we get when we call foo(), no?
21:22 TimToady if &foo is supposed to represent the current candidate list anyway
21:22 jnthn Well, only sort of ish.
21:22 TimToady and if proto is effectively doing the same
21:22 jnthn foo() really goes looking for &foo and then invokes it.
21:23 TimToady yes, and maybe that's always the proto
21:23 TimToady where proto == only
21:23 jnthn To me, &foo() === foo()
21:23 jnthn Which is 1) lookup the symbol. 2) invoke.
21:23 masak joined #perl6
21:23 TimToady a proto just knows how to call the secret multi dispatcher on its list of candidates
21:24 TimToady and it doesn't do so by saying foo()
21:24 TimToady but by saying, implicitly or explicitly, nextsame or some such
21:24 masak rakudo: class A { has $.foo = 42 }; say A.new.foo
21:25 TimToady or something dedicated to multi dispatch
21:25 p6eval rakudo 7347ec:  ( no output )
21:25 masak rakudo: class A { has $.foo = 42; submethod BUILD() {} }; say A.new.foo
21:25 jnthn TimToady: But then we'd make every single mult-dispatch a re-dispatch, vis the proto.
21:25 p6eval rakudo 7347ec:  ( no output )
21:25 TimToady which is why it's an abstraction
21:25 jnthn *via
21:25 masak locally, the former says '42' and the latter says 'Use of uninitialized value'.
21:26 jnthn masak: Yes, known.
21:26 TimToady (read, agressively inlined)
21:26 masak jnthn: thought so. just checking.
21:26 jnthn TimToady: Yes, but the current situation = performs fine before somebody goes and writes an optimizer.
21:26 TimToady until someone uses named args
21:26 PerlJam TimToady: would that change the results of $obj.*meth()  ?
21:26 TimToady n
21:26 PerlJam or $obj.?meth()
21:26 TimToady no
21:27 jnthn TimToady: Yes, but that isn't the common case.
21:27 jnthn 1 + 2 which maps to &infix:<+> is the common case.
21:27 PerlJam so the mention of a proto means that there's always going to be an extra, "hidden" dispatch ?
21:28 TimToady which basically means you've already got the optimized code path written
21:28 TimToady you "just" have to pessimize it if there are named args
21:28 jnthn TimToady: Not if you're proposing we have to care about a proto up front.
21:28 jnthn TimToady: Unless you're saying also "you can write a proto but we reserve the right to completely ignore it unless any named args are passed"
21:28 TimToady maybe you only have to care if there's a named arg
21:29 TimToady that would depend on how much we enforce via the proto signature
21:29 TimToady if it's just positional names, then yes
21:29 jnthn Well, that gets us back to current situation, apart from we call the proto right off if there's named args.
21:29 TimToady we can ignore the proto in the absence of nameds
21:30 TimToady which was one of my suggestions above :)
21:30 jnthn Rather than looking down the candidate list first.
21:30 jnthn Yes but if you do that, you can't also do auto-generation of a proto, probably.
21:30 jnthn Otherwise you'll break the mechanism that trait dispatchers hang off (which is required named args).
21:30 TimToady why not, if their positionals are consistently named?
21:31 jnthn TimToady: That bothers me a little though. Somebody comes along and implemetns an extra multi-variant, and uses a different name. Suddenly, all named argument calls break.
21:31 TimToady then shame on them :)
21:32 pmichaud "Doctor, it really hurts a lot when I do that."
21:32 TimToady if they write an explicit proto, they can't do that
21:32 PerlJam jnthn: wait ... the calls break?  Surely that's compile-time detectable?
21:32 pmichaud afk, kid pickup
21:33 jnthn TimToady: Well again, I've asked this one before: does writing a proto mean all the multi candidates have to follow the same pattern?
21:33 TimToady that was the original idea
21:33 jnthn Is it an error to write proto foo($a, $b) { } and then multi foo($a, $b, $c) { }
21:34 TimToady promising that the first arg would always be named 'x' and the second 'y'
21:34 jnthn It woulda been nice if the spec had been vaguely clear about that.
21:34 TimToady jnthn: probably, since one could write *@ to allow more positionals
21:35 jnthn Wouldn't that also be an error? Or?
21:35 TimToady a *@ in the proto sig
21:35 jnthn Oh, OK.
21:36 jnthn That still means we need to define sig acceptability.
21:36 colomon that still strikes me as very anti-social to the sub namespace.
21:36 PerlJam so the proto *must* have *@ or *% to allow more positionals or named in the multis?
21:36 TimToady well, with the call-proto-first model, it's simply binding first to the proto's sig
21:37 TimToady and it seems a very straightforward semantics in that case
21:37 jnthn TimToady: Well not really.
21:37 TimToady it binds as an only
21:37 jnthn foo(1,2) will bind to proto foo($a, $b) {...} just as well as proto foo($x, $y) { ... }
21:38 TimToady remaps the capture, and the callmulti redispatches with the remapped capture
21:38 jnthn It doesn't help us enforce that the signatures of any of the multi-candidates are "good enough".
21:38 TimToady well, maybe the names of $a and $b don't matter at that point
21:39 TimToady er, $x and $y, I mean
21:39 TimToady that is, multis wouldn't care what names the positionals use once they're remapped
21:40 TimToady that's almost a feature
21:40 TimToady well, and you can't have multiple protos in the same scope
21:41 TimToady it's like only that way
21:42 TimToady it seems very simple, but my brane is in sideways today due to viral biohazards, so it could be I'm not thinking of something
21:42 jnthn I think I'd need to see this all spec'd out in detail to really be able to work it out much further.
21:42 TimToady in fact, I should probably crawl back into bed now...
21:43 jnthn TimToady: Aye. Get well soon!
21:44 pmichaud jnthn: fixing proto in ng might be a priority.
21:44 pmichaud I seem to be unable to implement a proper 'return'
21:44 jnthn pmichaud: I pretty much have a fix...
21:44 jnthn pmichaud: Oh?
21:44 pmichaud unless I take out the stuff that colomon++ has been putting in
21:44 pmichaud (no, I don't completely understand why that would be the case.)
21:45 jnthn OK...I'm half way through doing this fix...being distracted by a friend telling me about a car crash she got into... :-/
21:45 pmichaud okay, as long as it's "today-ish" I'm fine.
21:46 pmichaud I can skip the 'return' implementation for a bit -- and have another kid pickup in 10
21:47 pmichaud (fixing 'return' will likely win us a fair number of spectests, though)
21:47 masak \o/
21:47 * moritz_ predicts that eval() will give us more
21:48 moritz_ that's because there's a dies_ok or eval_dies_ok in *many* test files
21:48 pmichaud I can work on eval, also.
21:48 masak as long as we're aiming for at least the same amount of passing tests as before, I'm fine. :)
21:48 pmichaud we are.
21:49 pmichaud I might merge back with slightly fewer, but I'd like us to have at least 80% of the tests we had before
21:49 masak what's the current percentage?
21:49 pmichaud I have no idea.  I suspect less than 10%
21:49 moritz_ <1%
21:49 masak ah, ok.
21:50 pmichaud but they should start appearing in largish chunks soon
21:50 masak I don't wish to sound like a pessimist, but it sounds like I'll be releasing an unmerged master on Thursday. :)
21:50 moritz_ eval, return, regexes, num stuff
21:50 pmichaud masak: that'd be my guess, yes.
21:50 masak oh well.
21:51 masak at least that'll make the release easy. :)
21:51 moritz_ rakudo: say 100 * 162 / 32614
21:51 p6eval rakudo 7347ec: 0.496719200343411␤
21:51 moritz_ <0.5% even
21:51 pmichaud ng:  say 100 * 162 / 32614
21:51 p6eval ng a127e9: 0.496719200343411 ␤
21:51 pmichaud at least they agree :-)
21:52 pmichaud afk, another kid pickup
21:54 colomon ng: say (100 * 162 / 32614).perl;
21:54 p6eval ng a127e9: 8100/16307 ␤
21:55 colomon \o/
21:56 jnthn back
21:56 jnthn (well, wasn't away, but was distracted)
21:56 jnthn masak: I think you'll be releasing master unmerged, yes.
21:57 jnthn But man will the December release be full of goodies.
21:57 jnthn Appropraite really. ;-)
21:57 masak heh :)
21:58 jnthn masak: At least the changelog will be easy too.
21:58 jnthn oh gah...my cuppa tea...
21:58 * jnthn hopes it's still vaguely warm...
21:59 masak indeed. it would have been cool to release after the ng merge, but on the other hand it would have been quite a bit of work. :)
21:59 masak and I have a presentation to procrastinate.
21:59 jnthn Yeah! Get procrastinating!
22:00 masak I had a good procrastination session earlier today.
22:00 masak will probably have one before I fall asleep, too.
22:00 jnthn ng: say ?42
22:00 p6eval ng a127e9: 1 ␤
22:01 masak what's that extra space doing there?
22:01 jnthn bug
22:01 masak yes, but how?
22:01 jnthn Incredible cunning.
22:02 jnthn masak: Actually, just a bug in slurpies.
22:04 Tene I prefer to believe the first answer.
22:04 masak me too.
22:05 Tene btw, hi masak
22:05 masak OH HAI TENE
22:05 Tene Today is my first day back at work after two weeks out sick.
22:05 Tene It's... kinda weird.
22:05 masak welcome back.
22:06 Tene All these STUDENTS keep asking me QUESTIONS.  It's pretty lame.  What are they even doing here?
22:06 masak :)
22:06 jnthn say is print($thing, "\n") and the flatten flag ain't being set properly when we bind that list to print, so when we iterate over it, we don't iterate over the strings. So it's like we strinfigied ["1", "\n"]
22:06 masak Tene: I had hoped to get the pastebin finished (and the final Web.pm weekly blog post written) before the BPW presentation sucked me in. alas, I didn't.
22:07 masak jnthn: excellent explanation. I see it now.
22:07 Tene masak: Depending on what the gf plans for tonight, I might be able to do it for you.
22:07 jnthn masak: I wish I'd seen it so quick. ;-)
22:07 Tene I'm not hopeful, though.  SO TIRED.  I might just nap instead.
22:08 masak jnthn: you didn't have the benefit of having it explained to you. :)
22:08 jnthn Tene: Best to take the time and get properly recovered. :-)
22:08 masak Tene: I'd rather you took a look at Squerl and mysql :)
22:08 masak Tene: but no pressure. take your time.
22:08 jnthn hehe
22:08 Tene masak: I thought that mysql worked fine...
22:08 jnthn Yeah Tene, write some code! :-)
22:08 masak Tene: I won't have time to get back to Wbe.pm in a week anyway.
22:08 masak Tene: I'm sure mysql works fine, but it needs to get woven into Squerl.
22:08 jnthn colomon: fixed proto.
22:09 masak Tene: probably not a big commit.
22:09 jnthn colomon: make testing.
22:09 Tene Ah.
22:09 Tene Okay, I can do that.
22:09 Tene Maybe.
22:10 masak I don't remember exactly how it looks in source, but there should be a class hierarchy and stuff.
22:10 Tene argh, they want me to teach them AGAIN.
22:10 Tene SO DEMANDING
22:10 masak it should be pretty obvious where things fit in. unless I cheated.
22:10 Tene afk
22:10 masak :)
22:11 moritz_ who's doing the book release on Friday?
22:13 jnthn colomon: pushed
22:15 masak moritz_: I don't think I will be able to, knowing my procrastination skills. I'll gladly do the next release.
22:15 * moritz_ looks in PerlJam's direction
22:16 jnthn masak: You planning to procrastinate some on the Friday? :-)
22:17 masak jnthn: experience tells me I will, plan or not.
22:17 jnthn ;-)
22:17 masak I'll probably be enjoying Riga the most on the Sunday...
22:17 jnthn masak: Given of Friday and Sunday, Friday is the day forecast without the rain, you may want to spare an hour or two to look around. ;-)
22:18 masak I'll keep that in mind.
22:18 jnthn Of course, weather forecasts are all lies anyway. :-)
22:18 masak propaganda.
22:18 pmichaud "Christmas."
22:19 pmichaud .oO( wonder if we could get Rakudo Star's critical tasks knocked off by Dec 25)
22:20 jnthn What'll be left after merging ng?
22:20 dalek book: 3a6390a | moritz++ | docs/release-guide.pod:
22:20 dalek book: [release] masak++ volunteered for the Christmas release
22:20 dalek book: review: http://github.com/perl6/book/commit/3a​6390ac7abb89c9a68f28a7f11b81b89c4a278a
22:20 arnsholt I just had a similar idea. A special edition Rakudo release for christmas =)
22:20 jnthn Non-crappy repl?
22:20 pmichaud oh, I think repl will be done well before then.
22:20 masak moritz_: :)
22:20 pmichaud if I do eval tonight/tomorrow, repl may well follow.
22:21 jnthn say "a", "b"
22:21 jnthn ng: say "a", "b"
22:21 p6eval ng 0c9d94: a b ␤
22:21 jnthn ab here
22:21 jnthn so I guess fixed
22:21 jnthn pmichaud: ohbtw proto fixed too
22:21 masak pmichaud++ # here's some advance karma for the REPL.
22:21 jnthn pmichaud: You're wanting to do eval in a way other than just bringing back the one we already have?
22:21 pmichaud yes.
22:21 jnthn OK. I won't bring back our existing one then.
22:22 moritz_ ng: say 'a', 'b'
22:22 p6eval ng 0c9d94: a b ␤
22:22 jnthn fail :-)
22:22 pmichaud I want a more generic way for HLL compilers to compile inside of a lexical scope
22:22 pmichaud (which includes Rakudo)
22:22 pmichaud that's needed in order to do REPL, too.
22:22 jnthn OK.
22:22 jnthn Yeah, it's just a case of whether you want to do it within ng or not. :-)
22:23 jnthn I noticed we have "more input" support suggested in STD too.
22:23 jnthn That could be cool.
22:23 jnthn sub foo() {
22:23 moritz_ jnthn: didn't you know, this is the "fix everything" branch :-)
22:23 pmichaud yes
22:23 pmichaud oh, fix repl is definitely in ng branch
22:23 jnthn and then it prompts for more, not whines.
22:23 jnthn :-)
22:23 jnthn Ah, OK
22:23 jnthn I hadn't realized that was in too. ;-)
22:23 * jnthn doesn't feel so bad about doing "fix metamodel" in ng branch too now. :-)
22:24 pmichaud oh, I suppose it could wait until after rename to 'master'
22:24 pmichaud but I think getting repl/eval right is worthwhile
22:24 jnthn Oh, for sure.
22:24 jnthn Well, eval isn't wrong now, but it'd be nice if it was done more cleanly and in a way that worked corss-HLL.
22:25 pmichaud well, I don't like the way eval pokes PAST::Block structures into the @?BLOCK array
22:25 pmichaud I'm thinking that outer scope should be a contextual
22:25 jnthn Yeah, that's the main evil.
22:26 pmichaud actually, I've been thinking that @BLOCK should be done with contextuals, too.
22:26 jnthn It'd make reentrancy easier.
22:26 jnthn OK, I fixed protos, I fixed flattening...what now? :-)
22:27 pmichaud ....beer?
22:27 pmichaud got your presentation ready for this weekend?
22:27 pmichaud maybe .*, .?, and friends?
22:27 jnthn :-)
22:27 jnthn oh!
22:27 jnthn I wanted to do .foo
22:28 pmichaud oh yes, that would be very useful
22:28 jnthn (as in, calls on $_)
22:28 pmichaud right
22:28 pmichaud go for that
22:28 jnthn We were exploding early into a few tests on that.
22:28 * jnthn checks STD
22:28 jnthn oh, beautiful.
22:28 jnthn token term:dotty              { <dotty> }
22:28 jnthn :-D
22:28 jnthn .oO( compilers are SO easier than websites )
22:29 pmichaud lol
22:29 pmichaud "trivial"
22:29 Juerd Websites would be easier if you got better specs to develop them to.
22:30 jnthn Juerd: Right. That's my main whine about them. :-)
22:30 jnthn Well, it's not.
22:30 jnthn Fighting the browsers is.
22:30 jnthn So it's not so much better specs, so much as specs that were implemented. :-)
22:32 Juerd Oh, right, I forgot.
22:32 Juerd Browsers suck. That is: IE really sucks.
22:32 jnthn Yes, it does tend to be the stand out sucker.
22:34 arnsholt The really annoying thing is that they don't agree
22:34 diakopter IE's great for microsoft developers whose products generate html/js, since IE seems optimized for backward compatibility with microsoft products
22:34 arnsholt It's a bit like writing code that should compile to the same executable, on multiple compilers
22:36 jnthn woo. .foo done like already.
22:36 colomon jnthn++ # for fixing proto while I was fixing dinner.
22:36 pmichaud looks like winter is coming early here this year.  Today's high:  10degC
22:36 jnthn Ooh, nice!
22:37 lichtkind moritz_: i understand a bit the proto regex now but why was it so important to PGE?
22:38 moritz_ lichtkind: it's important for rakudo, because STD.pm uses it heavily
22:38 pmichaud lichtkind: it makes it possible to do more optimized parsing of the source code
22:38 lichtkind rakudo tries to use STD.p?
22:38 moritz_ and we try to stay as close to STD.pm as possible
22:38 lichtkind since when?
22:38 simcop2387 joined #perl6
22:38 pmichaud rakudo has always tried to follow STD.pm where it can
22:39 pmichaud the lack of protoregexes meant that wasn't really possible in some ways
22:39 pmichaud in some ways, Rakudo is blazing new paths for STD.pm, too
22:39 pmichaud (STD.pm has been adopting some of Rakudo's grammar features :)
22:39 lichtkind when came prots into the synopses?
22:40 pmichaud protoregexes were added to the synopses in 2007, I think
22:40 jnthn pmichaud: Should "is export" on, e.g. multi method uc() mean we can call uc("oh hai") ?
22:40 lichtkind pmichaud: thanks
22:40 jnthn pmichaud: If so, something is broken. :-/
22:40 pmichaud jnthn: yes, we should be able to do that, if uc() is defined in Any
22:41 colomon "should" as in "That's the ideal", or "should" as in "that works now in ng"?
22:41 jnthn colomon: the latter
22:41 jnthn pmichaud: ok, hm
22:41 pmichaud afaik it's been at least somewhat working in ng
22:41 jnthn pmichaud: and yes, it's in Any-str.pm
22:41 jnthn ng: say "oh hai".uc
22:41 p6eval ng 0c9d94: OH HAI ␤
22:42 pmichaud ng: say &uc
22:42 p6eval ng 0c9d94: Symbol '&uc' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)␤
22:42 jnthn ng: say uc("that tree over there")
22:42 p6eval ng 0c9d94: Could not find non-existent sub &uc␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
22:42 jnthn aww, fail
22:42 pmichaud oh
22:42 jnthn oh plz say this won't be the omg-wrong-multi bug...
22:42 pmichaud it's possible that it's not being exported correctly
22:42 lichtkind moritz_: thank you too
22:42 pmichaud no, wrong multi wouldn't say "non-existent sub"
22:42 pmichaud plus, they are in different namespaces
22:43 jnthn True.
22:43 jnthn no, I meant wrong multi when we call trait_mod
22:43 pmichaud building, looking.
22:43 pmichaud shouldn't be that, because those are looked up by subid
22:44 pmichaud we should never be using trait_mod based on anything but subid
22:44 jnthn pmichaud: no no, I meant the call to trait_mod itself.
22:44 jnthn pmichaud: it's a multi sub.
22:44 pmichaud oh
22:44 pmichaud that's possible.
22:44 jnthn pmichaud: checking it's not that, before I dig further.
22:44 Exodist joined #perl6
22:44 jnthn # export called on uc
22:44 jnthn so no, it's not that.
22:45 colomon ng: say exp(10)
22:45 p6eval ng af269f: 0␤
22:45 colomon ??
22:45 colomon gonna implement properly now (I hope), but that's weird...
22:46 jnthn pmichaud: it's detecting it's a method properly and adding the & too.
22:47 pmichaud but it's exporting into Any's namespace, I bet.
22:47 pmichaud actually, Any::EXPORT::DEFAULT
22:47 pmichaud which is fine, but I'm not sure we do an import into global yet.
22:47 jnthn oh
22:47 jnthn so the export is fine, but we're nyi
22:47 jnthn (not yet importing ;-))
22:48 pmichaud right
22:48 dalek november: da4db36 | masak++ | skins/CleanAndSoft/ (2 files):
22:48 dalek november: [skins] fixed github issues #20 and #21
22:48 dalek november: review: http://github.com/viklund/november/commit​/da4db3684c016f451f2d52751e5002e05c2f7bc9
22:48 dalek november: 8166dbd | masak++ | lib/November.pm:
22:48 dalek november: [November] made error page message clearer
22:48 dalek november: review: http://github.com/viklund/november/commit​/8166dbd8773679fafc0e3110bf95ac1e5718d5eb
22:48 masak ooh, that's nice.
22:48 KyleHa S16-io/say.t passes now.  I updated spectest.data
22:48 masak blog post should turn up soon as well.
22:49 jnthn KyleHa: Yay! Thanks :-)
22:49 KyleHa My pleasure.  8-)
22:51 jnthn pmichaud: Aww. And use isn't broken up into import bit yet.
22:51 pmichaud using 'use' for importing CORE isn't likely to be a good way to do it yet
22:51 pmichaud so, good.
22:51 jnthn pmichaud: Right, but it's use decomposed into two things now?
22:51 jnthn (by spec)
22:51 pmichaud yeah, it'll be 'need' and 'import'
22:52 jnthn Right. So I could in the cheat make use call each of those for now.
22:52 jnthn And then can use import alone to bring in things from the setting?
22:52 jnthn erm, from CORE that is. :-)
22:53 pmichaud 'import' doesn't exist yet.
22:53 jnthn Yes, I was proposing creating a first cut of it by factoring out the appropriate bit of our current "use" cheat.
22:53 jnthn It can all still stay as a cheat.
22:53 pmichaud I prefer not to do that.
22:53 jnthn OK, what do you prefer?
22:54 pmichaud to have enough time to think about how to do it properly, alas.
22:54 jnthn (I'd quite like to be able to pass, e.g. uc, and this is probably all we're blocking on...)
22:54 pmichaud this is one area where the cheats last time ended up being difficult to dislodge
22:54 jnthn erm, uc.t
22:54 pmichaud so I'd rather not head down that path again.
22:55 pmichaud getting a passing test isn't worth the technical debt (in this case)
22:55 jnthn I rather suspect it's more than one, but OK.
22:56 jnthn (and it's going to be a blocker to passing a lot of things in the near future, I fear.)
22:56 pmichaud it's also a case of not only getting it to work immediately for Rakudo, but also to be able to properly handle HLL interop
22:56 jnthn Well, yeah, doing it right is a lot of effort.
22:57 jnthn We actually need to ask the import for info at compile time too.
22:57 pmichaud yes, I understand it may be a significant place of blockers.  I don't think we're soooo blocked on it that it blocks progress in other areas.
22:57 jnthn So we can construct an appropriate lexical scope.
22:57 pmichaud I agree it has to be done sooner rather than later.
22:57 jnthn So yes, a full solution is hard.
22:57 jnthn :-)
22:57 pmichaud I wasn't going to worry too much about lexical import just yet.  Or, put another way, that piece was going to be stage-2.
22:58 jnthn Oh.
22:58 jnthn *that* was the bit I thought was the cheat you'd be worried about.
22:58 pmichaud nope.
22:58 jnthn (Because it's the one that worries me more...)
22:58 pmichaud the way import is done in master is just generally wrongish in several ways
22:59 pmichaud I can get a good import cheat done relatively quickly
22:59 jnthn OK.
22:59 pmichaud I'd rather not have to back out the bad cheats from master
23:00 jnthn OK, I'll leave it to you, since you seem to have a pretty concrete idea of how you'd like it to look.
23:01 ascent joined #perl6
23:07 jnthn ng: <a b c>.[4/3]
23:07 p6eval ng af269f: Confused at line 1, near "<a b c>.[4"␤current instr.: 'perl6;HLL;Grammar;panic' pc 448 (src/stage0/HLL-s0.pir:300)␤
23:07 jnthn ng: <a b c>
23:07 p6eval ng af269f:  ( no output )
23:07 jnthn ng: <a b c>.[4]
23:07 p6eval ng af269f: Confused at line 1, near "<a b c>.[4"␤current instr.: 'perl6;HLL;Grammar;panic' pc 448 (src/stage0/HLL-s0.pir:300)␤
23:07 jnthn ng: <a b c>[4]
23:08 p6eval ng af269f:  ( no output )
23:08 jnthn ng: <a b c>[4/3]
23:08 p6eval ng af269f: No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'␤current instr.: '!postcircumfix:<[ ]>' pc 193578 (src/gen/core.pir:19564)␤
23:08 pmichaud postcircumfix:<[ ]>  only works on single ints at the moment
23:08 pmichaud we could see about filling out the positional role again
23:09 jnthn pmichaud: Also, .[4] doesn't parse yet, which is the first issue in the issue in colomon++'s gist.
23:09 jnthn But yes, after fixing the parse issue we'd need to do that.
23:09 pmichaud oh, getting that to parse would be worthwhile, too.
23:09 pmichaud I think I fixed masak's [] and () issues last night
23:10 pmichaud ng:  say [[], [[]], []].elems
23:10 p6eval ng af269f: 3␤
23:10 pmichaud ng:  say [[], [[]], []].perl
23:10 p6eval ng af269f: get_iter() not implemented in class 'Undef'␤current instr.: 'perl6;Any;map' pc 169948 (src/gen/core.pir:10930)␤
23:10 pmichaud ng:  say [[], [[]], []].WHAT
23:10 p6eval ng af269f: Array()␤
23:10 pmichaud hmmm
23:10 pmichaud something's wrong there
23:10 pmichaud ng:  say ((), (()), ()).WHAT
23:10 p6eval ng af269f: List()␤
23:10 pmichaud ng:  say ((), (()), ()).perl
23:10 p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
23:10 pmichaud and there too.
23:10 jnthn yeah.
23:10 pmichaud say ().perl
23:11 pmichaud ng: say ().perl
23:11 p6eval ng af269f: ()␤
23:11 pmichaud ng:  say (1, (), 2).perl
23:11 p6eval ng af269f: (1, 2)␤
23:11 ng_feed joined #perl6
23:11 pmichaud ng:  say (()).perl
23:11 p6eval ng af269f: ()␤
23:11 ng_feed rakudo-ng: (Solomon Foster)++
23:11 ng_feed rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
23:11 ng_feed rakudo-ng: (Solomon Foster)++
23:11 jnthn colomon: Got a fix for the Rat.new issue too. :-)
23:11 ng_feed rakudo-ng: Add Num.exp (which makes Any.exp and exp(Any) work as well).
23:11 ng_feed rakudo-ng: (Kyle Hasselbacher)++
23:11 ng_feed rakudo-ng: S16-io/say.t passes now
23:11 ng_feed rakudo-ng: (Jonathan Worthington)++
23:11 pmichaud ng:  say ((),()).perl
23:11 p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
23:11 ng_feed rakudo-ng: Implement term:dotty.
23:11 ng_feed rakudo-ng: (Jonathan Worthington)++
23:11 ng_feed rakudo-ng: Fix parameter flattening.
23:11 ng_feed rakudo-ng: (Jonathan Worthington)++
23:11 payload joined #perl6
23:11 ng_feed rakudo-ng: Fix proto.
23:11 moritz_ ng_feed is now going to report a few old commits
23:11 ng_feed rakudo-ng: (Solomon Foster)++
23:11 ng_feed rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
23:11 ng_feed rakudo-ng: (Solomon Foster)++
23:11 moritz_ hope it works then :-)
23:11 ng_feed rakudo-ng: Make Any!to-radians work for radians again.  Add Num.sin.
23:11 ng_feed rakudo-ng: (pmichaud)++
23:11 ng_feed rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
23:12 ng_feed rakudo-ng: (pmichaud)++
23:12 ng_feed rakudo-ng: Terminate listop argument lists on <?stdstopper>.
23:12 colomon jnthn++ # \o./
23:12 jnthn moritz_: I've got another commit coming after tests.
23:12 ng_feed rakudo-ng: (Solomon Foster)++
23:12 ng_feed rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
23:12 ng_feed rakudo-ng: (Solomon Foster)++
23:12 ng_feed rakudo-ng: Add Num.exp (which makes Any.exp and exp(Any) work as well).
23:12 ng_feed rakudo-ng: (Kyle Hasselbacher)++
23:12 ng_feed rakudo-ng: S16-io/say.t passes now
23:12 ng_feed rakudo-ng: (Jonathan Worthington)++
23:12 ng_feed rakudo-ng: Implement term:dotty.
23:12 ng_feed rakudo-ng: (Jonathan Worthington)++
23:12 ng_feed rakudo-ng: Fix parameter flattening.
23:12 ng_feed rakudo-ng: (Jonathan Worthington)++
23:12 ng_feed rakudo-ng: Fix proto.
23:12 ng_feed rakudo-ng: (Solomon Foster)++
23:12 ng_feed rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
23:12 moritz_ ouch
23:12 ng_feed rakudo-ng: (Solomon Foster)++
23:13 moritz_ it repated itself endlessly. sigh.
23:13 pmichaud ng:  say ((), ).perl
23:13 p6eval ng af269f: (())␤
23:13 jnthn karma win!
23:13 pmichaud ouch, that's wrong.
23:13 pmichaud ng:  say ((), ()).perl
23:13 p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
23:13 pmichaud I wonder where it's getting the Undef from.
23:13 jnthn pmichaud: Not sure. :-|
23:14 pmichaud ng:  say ((),3).perl
23:14 p6eval ng af269f: sh: ./perl6: No such file or directory␤
23:14 pmichaud ng:  say ((),3).perl
23:14 p6eval ng af269f: sh: ./perl6: No such file or directory␤
23:14 jnthn colomon: ah, I seeem to have got a test fail...
23:14 pmichaud oops, rebuild.
23:14 ng_feed joined #perl6
23:15 moritz_ next try with ng_feed
23:16 pmichaud jnthn: oh, I still see C compiler warnings during make, fwiw
23:16 pmichaud (if you're looking for things to do :-)
23:17 colomon moritz_: are you sure that wasn't just the list of commits from this afternoon?  It does seem endless...  ;)
23:17 jnthn pmichaud: no, I'm trying to figure out why what I thought was a simple fix is causing really odd issues...
23:17 moritz_ colomon: yes, I commented out a crucial line that skipped already seen tries
23:31 Whiteknight joined #perl6
23:32 ihrd joined #perl6
23:32 ihrd left #perl6
23:35 masak 'night, #perl6.
23:36 moritz_ 'night masak
23:38 JeffreyKegler joined #perl6
23:39 jnthn pmichaud: Probably going to stop here today. Ran into some oddness...
23:39 jnthn pmichaud: ...probably just needs me more awake to debug though.
23:48 Whiteknight joined #perl6
23:49 pmichaud jnthn: that sounds fine
23:49 diakopter ng:  say ((),3).perl
23:49 p6eval ng 6528b7: (3)␤
23:49 pmichaud things are likely to be a bit crazy around here as well.
23:49 pmichaud at least for a few hours
23:50 arnsholt The SVN browser on perlcabal.org seems to be broken
23:50 arnsholt I get error 500s
23:50 diakopter :(
23:50 * diakopter set that up
23:50 diakopter http://www.perlcabal.org/svn/pugs/revision works
23:50 moritz_ http://perlcabal.org/svn/pugs/revision/?rev=29101 seems to work
23:50 arnsholt Indeed it does
23:51 diakopter it does die on some diffs
23:51 arnsholt What about http://perlcabal.org/svn/pugs/browse/t/spec for you guys?
23:51 diakopter Infinoid & I spent quite some times trying to diagnose
23:51 diakopter hm, weird
23:51 diakopter I've never seen /browse break
23:52 moritz_ PATH: /t/spec
23:52 moritz_ rpath returning 't/spec' at /usr/share/perl5/SVN/Web/action.pm line 381.
23:52 moritz_ [Tue Nov 17 00:52:48 2009] [error] [client 87.176.79.181] plugin error - Number.Format: plugin not found
23:53 jnthn pmichaud: End of week/weekend will be a tad disrupted due to BPW.
23:57 hercynium joined #perl6
23:58 pmichaud jnthn: no problem.  following weekend will be disrupted for me a bit too (Thanksgiving holidays)
23:58 jnthn Ah, yes...I forgot that was coming up. :-)
23:59 moritz_ it would be nice if one of you could fix some tests in master before the release though :-)
23:59 moritz_ bed &

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

Perl 6 | Reference Documentation | Rakudo