»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moderator on 20 October 2009.
zaslon lolfrettledhazblogged! frettled++ 'What stops me from using Perl 6, today?': howcaniexplainthis.blogspot.com/200...today.html 00:01
frettled ooh, zaslon worked, yay! carlin++ 00:05
00:05 chromatic joined
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:09
00:10 meppl joined
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:10
00:11 nihiliad joined
frettled Meaning is dependant on both textual and cultural context, so that may be difficult. 00:12
English, for instance, isn't a language with even relatively uniform usage.
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
Caveat lector: I'm not a linguist.
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
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?
;)
japhb frettled, *chuckle*.
diakopter japhb: I think it's a central problem (keyboard)..
(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.
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.
frettled As the length of the sentence increases, the likelyhood of that decreases, though. 00:18
japhb sure. That was my assumption.
frettled There are few sentences in e.g. Castillian Spanish and American English that are similar.
But Austrian German and German may be too similar. 00:19
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:20
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.
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.
arnsholt jnthn: I'd guess n-gram language models generated from Google's indices 00:29
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
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
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
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
00:33 orafu joined 00:37 mikehh joined
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:40
arnsholt True, true 00:42
BTW, you're the one who works at the University of Oslo, right?
frettled Nopes :) 00:43
But I have a perpetual alumni account there.
arnsholt Ah, right 00:44
Then it was you I noticed the other day logged in from the login cluster
frettled sjn used to work for the meteorological institute, but he quit a week ago or so.
arnsholt (I'm a student at UiO, so I noticed the hostname)
frettled aha
I'm still using the login cluster.
I had a part-time job with tech support in 1997-1999, though. 00:45
arnsholt I see 00:46
jnthn frettled: Aww, so I should stop mailing sjn asking him to fix the weather now? ;-) 00:47
frettled jnthn: yeah :(
jnthn Aww.
Hope he's got something good lined up.
OK...time for me to get some sleep now. :-) 00:48
diakopter 'nite
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
jnthn: sleep tight!
I hope sjn succeeds well enough to make a living from that. 00:50
jnthn hopes sjn++ does well with it. :-)
And sjn++ again for pursuing what he cares about. :-)
Anyway, night!
frettled Oh, yes, sjn++ for doing that!
00:50 Wolfman2000 joined
Wolfman2000 evening 00:51
arnsholt Good night =) 00:52
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.
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)
diakopter starts partying
Wolfman2000 is an american.
frettled heads off to bed. *idle*
japhb Well, if anyone is still here ...
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.
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.
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.
arnsholt And it certainly is possible for two languages two be confused and have similar or same semantics
japhb (I asked it from a different angle)
Wolfman2000 japhb: You mean like a SQL Query?
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.
(without having to specify their language at the beginning)
arnsholt, heh
TimToady it's much more likely to be possible when the universe of discourse is constrained to the exhibits 00:59
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
(though Greek is hard :)
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
ouk looks like OK and nai looks like nah 01:02
but ouk is no and nai is yes
japhb ah, gotcha
TimToady I may be butchering modern greek here
japhb I guess given that point about Greek, and someone's previous point about the general problem with accurate spelling and typing, 01:04
one might be left with the case where theory and practice diverge rather painfully.
TimToady well, like any cryptogram, you can make better guesses with more info
japhb Sure, the longer the input, the more likely a proper understanding of it. 01:05
And the context.
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?
nodnod.
TimToady but you repet yourself... :)
*repeat
japhb "body of work" sigh 01:07
TimToady funny, I corrected that error without even noticing...
japhb Well, it seemed a related but not identical topic
TimToady but people are good at processing language statistically, and contextually
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 ...
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"
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?
TimToady otoh there are cultures like certain gypsy cultures where you continually mix together three or four languages
in children particularly, can't switch 01:11
also get differences of understanding vs production where two people may each speak in the language they're most comfy speaking
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.
TimToady but knowing the other person will underswtand 01:12
japhb hmm.
TimToady mai oui!
japhb I was that way about French in high school.
I was much better as a listener than a speaker.
TimToady I am the opposite in Japanese
I can speak it much better than I can process it
Wolfman2000 I can type some Japanese. 01:13
But reading fluently? Nope.
祭 <-- I think we could all use that.
TimToady hmm, my scim-anthy went away when I upgraded :(
yes, we could all use a festival 01:14
Wolfman2000 You can thank DDR for me knowing that one
TimToady put a roof on that yound you'll get "police" in japanese
wow
s/yound/and you/
japhb That was a couple levels deep of recursive braino, I think. 01:15
Wolfman2000 Anyway, time to get back to the pastebin work.
japhb
.oO( A festival with a roof is "police"? )
TimToady 警察 01:16
"keisatsu", look at the bottom of the right char
oh where, oh where has my anthy gone? oh where, or where could it be?
pmichaud TimToady: earlier I had question about my $a = (); # what ends up in $a? 01:22
Wolfman2000 rakudo: my $a = (); say $a;
p6eval rakudo 7347ec: ␤␤
Wolfman2000 pmichaud: ^ 01:23
TimToady sure looks like a Nil to me
pmichaud Wolfman2000: just because Rakudo returns an answer doesn't mean it's correct.
TimToady rakudo: my $a = (); say $a.WHAT
p6eval rakudo 7347ec: Failure()␤
TimToady should just be Nil, I think
pmichaud Wolfman2000: Indeed, it's because Rakudo has been wrong about this so much that I'm asking the question :-)
TimToady: but doesn't Nil in item context become a failure?
TimToady why?
pmichaud S02: A C<Nil> object may also carry failure information, 01:24
but if so, the object behaves as a failure only in item context.
I guess "may" is the operative word there?
TimToady yeah 01:25
I'd rather avoid escalating
pmichaud okay, so Nil is just an undefined type by default
er, undefined value when assigned
TimToady Nil isn't undefined, I don't think--it just doesn't give you much else
pmichaud S02 again: The C<Nil> type is officially undefined as an item but interpolates 01:26
as a null list into list context, and an empty capture into slice
context.
TimToady it's just an object representing ()
pmichaud is it exactly the same as () ?
TimToady you'll get an error soon enough if you call a method that Nil doesn't support
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
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
TimToady in a constant sort of way
eternaleye *works
pmichaud TimToady: so, if we have sub foo { return; } 01:28
eternaleye Plus, scim is mostly unmaintained these days
pmichaud and then
my $a = foo();
TimToady gotta do kid delivery & back in 10
pmichaud say $a;
okay, see you in 10.
01:29 lisppaste3 joined
pugs_svn r29101 | lwall++ | [CORE] missing Parcel type 01:42
pmichaud so, is Nil more like a type or more like a constant? 01:43
TimToady a constant 01:45
that's how CORE.setting has it
pmichaud okay
how does Nil(...) parse, then?
it's postcircumfix on a constant? 01:46
TimToady same as pi()
pmichaud oh, it's a function call
call to &Nill ?
er, &Nil ?
okay, I can go with that.
TimToady std: Nil()
p6eval std 29100: ok 00:01 101m␤
TimToady I'd guess it's an empty Parcel, actually 01:47
pmichaud I can do that as well.
Currently I have the ng branch such that a Parcel in item context becomes a List, though. 01:48
so
my $a = Nil; would seem to want to be a List
japhb rakudo: sub foo($a) { say $a.WHAT }; foo({}); 01:49
p6eval rakudo 7347ec: ( no output )
japhb rakudo: sub foo($a) { say $a.WHAT }; foo({});
p6eval rakudo 7347ec: ( no output ) 01:50
01:51 pnate joined
pmichaud going back to my earlier example 01:51
01:23 <TimToady> rakudo: my $a = (); say $a.WHAT 01:52
01:23 <p6eval> rakudo 7347ec: Failure()␤
01:23 <TimToady> should just be Nil, I think
if Nil isn't a type.... I'd think it'd be List.
anyway, I'll go with that for now. Thanks.
Having Nil as a Parcel seems to work in a lot of very good/useful ways, fwiw. 01:54
TimToady sounds good
pmichaud it can almost be defined as 01:56
sub Nil(*@ignored) { return (); } 01:57
or even term:<Nil>
(or both) 01:58
TimToady Nil doesn't have to respond to .() does it? 01:59
pmichaud I wouldn't think so.
TimToady I guess we defined it to be void at one time
pmichaud S02 still says that, I think.
well, it says that 'void' casts to Nil 02:00
er, "converts to Nil"
TimToady it would need to supply an eager *@
since void is eager
pmichaud sure
02:00 nihiliad1 joined
pmichaud okay, let's take that approach for a bit and see what happens :-) 02:01
thanks for the quick answers
(it helps that Parcels flatten in list context, which makes Nil as an empty Parcel work out pretty naturally) 02:02
02:09 nihiliad joined 02:22 agentzh joined
pmichaud token nofun { <!before '(' | '.(' | '\\\\' | '\\'' | '-' | "'" | \\w > } # STD.pm 02:24
Am I missing something there, or is single-quote in the list twice?
Wolfman2000 pmichaud: I don't think you are missing anything. 02:25
s1n pmichaud: i see '\\'' and "'" 02:27
Wolfman2000 err...I responded to the wrong part 02:29
pmichaud: what s1n++ said is correct.
pmichaud I thought s1n++ was agreeing with me :-) 02:30
s1n i was
eternaleye I think Wolfman2000 first parsed it as "Am I missing something [which needs to be added to this token]" 02:35
pmichaud ah. 02:36
Wolfman2000 ...something like that.
pmichaud makes sense.
I should've said "am I misunderstanding something ..."...
Wolfman2000 ironically, I would ahve understood that
s1n maybe i missed something, but can someone tell me how given/when differs from a switch statement 02:37
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:38
pmichaud eternaleye++ 02:39
eternaleye s/ it / given\\/when /
pmichaud also, switch statement usually requires a "switch" outer block, while "when" blocks will work anywhere that $_ is set
eternaleye Ooh, forgot that. It is indieed shiny in that usage
for <foo bar baz> { when 'foo' {...}; ...} 02:40
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
pmichaud er, "continue" I think.
"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
Which may have been simply a thinko even then
s1n just curious, i keep seeing people babble about it and i think to myself "yay! switch statements!"
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)++
pmichaud for <foo bar baz> { when 'foo' { ... }; say 'still here!'; when 'bar' { ... } }
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!␤
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 } }
s1n versus Java which has no $_ :)
p6eval rakudo 7347ec: quux␤still here!␤still here!␤corge␤still here!␤
s1n eternaleye: why the extra "still here!" on the end? 02:46
eternaleye baz.
Wolfman2000 eternaleye: while you're here...got a screenshot to prepare for you 03:09
i37.tinypic.com/67mhqs.png 03:10
bah 03:12
pnate spellcheck: permanently 03:14
Wolfman2000 pnate: thanks
err
pnate++
03:21 nihiliad joined 03:29 yahooooo joined 03:42 envi^office joined 03:57 frew_ joined
Wolfman2000 frew_: surprised to see you around here. 04:01
04:02 meppel joined
Wolfman2000 diakopter, TimToady, others: if I recall correctly, Perl 5's symbol/animal was the llama. What will Perl 6's be? 04:04
carlin Wolfman2000: a butterfly 04:06
perl6.org/camelia-logo.png
Wolfman2000 Float like a butterfly, sting like a bee? Is that the mentality of Perl 6? 04:08
nbrown_ Wolfman2000: svn.pugscode.org/pugs/misc/camelia.txt 04:28
Wolfman2000 More thoughts needed. Is the text spaced alright and whatnot? i35.tinypic.com/wjj8lg.png 04:48
05:00 mepplock joined 05:18 ihrd joined
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. i35.tinypic.com/wjj8lg.png 05:19
phenny Wolfman2000: I'll pass that on when masak is around.
05:22 ihrd left 05:36 am0c joined
frew_ Wolfman2000: I'm always in here :-) 05:39
Wolfman2000 frew_: *shrugs* fair enough
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?
once it is you can get a lot more help :-)
Wolfman2000 frew_: once I get enough of the web stuff working, I'll be more willing to accept help in that case. 05:41
Luckily, I'm almost at that point
07:09 gfx joined, kaare joined 07:11 eternaleye joined 07:30 scottp joined
scottp Anyone know where I can download hirez/vector image of Camelia ? 07:30
TimToady the original is in pugs/misc/camelia.odg 07:34
the pdf scales pretty well too
07:39 rfordinal joined
sjohnson hi 07:44
07:53 iblechbot joined 08:11 barney joined 08:13 rfordinal joined 08:24 Su-Shee joined
Su-Shee good morning 08:24
08:36 pnate joined
sjohnson hello 08:39
08:42 agentzh joined 08:47 scottp joined 08:50 mariuz joined 08:52 ejs joined 09:03 ejs joined 09:07 charsbar_ joined, r0bby left 09:08 goneri joined
frettled morning! 09:27
09:32 dakkar joined
diakopter 'nite! 09:35
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:37
moritz_ woot 09:38
how much is "much"?
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
eh
mathw diakopter: cool! 09:40
next stop: compile to .NET CLR?
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
mathw: don't put it past me.
<groan on "past">
mathw: funny you mention it
actually I do have a version of this interpreter in C# 09:42
mathw diakopter: it would be a Good Thing
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:43
JSEmitter.pm - perl6.pastebin.com/f7fa83b9d 09:46
09:47 rgrau joined
moritz_ not bad 09:47
diakopter past.js (eh, probably about half done, yeah) perl6.pastebin.com/m156a5c85 09:48
09:52 rjh joined
diakopter it's speedy and stuff; using cached parses (from nqp --target=pastjs) each test file (that fully succeeds) takes around 0.2s 09:53
er, I mean 0.05s. silly arithmetic. 09:54
'nite all 09:55
09:57 Su-Shee_ joined 10:02 Su-Shee__ joined, explorer joined
sjohnson hi! 10:05
10:10 nickad joined 10:12 ejs1 joined 10:16 nickad left 10:19 andrey joined
andrey I was just reading pdf book about perl6, and there is a sub called to-json in there 10:19
Does that mean you can use hypens in names in perl6?
moritz_ andrey: yes, as long as they are between two alphabetic characters 10:20
rakudo: my $a-b = 3; say $a-b
p6eval rakudo 7347ec: 3␤
andrey This is so cool 10:21
I love you guys
moritz_ \\o/
10:24 ejs1 joined, pnate2 joined
moritz_ rakudo: sub a($x) { 1+$x}; sub b() { 5 }; say a - b 10:27
p6eval rakudo 7347ec: -4␤
moritz_ rakudo: sub a($x) { 1+$x}; sub b() { 5 }; say a-b
p6eval rakudo 7347ec: Could not find non-existent sub a-b␤in Main (file src/gen_setting.pm, line 324)␤
moritz_ that's about the only situation I can think of where one needs whitespace for disambiguation 10:28
but that's parsed as a(-b()) anyway, which is most likely not what you want
lunch&
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)␤
andrey rakudo: sub a() { 0 }; sub b() { 5 }; say a- b
p6eval rakudo 7347ec: -5␤
10:34 mhsparks joined 10:36 rfordinal left 10:37 Chillance joined 10:42 iblechbot joined
jnthn morning 10:49
sjohnson jnthn: hi
mathw hi jnthn 10:52
jnthn oh hai mathw :-)
mathw is it a rakudo day today? 10:54
jnthn mathw: maybe...just checking if - other than a @future-plan phone meeting or two, I need to do many other things today... 11:01
mmm...looks like not. :-) 11:02
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
mathw So do I 11:05
They came to me, so there's some hope in that :)
jnthn ooh, pmichaud++ did some good bits last night :-) 11:08
mathw :)
jnthn ah, yes, that map impl is a cheat! But hey, it's lazy. :-) 11:10
11:26 jaffa8 joined 11:33 SmokeMachine joined 11:49 snearch_ joined
zaslon loljnthnhazblogged! jnthn++ 'Bringing back the setting, and bug hunting': use.perl.org/~JonathanWorthington/j...4?from=rss 11:49
carlin rakudo: my $_=IO::Socket::INET.new;my $/='746865696E746572736563742E6F7267';.open: _($/),_('3830').Int;.send: _ "474554202F6A20485454502F312E310A486F73743A20{$/}0A0A";say _ .recv.subst(/.*\\n\\n/,'');sub _($_){.subst(/(\\w\\w)/,{chr "0x$0"},:g)}
p6eval rakudo 7347ec: invoke() not implemented in class 'Undef'␤in Main (file <unknown>, line <unknown>)␤
carlin Argh, safe mode :( 11:50
11:52 masak joined
jnthn lolitsmasak 11:52
jnthn won the conciousness race today! 11:53
masak I think the outcome weekend sleep experiment was fairly conclusive.
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. i35.tinypic.com/wjj8lg.png
masak Wolfman2000++
heh, light-hearted error messages. :) 11:54
mathw \\o/ it's masak 11:57
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:58
jnthn masak: I seem to be heading exactly the same way. :/ 11:59
mathw I think you're just a late person masak
some people are
masak mathw: well, yes and no. 12:00
mathw I'm an early person
masak if left unchecked, my hours tend to get later and later. but I just love actually getting up hours before anyone else.
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.
is there such a service?
mathw I don't know 12:02
jnthn ...I'm not sure it's a half good one too :-)
mathw probably
masak :)
mathw neither am I 12:03
12:16 rfordinal joined 12:17 envi^home joined, rfordinal3643 joined
mathw -> aikido 12:20
12:23 zamolxes joined 12:30 SirKay joined
SirKay Good morning. 12:31
moritz_ hello 12:32
SirKay Is Perl 6 done yet?
moritz_ is any programming language done yet?
(one that's not dead)
masak SirKay: do you have a specific feature in mind?
SirKay No, I just mean in general. 12:33
Juerd SirKay: It's usable but certainly not without undocumented surprises :)
SirKay Juerd: this is Melchior
but the nick was registered
masak in general, Rakudo is the most implemented Perl 6 implementation.
Juerd I figured.
Juerd invited SirKay here, from magnet #perl
masak you can write pretty involved things in Rakudo today.
Juerd++
SirKay I'm a rather new beginner to Perl. 12:34
and to programming.
Juerd That wasn't a karma whoring action :)
masak Juerd: nevertheless, there's your karma. :)
Juerd \\o/
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
SirKay this is about the only non-banal thing I've done as far as programming goes, and even then that's debatable perlmonks.org/?viewmode=public;node_id=584356 12:35
12:35 mikehh left
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.
masak SirKay: I'd recommend playing around with stuff rather than reading through whole things.
Juerd SirKay: use.perl.org/~pmichaud/journal/39411
masak or some mixture of the two.
Juerd would recommend Beginning Perl 12:36
SirKay so yeah, any comments on my scratchpad there?
Juerd You could probably do that in Perl 6 :) 12:37
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
moritz_ yes, that's true (and a good attitude :-)
Juerd Perl 5 is definitely easier because it has complete documentation, lots of books, and thousands of people who could help you.
Perl 6 is more interesting and a bigger challenge. 12:39
SirKay I'm moving the goalposts, Juerd.
moritz_ on the other hand we try to be helpful in here
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."
masak SirKay: for what it's worth, I joined on the same grounds, and I'm learning shit all the time.
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.
SirKay plus, it will do good for my reputation
"I helped with Rakudo"
masak that remains to be seen. :)
12:40 ihrd left
SirKay indeed masak. 12:41
as I was telling Juerd, one of my dearest ambitions is to create my own mini-language.
masak SirKay: I was half-joking. :)
Juerd Write a grammar and you're almost done :)
masak SirKay: then you'll probably like grammars. :)
and actions.
SirKay nice.
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.
masak well, not if you create something really useful. :)
there are still many low-hanging fruits in the Perl 6 ecosystem. 12:43
SirKay great
Juerd SirKay: The main problem there would be that Perl 6 can probably already do anything you can think of ;)
Perl 6 makes many languages look less useful. :)
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.
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
That's the scary part :D
SirKay I mean experts at other programming.
Juerd Oh :)
SirKay I'm a bit of a late bloomer...been interested in years but my own attitude sabotaged my training
so I know a lot of trivia but very little practical skills to call my own.
er, for years. 12:45
masak SirKay: my tip to you is to grab Rakudo and start writing things in it.
SirKay got it.
masak SirKay: small things first, then successively larger things.
SirKay it's got a windows implementation right?
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
masak let yourself be driven by interest, and need.
SirKay: yes.
moritz_ SirKay: one of our main developers works on windows
SirKay okay. my linux is sorta broken at the moment.
Juerd That's what linuxes do when you don't treat them right ;)
moritz_ jnthn++
SirKay I somehow broke both python AND perl
Juerd That's not Debian or Ubuntu then, is it? :) 12:46
SirKay nope.
masak heh.
SirKay Fedora.
moritz_ never broke a Debian really badly
SirKay I should just reinstall.
moritz_ well, nearly never :-)
Juerd moritz_: Oh, I did.
masak lunch &
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
SirKay I will say that about windows...it's harder to break things badly like that.
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
moritz_ Juerd: :-)
jnthn Juerd: Is this like a "how not to"? ;-)
Juerd moritz_: And eventually you just leave it unmaintained for a few years and then do a single dist-upgrade. Instant breakage.
SirKay so yeah I'll get around to installing Rakudo and playing it.
Juerd jnthn: This is how to break Debian really badly :)
SirKay is going to treat it like a video game.
moritz_ SirKay: when I abandoned windows (that was windows 98 SE) it was a breeze to break :-)
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.
moritz_ probably not awake yet 12:50
SirKay indeed.
and if he was, he's probably busy keeping everything together.
moritz_ more putting everything back together :-)
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?
moritz_ SirKay: not really... 12:54
we plan to improve rakudo more and more, and at a certain point we'll start to buzz more about it 12:55
and hopefully that will attract other nice people that help us, and/or write libraries
SirKay true. quality is better than quantity.
as nice as perlmonks is, how many people there know what they're doing? I sure as hell don't.
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" :-)
Su-Shee: glad you volunteered :-)
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
and there are a lot of people who do that, and write good answers
SirKay Then I must amend my statement.
At the very least, giving good answers, which means having good enough knowledge of perl. 12:58
12:59 ejs2 joined
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
Am I talking too much like an android?
jnthn
.oO( more like an iPhone, tbh )
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
SirKay I see. Pray, enlighten me.
13:01 takadonet joined
moritz_ SirKay: the latter has a much higher chance of getting a very good answer 13:01
in the chatterbox your question disappears after 5 minutes, and the number of people seing your question is rather low 13:02
so people prefer that for questions that can be asked and answered quickly
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:03
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:07
13:08 wollmers joined
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:08
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
Juerd learned a lot of Perl by answering questions on Perl Monks
SirKay That is to say, input on the matter of the popular tract on properly asking questions.
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 ..."
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:11
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
But...that would not be constructive.
Juerd I wonder if anyone really cares about ESR (supposedly) being a dick, here.
Do you have to work with him? :) 13:13
SirKay It is true, I am not required to care.
And perhaps it would be better if I allowed such people to wallow in their arrogance. 13:14
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:16
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:17
Juerd Why would you want to? 13:18
SirKay Allow me a minute to consider my reply.
I suppose my biggest complaint is, he reminds me a lot of myself. 13:19
In a negative way.
Hmm. 13:25
Does your client not support query windows well>
moritz_ SirKay: whom are you talking to?
SirKay Juerd 13:26
I don't know irssi so perhaps it does not handle query windows well or something.
13:26 payload joined
moritz_ it does 13:27
however on freenode quries are disabled by default
unless you register with freenode
SirKay oh.
>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:28
Have I revealed too much about myself? 13:33
moritz_ that's for you to decide 13:34
people generally prefer discussion Perl 6 here, though :-)
13:34 am0c joined
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:35
13:36 jrockway left
moritz_ no need; we're all ridiculous in here 13:37
SirKay okay.
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:38
Perhaps that is a marked departure from my more noble sounding reasoning before, but there you go. 13:39
moritz_ honesty++
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.
Thank you.
13:41 fridim_ joined
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:41
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
of course, I might have troubles when it comes time to promulgate my mini-language :p
software doesn't sell itself, you need good propaganda. 13:43
Hopefully, I will be focused more on the "good" and less on the "propaganda." 13:44
pugs_svn r29102 | wollmers++ | [t/spec] unfudged RT #64918 13:46
jnthn Is it me, or should the two bits of grammar in gist.github.com/235975 be equivalent?
(In terms of what they accept, that is.) 13:47
(assuming you call dotty)
13:47 payload1 joined
jnthn Turns out that the first seems to work...and the second doesn't. And I'm rather perplexed as to why. :-| 13:47
moritz_ can't see a real difference 13:48
of course the $<dotty><methodop> capture will be different
jnthn Right. :-)
It'll not have the .
But that's all, as far as I can see.
Ouch. :-( 13:49
jnthn thinks he'll have to ask pmichaud on this one.
I fear a bug somewhere.
13:50 jrockway joined 13:51 jrockway joined 13:52 s1n joined 13:58 rfordinal3643 left 14:10 [particle] joined 14:15 rfordinal joined 14:18 payload joined
pmichaud good morning, #perl6 14:26
SirKay greetings.
how are you
mathw oh hai pmichaud 14:27
jnthn pmichaud: oh hai...I haz a stuck. 14:29
pmichaud the dotty grammar example? 14:33
jnthn pmichaud: Indeed.
pmichaud: Am I missing something silly? 14:34
pmichaud they look like they should be equivalent to me also
but it wouldn't surprise me if we're missing some silliness
jnthn pmichaud: OK. If I use the second one (the . matched in another rule), then method calls won't parse.
We fail trying to parse core.pm on like, line 8 (the first line with a method call).
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
in whatever rule calls <dotty>, add <?DEBUG>
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?
pmichaud SirKay: "Welcome." :-)
SirKay Thank you.
jnthn pmichaud: That'd be token postfix:sym<.> { <dotty> <O('%methodop')> } then
pmichaud Oh, you wanted something wiser than that.
jnthn So token postfix:sym<.> { <?DEBUG> <dotty> <O('%methodop')> } would do it?
SirKay I was about to say that I should amend my request, yes.
pmichaud jnthn: ah, that explains it (more in a bit)
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.
mathw SirKay: what we can do for you
SirKay: Listen to pmichaud, he speaks rightly.
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 ...?
SirKay I don't expect to be a master, right now the goal is to become useful enough to gainfully contribute to the project.
pmichaud jnthn: with the dot in the <dotty> rule, it currently changes the order in which postfix:sym<.> fires.
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.
SirKay yes, documentation about writing in perl 6.
pmichaud Although I think it should be.
SirKay: that's one of the places where we're weakest at the moment.
SirKay actually, I did have an idea. 14:40
perhaps a web interpreter would help people get their feet wet with rakudo without actually downloading it first.
jnthn pmichaud: Do you still want me to get the debug trace, or shall I leave it with you to dig on a little?
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 (github.com/perl6/book). If you wanted to try out the examples there and give feedback, that'd be great
SirKay alright, I will give it a look.
pmichaud jnthn: is there something else in <postfix> that could be eating the dot? 14:41
jnthn: the DEBUG trace is likely to be most instructive.
jnthn: or, you could try this:
jnthn pmichaud: Well, what I pasted was the entire of postfix:sym<.> 14:42
pmichaud postfix:sym<.> { <?[.]> <dotty> <O('%methodop')> }
which explicitly tells the rule it's looking for a leading dot
jnthn ok
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?
pmichaud SirKay: there's a pdf of the book
and reading the book sources shouldn't be that difficult (it's POD format) 14:44
if you'll end up doing much Perl, it's worth looking at pod :-)
SirKay ah...I looked for the pdf and didn't see it. my bad.
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:45
jnthn: would it help if I work on dotty parsing? 14:46
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
jnthn pmichaud: Please do take it.
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
The reason I started off on this track was because I wanted to parse <privop> calls too.
And that entailed starting to re-organize method call parsing like STD.
It feels like there's a parsing subtlety/bug that you'll be able to find much faster than I could. 14:49
pmichaud ah, well it looks like postfix:sym<.> needs to go away anyway 14:50
I'll start there.
jnthn pmichaud: Well, that too - we need something like token POST eventually, and then termish. 14:51
SirKay is perusing the tome now.
pmichaud we already have termish
it's inherited from HLL::Grammar
jnthn Oh.
pmichaud and I chose to call POST "postish", for consistency
jnthn lol
pmichaud er, actually "postfixish", I think.
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>? ;-)
pmichaud you mean <radint> ?
jnthn
.oO( mmm... <raddish>
)
:-)
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?
pmichaud SirKay: a mix of C, Parrot, and Perl 6
At the moment, most of it is written in Perl 6
SirKay okay.
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:54
pmichaud SirKay: indeed, that is one of Perl 6's killer features 14:55
(and it keeps getting more killer all the time :-)
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. :)
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
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
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
SirKay It is more like I know very little Perl 5. 15:02
I know scalars, arrays, a little hashes, perhaps I can do subs if I have a tutorial in front of me
but my perl fu is weak, to be sure.
mathw that's okay
pmichaud those are generally much easier in Perl 6
SirKay it might be better to start fresh this way.
mathw those things (particularly subs) are much nicer in Perl 6
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
an earlier edition of it
pmichaud the first edition is more useful, imo
mathw the dragon book?
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
mathw: en.wikipedia.org/wiki/Dragon_Book_(...r_science)
SirKay www.amazon.com/Compilers-Principles...0201100886
mathw pmichaud: ah that one, I've heard of that
I do have a big fat compiler design textbook on my shelf, but I've not ever read it in great detail
jnthn pmichaud: Dares you to call the example language Trogdor. :-)
mathw I probably should at some point
SirKay pm, perhaps you can take a quick look over this site and see if it is "on the level" createyourproglang.com/ 15:05
mathw but first I have a few hundred pages of The Algorithm Design Manual to swallow
SirKay will probably name his language after one of the many characters in Bleach.
pmichaud jnthn: I just pushed 2aa95b9 -- might be worth looking at the commit to see how I started the refactor.
(it's incredibly short) 15:06
jnthn pmichaud: glancing
Wolfman2000 SirKay: I would recommend Kon
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 :)
Wolfman2000 SirKay: haven't wached enough to know who Isane is
colomon mathw: I think the Algorithm Design Manual is awesome, but there's no way I'm reading it straight through...
jnthn pmichaud: OK, cool. If you can now go on to separate the . into a dottyop rule that calls methodop, we may be set. :-)
SirKay pm: ah, so it's a legitimate book and not a scam to lure naive wannabe language designers?
pmichaud that's my next step, yes :)
15:08 PacoLinux joined
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.
colomon: this is of course not going to happen
SirKay okay
Wolf: I guess you've not made it to the Soul Society arc yet.
pmichaud tentatively clicks on the "Buy Now" button to see what happens
goes to PayPal, that's normalish
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
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
SirKay Bleach is a freaking trainwreck. I like it anyway though.
by the way, I'm not saying that compiler design information is gibberish. 15:11
(however, at my level of understanding, it tends to go way over my head)
jnthn pmichaud: woo, I got something done. 15:12
> my ($a, $b); $a = 4; $b = 2; say "$a$b";
42
Thankfully, with very little code added. :-)
pmichaud I guess we need parcel/list assignment soon?
jnthn Yeah. 15:13
This was kinda a pre-cursor to that.
pmichaud does my ($a, $b) end up with ($a, $b) as a result?
jnthn pmichaud: What kinda thingy should that decl build?
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?
pmichaud ($a, $b) # :-)
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, KyleHa joined
jnthn pmichaud: btw, having the decl past and the var past separated out is *so* nice. 15:15
pmichaud indeed, it is. :)
I'm continually glad we went with the "rewrite" instead of "fixup" approach
KyleHa Smells like victory!
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
KyleHa Tastes like chicken! 15:16
jnthn pmichaud: Same, painful as it is at times. :-)
I think the fixup approach woulda been more painful though really. 15:17
pmichaud I'm certain of it
also, this gives us a good way to revisit some of the core features
like lazy lists
15:19 kaare_ joined
jnthn pmichaud: pushed the list decls. 15:26
well, whatever you call 'em.
15:26 masak joined
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
<?DEBUG>ing now
jnthn Aww.
:-)
pmichaud just pushed the changes I have so far 15:27
I have <dotty> working as a protoregex
jnthn yay 15:28
pmichaud so next is to get <dottyop> to work
jnthn :-)
pmichaud it does look prefix bugish, though. 15:29
pugs_svn r29103 | kyle++ | [t/spec] Test for RT 66576: .name method on bool values 15:31
r29104 | kyle++ | [t/spec] finish unfudge
15:31 pmurias joined
KyleHa I still find that 'tests available' cron job very satisfying. 15:36
15:39 payload joined 15:43 justatheory joined
moritz_ too 15:46
pmichaud jnthn: you're right, it appears to be a deep bug 15:57
jnthn pmichaud: Ouch. :-(
pmichaud: Narrowed it down much? 15:58
pmichaud seems to be that the protoregex token tables are being miscalculated
when the dot gets moved into the methodop rule, the table thinks it's a length of two instead of one 15:59
oh
(checking something else)
jnthn That is weird. 16:01
pmichaud I should be able to find it now. 16:02
jnthn Yeah
Hopefully it's not a horribly hard fix.
pmichaud "dotty" => Hash { ".1" => PMC 'Sub' { ... }
}
pmichaud prepares another burning Parrot
stupid resizablepmcarrays stringify to the number of elements in the array again 16:03
I would much rather they threw an exception than the existing broken behavior.
moritz_ didn't allison call the current behavior a bug? 16:04
pmichaud for MultiSub, yes.
(and MultiSub isa RPA)
but not for RPA
moritz_ if yes, it's not subject to to deprecation cycle....
:(
pmichaud it'd be harder to make the case that RPA stringification is a bug
I can see why some would treat it as a feature
16:05 rfordinal joined 16:06 hcchien joined
jnthn
.oO( burning Parrot sketch )
16:06
moritz_ hbfs.files.wordpress.com/2009/11/perl6-orly.png YaY 16:08
(from <hbfs.wordpress.com/2009/11/13/the-p...logo/>)
16:09 rfordinal left
jnthn With a slightly diffrent ordering, they coulda made the contents of the speech bubble syntactily valid... 16:09
moritz_ just make # go first :-)
jnthn std: *%*#$@& 16:10
p6eval std 29104: ok 00:01 102m␤
jnthn oh, most the paren
*missed
or *lost
:-)
16:13 nihiliad joined
KyleHa Where's a good test for an 'is also'-related bug? 16:15
pmichaud isn't "is also" gone?
jnthn KyleHa: is also doesn't exist any more.
KyleHa: it's "augment" now.
KyleHa Oh. Then that's another bug. 8-)
I'm glad I asked! 16:16
16:17 Apocal joined 16:18 iblechbot joined 16:19 cognominal joined, abbe joined
abbe hi everyone 16:19
moritz_ hi 16:20
KyleHa Hello abbe!
abbe is trying to port rakudo's october snapshot to freebsd (amd64).
hi moritz_ KyleHa
GCC 4.2.1 is segfaulting for me at pastebay.com/70093
moritz_ abbe: did you try configuring parrot with --optimize? 16:21
abbe: there's a known bug in gcc 4.1 where --optimize helps
jnthn Wait, GCC segfaults?!
That's...different.
moritz_ different? ok 16:22
moritz_ shuts up
jnthn moritz_: no no
abbe moritz_, --optimize --parrot_is_shared --inline . Yes.
moritz_ abbe: have you reproduced it on a different machine?
jnthn moritz_: I wasn't saying the known bug wasn't this one.
moritz_: I was just being all shocked over GCC segfaulting...
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
abbe lol :-)
jnthn bind.c doesn't do anything *that* strange!
moritz_ there's still the offside chance that it wasn't you after all, jnthn :-)
jnthn pmichaud: Hmm. Our contextuals use "find_dynamic_lex" op. Does that only look down the call stack? 16:27
pmichaud jnthn: yes.
jnthn pmichaud: Ah.
jnthn was trying to get $*OUT and friends in place...
pmichaud that code should port pretty much directly from master, I think.
jnthn pmichaud: Do we still emit :scope('contextual') and override something, or? 16:28
pmichaud no
diakopter works on Windows too. well, for the Notepad++ text editor. using samba to linux VMs.
pmichaud we don't emit :scope('contextual')
diakopter pmichaud, jnthn: g'morning
jnthn pmichaud: OK, I'll go peek at how master does it, and import that. 16:29
diakopter: morning
pmichaud jnthn: contextuals become PAST::Op.new( :name('!find_contextual'), $varname )
i.e., they're always looked up using the !find_contextual subroutine
(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?
diakopter is this rakudo.. oh, nm
pmichaud jnthn: no
jnthn ok
diakopter I was going to say, nqp-rx uses :scope('consensual') or whatevs
pmichaud jnthn: my $*xyz; simply creates lexical '$*xyz', same as for non-contextuals
jnthn diakopter: consensual variables? :-) 16:31
diakopter yeah, that too
statutory declaration.
jnthn
.oO( Unconsensual assignment to $*OUT )
abbe brb
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
perl6.pastebin.com/m7fb506b3
jnthn: u may find this interesting: www.coderun.com/cwt 16:37
moritz_ diakopter: cool
diakopter moritz_: (there are 15 or so files truncated from the end)
(as well as the P6regex ones)
pmichaud diakopter: if you'd like to start moving code into the nqp-rx repo, that's good with me 16:39
just put it into a separate subdir for now -- perhaps ext/ or something like taht
16:39 abbe joined
jnthn diakopter: oh, that's cute :-) 16:39
diakopter jnthn: (and apparently it actually works) 16:40
pmichaud: ok.. I'm not a committer there yet 16:41
I think
jnthn hugme: add diakopter to nqp-rx
pmichaud (jnthn++ beats me to it) 16:42
(hugme ignores jnthn++)
jnthn erm...where's hugme?
pmichaud hugme hug me
jnthn hugme didn't even come to work today!
pmichaud :-(
diakopter: do you have a github account?
diakopter needs to find my github ssh key; yes
dalek p-rx: 2212d9b | pmichaud++ | src/Regex/Cursor-protoregex-peek.pir:
Fix bug with calculating subrule prefixes.
16:43
p-rx: 2046e24 | pmichaud++ | src/stage0/ (4 files):
Update bootstraps with bugfix.
jnthn Yay! pmichaud++
pmichaud diakopter: you're added as a committer now.
jnthn: well, still have to see if this really fixes the problem :-)
diakopter cool
pmichaud jnthn: looks like 'yes" 16:44
diakopter now to find some gui/wrapper for git I can actually wrap my head around
PerlJam diakopter: man git-gui
diakopter: or just run "git gui" from a command line. 16:45
diakopter: you may need to install git gui as I'm not sure it comes with all git dists.
diakopter aptitude doing its thing
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. :(
lol.
pmichaud does the hack involve changing any of the nqp-rx sources? 16:47
diakopter yeah a bit
jnthn pmichaud: Yeah...
pmichaud I'd like to review that first, please
jnthn pmichaud: I wrote it in 15 mins to unblock diakopter++
pmichaud nqp-rx is still a little fragile
jnthn pmichaud: Rather than with the intention of it being committed.
diakopter well, the Makefile.in
jnthn pmichaud: It's almost certainly Not Right.
pmichaud: I actually didn't understand the makefile.
pmichaud maybe start work in a branch, then
diakopter ok, yeah
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
(for the earlier stages)
pmichaud jnthn: I suspect it should be done as a separate library.
as opposed to being part of core nqp
jnthn pmichaud: Yeah.
pmichaud: I guess as well, it's sort-of a "bootstrap NQP on v8" throw-away. 16:49
That is, eventually we probably won't need the target.
16:55 IllvilJa joined 16:58 KyleHa1 joined
diakopter jnthn: right, since v8/js would be hosting all the codegen steps 16:59
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
bbiah
17:01 KyleHa2 joined
jnthn pmichaud: Excellent, thanks. 17:02
pmichaud: I'm working on getting IO back in place.
(in the setting)
abbe moritz_, yes, I'm able to reproduce it on my other notebook. 17:03
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.
jnthn abbe: That's...odd. But a workaround at lesat... 17:05
*least
abbe yes, any ideas how to narrow down problem further ?
jnthn abbe: Well, I guess try adding back flags until you get to the segfault... 17:06
abbe: But also, see if later versions of gcc have the issue.
abbe okay
17:06 abra joined
jnthn (if that isn't the latest) 17:06
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
jnthn abbe: Ah.
abbe: OK, I'm not sure what the normal done thing in these situations is.
17:08 payload joined
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.
yes, right.
17:09 cdarroch joined
jnthn abbe: Thing is, the flags are just given to us by parrot_config... 17:10
17:10 TopoMorto joined
abbe okay, so if a fix is needed that needs to be in parrot. 17:11
s/that/,then that/
jnthn Well, I don't know. It feels odd asking Parrot to change too.
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
abbe: I know that bind.c does emit more warnings than it should on compile.
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.
That'd be the "we get lucky" answer. :-)
abbe okay jnthn . anyone else want to test the port on freebsd ? 17:15
abbe points everyone to the shar containing the ports at pastebay.com/70102 . 17:20
SirKay well I just ordered the dragon book. 17:31
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 17:47 desertm4x joined 17:49 jeremiah_ joined, cotto_work joined 17:52 stephenlb joined
moritz_ ng: my $answer = 1; my @x = 41, (42 unless $answer), 43; say @x.perl 17:54
p6eval ng f67d94: (41, 1, 43)␤
moritz_ ng: my $answer = 5; my @x = 41, (42 unless $answer), 43; say @x.perl
p6eval ng f67d94: (41, 5, 43)␤
colomon rakudo; 17:55
moritz_ fixing that to return Nil instead of $answer would bring back t/spec/S04-statement-modifiers/unless.t
colomon rakudo: my $answer = 5; my @x = 41, (42 unless $answer), 43; say @x.perl
p6eval rakudo 7347ec: [41, 43]␤
17:56 nihiliad joined
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
Not sure what the cleanest way to do that is.
colomon is forced to git pull ng and recompile yet again.... 18:00
moritz_ and once again compiling the setting becomes the slowest step of that whole process 18:01
jnthn *nod*
By now, it probably might be the biggest thing we do compile though. 18:02
18:02 RonOreck joined 18:05 payload joined
colomon Errr.. where is Rat.Int implemented in master? 18:07
moritz_ is it implemented? :-) 18:08
colomon There's a non-skipped test for it in rat.t...
jnthn rakudo: (1/2).Int
p6eval rakudo 7347ec: ( no output )
colomon errr... that's wacky. 18:09
rakudo: say (1/2).Int
p6eval rakudo 7347ec: 0␤
colomon rakudo: say (5/4).Int
p6eval rakudo 7347ec: 1␤
moritz_ rakudo: say (-5/4).INIT
rakudo: say (-5/4).INT
p6eval rakudo 7347ec: Method 'INIT' not found for invocant of class 'Rat'␤in Main (file src/gen_setting.pm, line 324)␤
rakudo 7347ec: Method 'INT' not found for invocant of class 'Rat'␤in Main (file src/gen_setting.pm, line 324)␤
moritz_ ng: say (-5/4).INT
p6eval ng f67d94: Method 'INT' not found for invocant of class 'Rat'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
jnthn colomon: I'd expect somewhere in Rat.
moritz_ ng: say (-5/4).Int
p6eval ng f67d94: Method 'Int' not found for invocant of class 'Rat'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
moritz_ rakudo: say (-5/4).Int 18:10
jnthn colomon: Since it's not an "is also" class...
colomon jnthn: tried there. also Int.pm
p6eval rakudo 7347ec: -1␤
jnthn colomon: Oh.
:S
colomon perhaps it's some sort of Any.Int?
moritz_ probably
and that coerces to Num first
pmichaud back again
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?
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.
jnthn: ...deref of the invocant?
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
jnthn pmichaud: to remove it from any Perl6Scalar 18:15
pmichaud: Otherwise, if it's e.g. a PIO, we choke.
pmichaud jnthn: shouldn't method invocation already be doing that?
jnthn pmichaud: We should be doing it, we were in master, we're not in ng.
pmichaud: Look in actions.pm for iirc deref_invocant 18:16
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.
jnthn Thanks...I inserted an exlicit descalarref into IO.print just to make that work for now.
colomon 760 passing tests in rat.t now
pmichaud pmichaud@orange:~/ng$ ./perl6 18:18
> my $answer = 1; my @x = 41, (42 unless $answer), 43; say @x.perl
(41, 43)
lambdabot <no location info>: parse error on input `='
jnthn ng: token { \\x0a$ } 18:19
pmichaud fix for unless/if pushed
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)␤
jnthn ng: token foo { \\x0a$ }
p6eval ng ecb7d7: ( no output )
pmichaud we don't do anonymous tokens/regexes yet 18:20
18:21 KyleHa joined
jnthn pmichaud: I was trying to fathom why the this bails... 18:21
ng: my $str; if $str ~~ /\\x0a$/ { }
p6eval ng ecb7d7: Confused at line 1, near "if $str ~~"␤current instr.: 'perl6;HLL;Grammar;panic' pc 448 (src/stage0/HLL-s0.pir:300)␤
jnthn I suspect regex parsing not really done yet.
pmichaud ...because we don't do anonymous tokens/regexes yet? ;-)
jnthn :-P 18:22
I'm bringing back the bits of Any-str.pm that will Just Work.
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 :-)
pmichaud lol
colomon git push
d'oh, wrong window!
ng: say <a b c>[2] 18:25
p6eval ng ecb7d7: c ␤
pmichaud that looks wrongish.
ng: say 'c'
p6eval ng ecb7d7: c ␤
pmichaud so does that.
colomon is it the trailing space? 18:26
pmichaud yes
jnthn: ...I don't suppose there's a way to get method dispatch to automatically descalarref the invocant.... 18:29
jnthn pmichaud: no
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.
moritz_ pmichaud: remember to re-enable t/spec/S04-statement-modifiers/unless.t if it passes now 18:31
have to run, would do it myself otherwise
pmichaud moritz_: okay, thanks for the reminder
18:32 patspam1 joined
colomon hmmm... did I somehow get knocked off of #perl6? 18:44
jnthn colomon: You appear to still be here. :-) 18:45
18:46 chromatic joined
colomon did a paste come through from me? or is it nopaste that's broken? 18:46
jnthn colomon: Didn't see the paste... 18:47
colomon will try again with gist.
<script src="gist.github.com/236201.js"></script> 18:48
take two: gist.github.com/236201
There we go: the list of things needed to get rat.t fully working again.
jnthn colomon: Cool, thanks! 18:49
colomon I believe that (not counting skipped tests) there are about 748 passing tests in rat.t.
jnthn colomon: I can probably give you some of those.
colomon \\o/ 18:50
I could probably give myself some as well, getting trig running again ought to be doable for a mere mortal, I think.
list assignment would be very groovy... 18:51
jnthn colomon: I think that you mostly need to bring back a lot of Num.pir.
colomon: Let me check a bit.
colomon k
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.
Well, may find anyway... 18:53
I was thinking Str.uc tests and others should work again now...but uc.t fails for another reason 18:54
(since .foo doesn't do $_.foo yet)
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?
jnthn KyleHa: Should now be the same.
KyleHa Awesome.
jnthn colomon: oh 18:55
colomon: Yeah, the problem is with the $r!from-radians
colomon: When pmichaud++ is finished with the dispatch refactors, I'll add private method calls back in. 18:56
colomon oh, I see.
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
colomon ?
jnthn For example
our Num multi method exp() {
my $r = Q:PIR {
$N0 = self
$N1 = exp $N0
%r = box $N1
};
}
Could just become 18:58
our Num multi method exp() {
pir::box__PN(pir::exp__NN(self))
}
pmichaud don't even need the pir::box
pir::exp__NN(self)
jnthn oh.
:-)
pmichaud PAST already knows how to box
(and when) 18:59
colomon oooo, that is sweet
pmichaud and while it doesn't make too much difference in this case, pir::exp__Nn might be slightly better
18:59 cdarroch joined
pmichaud just pushed automatic invocant dereferencing 19:00
colomon what's the difference between n and N?
pmichaud N requires a Parrot num register 19:01
n allows either a num register or a valid num constant
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 { ... }.
I'm generally replacing Q:PIR with pir::op forms when bringing things back into the new setting.
pmichaud +1
colomon Sure. And I think that's a level of translation I could do pretty easily myself. 19:02
jnthn colomon++
pmichaud: How much are you still playing with the method dispatch bits?
pmichaud jnthn: finishing it up now
colomon jnthn: did you do exp just now (or before) or was it just an example?
jnthn pmichaud: I'm getting hungry, so it's shopping time... 19:03
19:03 xenoterracide joined
jnthn pmichaud: When I get back, I'll add privop, hopefully. 19:03
pmichaud: Provided you're done with what you want to do in that area.
colomon: It was just an example
colomon: Untested too. ;-)
colomon jnthn: the best kind
pmichaud jnthn: I'll add privop parsing
jnthn colomon: But it's akin to many of the others I've been doing.
pmichaud anything special needed for the action? 19:04
jnthn pmichaud: You know what to do in the action?
pmichaud: First cut: check that you have a PAST::Op that is a callmethod, and then prepend '!' onto the name.
pmichaud I can do that match.
*much 19:05
you can take it from there
jnthn pmichaud: Cool.
pmichaud (when you get back)
jnthn pmichaud: Doing that first cut will unblock colomon++
Or should.
KyleHa Wow, update_passing_test_data was remarkably silent.
jnthn KyleHa: aww.
KyleHa: Completely silent?
KyleHa jnthn: It had this to say: [S ] ( 4/4 ) t/spec/S16-io/say.t 19:06
So to speak.
jnthn KyleHa: Unfortunately, a lot of the tests I think we could pass fail for reasons other than the thing we're testing.
KyleHa: Oh, we can have say.t back? :-)
Well, one win.
OK, I'm going to the store...hunger strikes!
19:06 desertm4x joined
KyleHa Well, say.t passed some tests, but didn't run all tests. 19:06
jnthn oh 19:07
:-(
ok, bbs
19:10 Jeffrey_ joined
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:11
19:13 rfordinal joined, Jeffrey_ left 19:15 [1]jaffa8 joined 19:16 desertm4x_ joined
KyleHa This bug is fixed now: rt.perl.org/rt3/Ticket/Display.html?id=66714 19:19
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:20
Actually, I think I'll just write this in the ticket. 19:21
pmichaud private method calls added in 0b0c163 (just pushed) 19:27
19:27 lichtkind joined
colomon pmichaud++ 19:28
19:32 jan_ joined, dingdong joined 19:39 kidd joined
arnsholt After the discussion about Set yesterday I've come up with some things I think should be added to the spec 19:42
First of all, set algebra should be there. Union, intersection and difference 19:43
Complement is kind of hard to do though (unless we take Set::Scalar's approach) 19:44
Also, it should be possible to parametrise the type, and how equality of elements is determined should definitely be specced
colomon arnsholt: union, intersection, and difference sound right to me. 19:45
arnsholt Yeah, those are the really important ones
pmichaud even though I once argued in favor of it, I now wonder if Set really deserves to be spec.
arnsholt That's a very good thought as well 19:46
colomon "Method '!to-radians' not found for invocant of class 'Num'" 19:47
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
pmichaud colomon: what's the calling expression? 19:48
colomon pir::sin__Nn(self!to-radians($base)) 19:49
That's in Num.sin
pmichaud looks like private method definition isn't working
14769:.sub "to-radians" :anon :subid("339_1258400908.59046") :outer("285_1258400908.59046")
that should be "!to-radians"
colomon Simple fix? 19:50
pmichaud I don't know.
I'd have to look at the method code.
jnthn back
pmichaud: Yes, it should be !to-radians 19:51
I was sure I'd put that in... :-S
if $<specials> && ~$<specials>[0] eq '!' { $name := '!' ~ $name; } 19:52
$<specials>=[<[ ! ^ ]>?]
hmm
pmichaud don't need the separate test for $<specials>
unless it's quantified somehow
jnthn oh
Yeah 19:53
it always matches, it's the atom inside that's quantified.
duh.
fixing
pmichaud ng: say 3, 4
p6eval ng 0b0c16: 3 4 ␤
pmichaud wrong
jnthn I dunno where these extra spaces are magically coming from. :-| 19:54
ng: say "oh", "hai"
p6eval ng 0b0c16: oh hai ␤
pmichaud it's stringifying the list instead of printing the elements
jnthn oh 19:55
Well that sucks.
I thought I'd fixed slurpies...
ng: sub foo(*@x) { say +@x }; foo(1); foo(1,2,3,4);
p6eval ng 0b0c16: 1 ␤4 ␤
jnthn hm
pmichaud what kind of object is the slurpy? 19:56
probably wants to be a Parcel
it at least needs to be marked as 'flatten'
jnthn It's an Array, and it's slurpy, I thought. 19:57
oh
PerlJam Why would there be a space at the end for a stringified list?
jnthn I wonder if it's getting wrapped up...
pmichaud ng: sub foo(*@x) { say @x.PARROT }; foo(1)
p6eval ng 0b0c16: Array ␤
jnthn PerlJam: It's between the thingy and the "\\n"
pmichaud that Array needs to be marked as flattening
PerlJam but the "\\n" isn't part of the list
pmichaud PerlJam: it is internally
jnthn PerlJam: see impl of say
PerlJam okay. 19:58
pmichaud PerlJam: say is implemented as self.print(@list, "\\n")
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.
pmichaud @x is a readonly container?
lambdabot Maybe you meant: . ? @ v
jnthn I'd expect more to be broken in that case though.
19:59 lisppaste3 joined
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.
@x is normally an Array, straight out
lambdabot Maybe you meant: . ? @ v
jnthn pmichaud: yeah, but... 20:00
sub foo(@bar) { @bar = 1,2,3; }; my @x; foo(@x); # should fail
pmichaud I'm talking about slurpy arrays, primarily
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".
pmichaud: That may be wrong.
20:01 masak joined
pmichaud yes, there is 20:01
jnthn But it's the way it is now.
pmichaud sub foo(*@bar) { ... }; my @x; foo(@x);
note that @bar is not a read-only bind of @x
jnthn No, it's not
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. :-)
My point is that after we've made the slurpy, at the moment we're still ending up then putting it in an ObjectRef.
We probably don't need to do that though.
pmichaud okay
jnthn That may be part of the issue.
pmichaud right, that's what I said. :)
19:59 <pmichaud> I wouldn't think an ObjectRef is needed there, though.
jnthn I am curious though...
ng: my @x = 1,2,3; sub foo(@y) { say (@x, 4, 5).elems }; foo(@x) 20:03
p6eval ng 0b0c16: 5 ␤
jnthn Oh, good, we get that right...
20:03 [synth] joined
pmichaud ng: my @x = 1,2,3; sub foo(@y) { say (@x, 4, 5).elems }; foo(@x) 20:04
p6eval ng 0b0c16: 5 ␤
pmichaud ng: my @x = 1,2,3; sub foo(@y) { say (@y, 4, 5).elems }; foo(@x)
p6eval ng 0b0c16: 3 ␤
pmichaud no we don't.
in that case @y needs to be an ObjectRef, and it needs to be marked 'flatten'
20:05 szabgab joined
pmichaud (it's marked 'flatten' by virtue of its sigil) 20:05
note that this *is* correct, however
ng: my @x = 1,2,3; sub foo($y) { say ($y, 4, 5).elems }; foo(@x)
p6eval ng 0b0c16: 3 ␤
jnthn Right
pmichaud: Yeah, my test was bull. Damm. :-(
pmichaud: So we do that that wrong.
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
jnthn Right. The binder is probably behind there.
pmichaud anyway, I'm failing tests in 05-var.t because of the say/print errors.
jnthn masak: Hey, the preconference meeting at the BPW is designed for insomniacs!
20:06 kst joined
masak jnthn: :) 20:06
jnthn "they are open untill 01:00" 20:07
:-)
masak heh, lightweights. :)
jnthn lol
pmichaud: That's...really odd. It passes here. 20:08
pmichaud checking.
masak jnthn: how goes the slidescrafting? I've started digging into mine in earnest.
pmichaud okay, whatever is causing my failure, that's not it
but we are getting
ok 4 20:09
ok 5
ok 6
(extra spaces in the output)
jnthn yeah
maybe our harnesses care different amounts about whitespace.
masak wonders what the TAP standard says about whitespace
jnthn colomon: fixed for privates pushed 20:10
colomon \\o/
jnthn masak: I got lots done on my .pm group one last night.
masak jnthn: nice.
jnthn And tweaked one or two slides in my main BPW one.
masak: I want to put a little extra Perl 6 context into the start of that talk though. 20:11
masak: Just to set the stage.
masak oh?
sounds interesting.
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.
masak ah. yes.
jnthn masak: Though it probably needs a little...reframing... :-)
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? :)
colomon \\o/ -- working Num.sin!
sin(Num) blows up horribly, on the other hand.
Null PMC access in find_method('new') 20:14
masak food &
jnthn PerlJam: :-P
PerlJam: It wasn't me who broke it! :-P
I just egged pmichaud++ on. :-)
PerlJam heh
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! ;)
pmichaud My +2 sword of refactoring turned into a -1 sledgehammer of breakage :)
on the other hand, from the pieces we now have lazy lists! :) 20:16
and dynamic metaops!
colomon lazy! dynamic! 20:17
pmichaud shiny! new! improved! 20:18
moritz_ enterprise ready
PerlJam wonders if he should start a betting pool on when ng will be merged.
pmichaud if you wish to blow up the entrerprise, then sure! 20:19
*enterprise
colomon so we're some sort of Romulans or Klingons, then?
pmichaud PerlJam: do I get to bed?
*bet?
pmichaud is pretty sure he could win the pool.
jnthn PerlJam: Hey, I like that phrasing. ;-)
pmichaud colomon: (romulans / klingons) we already have "phasers!" 20:20
colomon: I guess we really need disruptors somewhere.
pmichaud is reminded to head to the store at 00h01 tonight to pick up a present for his wife. :-)
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? ;)
PacoLinux Slack_is_Hot: si tienes alguna pega con perl, larry esta en #perl6 de freenode con el nick TimToady 20:21
sorry, wrong #
pmichaud PerlJam: I think I could probably get within an hour of being correct, yes. :)
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.
;-)
pmichaud jnthn: :-)
PerlJam heh 20:22
jnthn noms his dinner
PerlJam btw, someone emailed me that they couldn't get to rakudo.org (specifically, 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?!
mdxi PerlJam: i can see it fine from Atlanta 20:24
colomon ah, just needed to perl Configure.pl again. 20:25
PerlJam This person appears to be in Boulder CO
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:27
(When you get the chance, no rush, of course.) 20:28
takadonet PerlJam: Works from Winnipeg 20:29
moritz_ works from Germany too
pmichaud ....why do we have both multi sub declarations and protos, ooc?
moritz_ historical reasons 20:30
the multis came first
PerlJam pmichaud: redundancy doesn't hurt does it?
moritz_ and when the new dispatch was able to bind positional by names, we needed the protos
colomon you mean why are they in the language, or why are they in the trig code?
pmichaud why are they in the trig code
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.
*two
colomon I was told to do it that way, honest.
pmichaud colomon: I believe you -- I'm just asking for the reason. :)
colomon I was told the proto was required to make the multi work. 20:32
Give me a minute and I'll search the IRC logs for it....
pmichaud I don't think that should be the case.
moritz_ pmichaud: it should
pmichaud: at least the "call positionals by name" part of it
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
moritz_ jnthn++ explained differently
colomon Note the comment # jnthn says that we should have both the multi sub declaration and the proto.
pmichaud colomon: I saw the comment, yes
my question was for jnthn++ as much as anything else :)
colomon :)
lichtkind pmichaud: or should i send email? 20:34
colomon I checked that in 10/19/2009, so...
pmichaud lichtkind: you can ask here if you want
moritz_ irclog.perlgeek.de/perl6/2009-10-28#i_1657656
but that's nto much more than what I said before 20:35
t/spec/S02-names_and_variables/contextual.t might be a LHF
pmichaud I don't understand "multi dispatch doesn't account for named arguments", then
PerlJam finds it an odd coincidence that both his and his daughter's birthdays were mentioned within seconds of each other just now
moritz_ it fails only the last test
sub foo() { $*VAR }; 20:36
colomon irclog.perlgeek.de/perl6/2009-10-19#i_1618686
moritz_ ok !foo().defined, 'contextual $*VAR is undef';
Method 'defined' not found for invocant of class 'Undef'
pmichaud I need to get a good handle on what "undef" really means in Perl 6 these days
right now it's because the !FAIL internal method just returns a Parrot undef argument
er, Parrot Undef PMC
lichtkind pmichaud: i did :) 20:37
but thanks
moritz_ pmichaud: that's a Perl 6 limitations - named parameters don't participate in multi dispatch, except as constraints
lichtkind pmichaud: its mainly about the protoregexes for now
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
lichtkind pmichaud: more detailed why there where so important and if there where other similiar showstopper
moritz_ why they are important: see perlgeek.de/en/article/mutable-gram...for-perl-6
pmichaud lichtkind: that's likely to be my grant report, which I expect to write tonight.
lichtkind pmichaud: great so no more harassments from me 20:39
pmichaud: hows it going with rokudo * would also interest me
pmichaud lichtkind: part of that will be in the report also, but see also my latest use.perl post from last week 20:40
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?
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
pmichaud I'm having trouble understanding that statement as well. :-( 20:42
multi sub ($a, $b) { ... } looks positional to me already
TimToady it would rewrite the *calls* 20:43
pmichaud oh, that's what you meant by aggressive inlining
TimToady er
colomon (Having reread) I thought proto provided a landing point for non-positional calls?
TimToady doesn't have to inline
just has to turn foo(:a(1), :b(2)) into foo(1,2) 20:44
I suppose it can do that at run-time, at some price in overhead 20:45
pmichaud what we have now in Rakudo:
TimToady but I was thinking of it as compile-time rewrite
pmichaud our multi sub sin($x, $base = 'radians') { $x.sin($base)
}
our proto sin($x, $base = 'radians') { sin($x, $base)
}
jnthn back
oh no, not this discussion again!
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
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 :)
jnthn backlogs in case there's anything new...
No, I think not. 20:47
pmichaud: The issue is that the mapping of nameds to positionals is handled by the binder.
pmichaud jnthn: I understand that.
jnthn pmichaud: The multi-dispathcer only considers positional arguments.
TimToady I do worry that it won't be the correct semantics unless we always dispatch to the proto first on named args
pmichaud jnthn: I understand that (now)
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
pmichaud jnthn: i.e., that every multi sub ends up requiring a proto definition as well.
TimToady and simply ignoring the nameds will cause it potentially to pick the wrong multi
pmichaud TimToady: yes, I'm seeing that (bad) possibility also
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
pmichaud TimToady: I'm not sure how it would know exactly what to generate, but okay. :-|
TimToady if we rely on proto redispatch, then we could perhaps always dispatch there first on any names args
jnthn TimToady: Yes, but...nobody has ever spec'd that. 20:50
TimToady nobody is a good friend of mine :)
jnthn To me it's like, "Pugs did this magical thing...somehow" :-)
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"
jnthn BTW 20:51
The proto is *also* the fallback.
If nothing else matches.
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...
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:52
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
I'm far from convinced the answer is yes.
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'
I can see a lot of people getting bit by that. 20:54
i.e., they'll have an only sub that they convert to a multi and -poof- lots of breakage.
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.
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)
jnthn: yes, that too.
moritz_ well, we have to educate our users at some point ;-)
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.
jnthn pmichaud: And that's marked as "not for 6.0.0" at the moment.
Well, yes, or that.
Well, if you don't write a proto and your sub is multi, you just did. ;-) 20:57
moritz_ :?$thing # either positional or named :-)
jnthn On the trig ones, I really, really don't see the use case for having them callable by name though.
moritz_ $thing # just positional
pmichaud ...maybe filling positionals by name occurs *only* if you provide a proto?
moritz_ :$thing # just named
pmichaud: and an only sub is its own proto
jnthn Seriously, who wants to call sin($foo) as sin(:x($foo)) ?
moritz_ and we're at status quo
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.
jnthn colomon: I can see the benefit there, yes.
moritz_ jnthn: it's a bit contrived for an unary function, but for multiple args it's different
colomon So you don't have to remember the arguments are order y, x...
jnthn For cases where it makes sense != all the time, though...
moritz_: Yeah, but many of the trig ones are unary, no?
moritz_ substr(:from(3), :len(6), :replace<foo>)
jnthn: the trigs yes
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?")
jnthn pmichaud: True.
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.
It's a lot better to write one proto for all of your multi-candidates
colomon our proto sin($x, $base = 'radians') { sin($x, $base) }
pmichaud colomon: that would be along the lines of "automatically generated proto"
colomon versus
our proto sin($x, $base = 'radians');
jnthn Than it would be to go and write all the extra multi-variatns.
To provide the same interface. 21:01
pmichaud: Auto-generating a proto may in some cases be quite do-able...it's just spec'ing the algorithm and when it applies.
(And it's a lot easier than making the multi-dispatcher aware of named args...) 21:02
I'm quite open to looking in to that option.
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?
TimToady we do, I think, have to detangle proto from default though
pmichaud although that argues for letting the compiler do the analysis at compile time
PerlJam TimToady: +1
[particle] every time a developer says 'just', a monkey writing perfectly good shakespeare makes a typo 21:04
moritz_ writing a default is easy 21:05
jnthn TimToady: 'is default' and proto already have different semantics.
moritz_ multi foo(*@, *%) { ... }
jnthn Well, there's that way too. :-)
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
moritz_ jnthn: s/default/fallback/ for you then
TimToady or nextsame, which might fail
PerlJam moritz_: maybe that could be shortened to just (oops!) multi foo (*) { ... } :-)
moritz_ pats the poor monkey
PerlJam: nope, that one is already taken
TimToady well, it wouldn't exactly be nextsame
moritz_ it's short for (Any $ where *) 21:07
TimToady next-with-nameds-remapped-to-positional
PerlJam moritz_: add more * to suit then :)
pmichaud the real question is knowing how to remap names to positionals, though.
jnthn TimToady: Since we already would have exhausted the candidates to reach the proto, that won't work really (unless we special case it).
moritz_ :-)
jnthn pmichaud: Well, if you just re-dispatch post-bind, it works... 21:08
(That's why/how it works today.)
TimToady jnthn: in this model you always call the proto first as if it were an only
pmichaud jnthn: one would need the explicit proto still, though?
TimToady and the proto does the actual multidispatch
jnthn TimToady: Oh, you're proposing we always call the proto?
TimToady: That's going to be nasty. 21:09
TimToady in the abstract
moritz_ and it sounds more expensive
jnthn TimToady: Then the multi-dispatcher is going to have to look at its caller.
TimToady: And say "was it the proto? was it the proto for this sub?"
That's going to be fragile.
TimToady the candidate list doesn't contain the proto
jnthn You've missed the point. 21:10
21:10 abbe joined
jnthn If the proto calls the multi-dispatcher... 21:10
...then it's gotta know that we're calling from the proto.
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...
jnthn And that it should look at the candidate list.
TimToady it doesn't have to call the multi-dispatcher the same way it was called
PerlJam jnthn: why does it need to know we're calling from the proto?
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
pmichaud colomon: more generally that I hadn't seen any of the earlier discussions about why proto was needed
colomon: and this is the first time I've really looked at Num.pm since the protos were added
colomon: anyway, the sin(1e0) problem appears to be that get_hll_global 'Signature' is returning PMCNULL 21:12
21:12 lichtkind joined
diakopter 's head spins off 21:12
jnthn TimToady: Hmm...
pmichaud and the 'new' that fails is a call to 'new' on the (null) Signature type object
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...
jnthn TimToady: So we introduce some specail way of saying "run the dispatch algorithm on these args"?
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
jnthn PerlJam: The dispatcher is aware of the subroutines that it could call, not just their signatures. 21:14
pmichaud gist.github.com/236316 # trace of "say sin(1e0)" in ng
KyleHa moritz_: Then I'd be pretty lucky if the half I'm paying attention to is any of the spec.
pmichaud line #189 is where the problem arises
jnthn pmichaud: I know what that'll be. 21:15
pmichaud jnthn: figured you would :)
jnthn pmichaud: Well, I guess maybe two problems.
pmichaud goes back to fixing 'return'
diakopter 's head spins back on
jnthn pmichaud: The first is that it's actually looking to call Signature.perl
pmichaud: Because it wants to display the signatures of the things it failed to dispatch to. 21:16
pmichaud heh
so, LTA error message then :)
jnthn pmichaud: The reason the dispatch failed is I suspect an issue with protos. :-)
Well, NYI error message. ;-)
NY*R*I error message. ;-)
pmichaud NYI is often LTA if it doesn't let us know that the problem is NYI :-)
colomon jnthn: protos seem likely to be the blame, as removing the proto makes sin(1e0) work...
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.
Well
"we" :-)
jnthn goes to take a look
TimToady we might be able to unify the concepts of &foo and proto foo 21:20
jnthn TimToady: Not quite sure I follow... 21:21
&foo = reference to the thing we get when we call foo(), no?
TimToady if &foo is supposed to represent the current candidate list anyway 21:22
jnthn Well, only sort of ish.
TimToady and if proto is effectively doing the same
jnthn foo() really goes looking for &foo and then invokes it.
TimToady yes, and maybe that's always the proto 21:23
where proto == only
jnthn To me, &foo() === foo()
Which is 1) lookup the symbol. 2) invoke.
21:23 masak joined
TimToady a proto just knows how to call the secret multi dispatcher on its list of candidates 21:23
and it doesn't do so by saying foo() 21:24
but by saying, implicitly or explicitly, nextsame or some such
masak rakudo: class A { has $.foo = 42 }; say A.new.foo
TimToady or something dedicated to multi dispatch 21:25
p6eval rakudo 7347ec: ( no output )
masak rakudo: class A { has $.foo = 42; submethod BUILD() {} }; say A.new.foo
jnthn TimToady: But then we'd make every single mult-dispatch a re-dispatch, vis the proto.
p6eval rakudo 7347ec: ( no output )
TimToady which is why it's an abstraction
jnthn *via
masak locally, the former says '42' and the latter says 'Use of uninitialized value'.
jnthn masak: Yes, known. 21:26
TimToady (read, agressively inlined)
masak jnthn: thought so. just checking.
jnthn TimToady: Yes, but the current situation = performs fine before somebody goes and writes an optimizer.
TimToady until someone uses named args
PerlJam TimToady: would that change the results of $obj.*meth() ?
TimToady n
PerlJam or $obj.?meth()
TimToady no
jnthn TimToady: Yes, but that isn't the common case. 21:27
1 + 2 which maps to &infix:<+> is the common case.
PerlJam so the mention of a proto means that there's always going to be an extra, "hidden" dispatch ?
TimToady which basically means you've already got the optimized code path written 21:28
you "just" have to pessimize it if there are named args
jnthn TimToady: Not if you're proposing we have to care about a proto up front.
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"
TimToady maybe you only have to care if there's a named arg
that would depend on how much we enforce via the proto signature 21:29
if it's just positional names, then yes
jnthn Well, that gets us back to current situation, apart from we call the proto right off if there's named args.
TimToady we can ignore the proto in the absence of nameds
which was one of my suggestions above :) 21:30
jnthn Rather than looking down the candidate list first.
Yes but if you do that, you can't also do auto-generation of a proto, probably.
Otherwise you'll break the mechanism that trait dispatchers hang off (which is required named args).
TimToady why not, if their positionals are consistently named?
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 :)
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
PerlJam jnthn: wait ... the calls break? Surely that's compile-time detectable?
pmichaud afk, kid pickup
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
jnthn Is it an error to write proto foo($a, $b) { } and then multi foo($a, $b, $c) { }
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.
TimToady jnthn: probably, since one could write *@ to allow more positionals
jnthn Wouldn't that also be an error? Or? 21:35
TimToady a *@ in the proto sig
jnthn Oh, OK.
That still means we need to define sig acceptability. 21:36
colomon that still strikes me as very anti-social to the sub namespace.
PerlJam so the proto *must* have *@ or *% to allow more positionals or named in the multis?
TimToady well, with the call-proto-first model, it's simply binding first to the proto's sig
and it seems a very straightforward semantics in that case 21:37
jnthn TimToady: Well not really.
TimToady it binds as an only
jnthn foo(1,2) will bind to proto foo($a, $b) {...} just as well as proto foo($x, $y) { ... }
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".
TimToady well, maybe the names of $a and $b don't matter at that point
er, $x and $y, I mean 21:39
that is, multis wouldn't care what names the positionals use once they're remapped
that's almost a feature 21:40
well, and you can't have multiple protos in the same scope
it's like only that way 21:41
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.
TimToady in fact, I should probably crawl back into bed now...
jnthn TimToady: Aye. Get well soon! 21:43
pmichaud jnthn: fixing proto in ng might be a priority. 21:44
I seem to be unable to implement a proper 'return'
jnthn pmichaud: I pretty much have a fix...
pmichaud: Oh?
pmichaud unless I take out the stuff that colomon++ has been putting in
(no, I don't completely understand why that would be the case.)
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.
I can skip the 'return' implementation for a bit -- and have another kid pickup in 10 21:46
(fixing 'return' will likely win us a fair number of spectests, though) 21:47
masak \\o/
moritz_ predicts that eval() will give us more
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.
masak as long as we're aiming for at least the same amount of passing tests as before, I'm fine. :)
pmichaud we are.
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?
pmichaud I have no idea. I suspect less than 10%
moritz_ <1%
masak ah, ok.
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. :)
moritz_ eval, return, regexes, num stuff
pmichaud masak: that'd be my guess, yes.
masak oh well.
at least that'll make the release easy. :) 21:51
moritz_ rakudo: say 100 * 162 / 32614
p6eval rakudo 7347ec: 0.496719200343411␤
moritz_ <0.5% even
pmichaud ng: say 100 * 162 / 32614
p6eval ng a127e9: 0.496719200343411 ␤
pmichaud at least they agree :-)
afk, another kid pickup 21:52
colomon ng: say (100 * 162 / 32614).perl; 21:54
p6eval ng a127e9: 8100/16307 ␤
colomon \\o/ 21:55
jnthn back 21:56
(well, wasn't away, but was distracted)
masak: I think you'll be releasing master unmerged, yes.
But man will the December release be full of goodies. 21:57
Appropraite really. ;-)
masak heh :)
jnthn masak: At least the changelog will be easy too. 21:58
oh gah...my cuppa tea...
jnthn hopes it's still vaguely warm...
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
and I have a presentation to procrastinate.
jnthn Yeah! Get procrastinating!
masak I had a good procrastination session earlier today. 22:00
will probably have one before I fall asleep, too.
jnthn ng: say ?42
p6eval ng a127e9: 1 ␤
masak what's that extra space doing there? 22:01
jnthn bug
masak yes, but how?
jnthn Incredible cunning.
masak: Actually, just a bug in slurpies. 22:02
Tene I prefer to believe the first answer. 22:04
masak me too.
Tene btw, hi masak 22:05
masak OH HAI TENE
Tene Today is my first day back at work after two weeks out sick.
It's... kinda weird.
masak welcome back.
Tene All these STUDENTS keep asking me QUESTIONS. It's pretty lame. What are they even doing here? 22:06
masak :)
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"]
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.
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.
jnthn masak: I wish I'd seen it so quick. ;-)
Tene I'm not hopeful, though. SO TIRED. I might just nap instead.
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. :-)
masak Tene: I'd rather you took a look at Squerl and mysql :)
Tene: but no pressure. take your time.
jnthn hehe
Tene masak: I thought that mysql worked fine...
jnthn Yeah Tene, write some code! :-)
masak Tene: I won't have time to get back to Wbe.pm in a week anyway.
Tene: I'm sure mysql works fine, but it needs to get woven into Squerl.
jnthn colomon: fixed proto.
masak Tene: probably not a big commit. 22:09
jnthn colomon: make testing.
Tene Ah.
Okay, I can do that.
Maybe.
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.
SO DEMANDING
masak it should be pretty obvious where things fit in. unless I cheated.
Tene afk
masak :)
moritz_ who's doing the book release on Friday? 22:11
jnthn colomon: pushed 22:13
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
jnthn masak: You planning to procrastinate some on the Friday? :-) 22:16
masak jnthn: experience tells me I will, plan or not. 22:17
jnthn ;-)
masak I'll probably be enjoying Riga the most on the Sunday...
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. ;-)
masak I'll keep that in mind. 22:18
jnthn Of course, weather forecasts are all lies anyway. :-)
masak propaganda.
pmichaud "Christmas."
.oO( wonder if we could get Rakudo Star's critical tasks knocked off by Dec 25)
22:19
jnthn What'll be left after merging ng? 22:20
dalek ok: 3a6390a | moritz++ | docs/release-guide.pod:
[release] masak++ volunteered for the Christmas release
arnsholt I just had a similar idea. A special edition Rakudo release for christmas =)
jnthn Non-crappy repl?
pmichaud oh, I think repl will be done well before then.
masak moritz_: :)
pmichaud if I do eval tonight/tomorrow, repl may well follow.
jnthn say "a", "b" 22:21
ng: say "a", "b"
p6eval ng 0c9d94: a b ␤
jnthn ab here
so I guess fixed
pmichaud: ohbtw proto fixed too
masak pmichaud++ # here's some advance karma for the REPL.
jnthn pmichaud: You're wanting to do eval in a way other than just bringing back the one we already have?
pmichaud yes.
jnthn OK. I won't bring back our existing one then.
moritz_ ng: say 'a', 'b' 22:22
p6eval ng 0c9d94: a b ␤
jnthn fail :-)
pmichaud I want a more generic way for HLL compilers to compile inside of a lexical scope
(which includes Rakudo)
that's needed in order to do REPL, too.
jnthn OK.
Yeah, it's just a case of whether you want to do it within ng or not. :-)
I noticed we have "more input" support suggested in STD too. 22:23
That could be cool.
sub foo() {
moritz_ jnthn: didn't you know, this is the "fix everything" branch :-)
pmichaud yes
oh, fix repl is definitely in ng branch
jnthn and then it prompts for more, not whines.
:-)
Ah, OK
I hadn't realized that was in too. ;-)
jnthn doesn't feel so bad about doing "fix metamodel" in ng branch too now. :-)
pmichaud oh, I suppose it could wait until after rename to 'master' 22:24
but I think getting repl/eval right is worthwhile
jnthn Oh, for sure.
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.
pmichaud well, I don't like the way eval pokes PAST::Block structures into the @?BLOCK array 22:25
I'm thinking that outer scope should be a contextual
jnthn Yeah, that's the main evil.
pmichaud actually, I've been thinking that @BLOCK should be done with contextuals, too. 22:26
jnthn It'd make reentrancy easier.
OK, I fixed protos, I fixed flattening...what now? :-)
pmichaud ....beer? 22:27
got your presentation ready for this weekend?
maybe .*, .?, and friends?
jnthn :-)
oh!
I wanted to do .foo
pmichaud oh yes, that would be very useful 22:28
jnthn (as in, calls on $_)
pmichaud right
go for that
jnthn We were exploding early into a few tests on that.
jnthn checks STD
oh, beautiful.
token term:dotty { <dotty> }
:-D
.oO( compilers are SO easier than websites )
pmichaud lol 22:29
"trivial"
Juerd Websites would be easier if you got better specs to develop them to.
jnthn Juerd: Right. That's my main whine about them. :-) 22:30
Well, it's not.
Fighting the browsers is.
So it's not so much better specs, so much as specs that were implemented. :-)
Juerd Oh, right, I forgot. 22:32
Browsers suck. That is: IE really sucks.
jnthn Yes, it does tend to be the stand out sucker.
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
arnsholt It's a bit like writing code that should compile to the same executable, on multiple compilers
jnthn woo. .foo done like already. 22:36
colomon jnthn++ # for fixing proto while I was fixing dinner.
pmichaud looks like winter is coming early here this year. Today's high: 10degC
jnthn Ooh, nice!
lichtkind moritz_: i understand a bit the proto regex now but why was it so important to PGE? 22:37
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
lichtkind rakudo tries to use STD.p?
moritz_ and we try to stay as close to STD.pm as possible
lichtkind since when?
22:38 simcop2387 joined
pmichaud rakudo has always tried to follow STD.pm where it can 22:38
the lack of protoregexes meant that wasn't really possible in some ways 22:39
in some ways, Rakudo is blazing new paths for STD.pm, too
(STD.pm has been adopting some of Rakudo's grammar features :)
lichtkind when came prots into the synopses?
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") ?
lichtkind pmichaud: thanks
jnthn pmichaud: If so, something is broken. :-/
pmichaud jnthn: yes, we should be able to do that, if uc() is defined in Any
colomon "should" as in "That's the ideal", or "should" as in "that works now in ng"? 22:41
jnthn colomon: the latter
pmichaud: ok, hm
pmichaud afaik it's been at least somewhat working in ng
jnthn pmichaud: and yes, it's in Any-str.pm
ng: say "oh hai".uc
p6eval ng 0c9d94: OH HAI ␤
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)␤
jnthn ng: say uc("that tree over there")
p6eval ng 0c9d94: Could not find non-existent sub &uc␤current instr.: '_block14' pc 29 (EVAL_1:0)␤
jnthn aww, fail
pmichaud oh
jnthn oh plz say this won't be the omg-wrong-multi bug...
pmichaud it's possible that it's not being exported correctly
lichtkind moritz_: thank you too
pmichaud no, wrong multi wouldn't say "non-existent sub"
plus, they are in different namespaces
jnthn True. 22:43
no, I meant wrong multi when we call trait_mod
pmichaud building, looking.
shouldn't be that, because those are looked up by subid
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.
pmichaud: it's a multi sub.
pmichaud oh
that's possible.
jnthn pmichaud: checking it's not that, before I dig further.
22:44 Exodist joined
jnthn # export called on uc 22:44
so no, it's not that.
colomon ng: say exp(10) 22:45
p6eval ng af269f: 0␤
colomon ??
gonna implement properly now (I hope), but that's weird...
jnthn pmichaud: it's detecting it's a method properly and adding the & too. 22:46
pmichaud but it's exporting into Any's namespace, I bet. 22:47
actually, Any::EXPORT::DEFAULT
which is fine, but I'm not sure we do an import into global yet.
jnthn oh
so the export is fine, but we're nyi
(not yet importing ;-))
pmichaud right 22:48
dalek vember: da4db36 | masak++ | skins/CleanAndSoft/ (2 files):
[skins] fixed github issues #20 and #21
vember: 8166dbd | masak++ | lib/November.pm:
[November] made error page message clearer
masak ooh, that's nice.
KyleHa S16-io/say.t passes now. I updated spectest.data
masak blog post should turn up soon as well.
jnthn KyleHa: Yay! Thanks :-) 22:49
KyleHa My pleasure. 8-)
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
so, good.
jnthn pmichaud: Right, but it's use decomposed into two things now?
(by spec)
pmichaud yeah, it'll be 'need' and 'import'
jnthn Right. So I could in the cheat make use call each of those for now. 22:52
And then can use import alone to bring in things from the setting?
erm, from CORE that is. :-)
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.
It can all still stay as a cheat.
pmichaud I prefer not to do that.
jnthn OK, what do you prefer?
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...)
pmichaud this is one area where the cheats last time ended up being difficult to dislodge
jnthn erm, uc.t
pmichaud so I'd rather not head down that path again.
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.
(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
jnthn Well, yeah, doing it right is a lot of effort.
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.
jnthn So we can construct an appropriate lexical scope.
pmichaud I agree it has to be done sooner rather than later.
jnthn So yes, a full solution is hard.
:-)
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.
jnthn Oh. 22:58
*that* was the bit I thought was the cheat you'd be worried about.
pmichaud nope.
jnthn (Because it's the one that worries me more...)
pmichaud the way import is done in master is just generally wrongish in several ways
I can get a good import cheat done relatively quickly 22:59
jnthn OK.
pmichaud I'd rather not have to back out the bad cheats from master
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:00
23:01 ascent joined
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)␤
jnthn ng: <a b c>
p6eval ng af269f: ( no output )
jnthn ng: <a b c>.[4]
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)␤
jnthn ng: <a b c>[4]
p6eval ng af269f: ( no output ) 23:08
jnthn ng: <a b c>[4/3]
p6eval ng af269f: No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'␤current instr.: '!postcircumfix:<[ ]>' pc 193578 (src/gen/core.pir:19564)␤
pmichaud postcircumfix:<[ ]> only works on single ints at the moment
we could see about filling out the positional role again
jnthn pmichaud: Also, .[4] doesn't parse yet, which is the first issue in the issue in colomon++'s gist. 23:09
But yes, after fixing the parse issue we'd need to do that.
pmichaud oh, getting that to parse would be worthwhile, too.
I think I fixed masak's [] and () issues last night
ng: say [[], [[]], []].elems 23:10
p6eval ng af269f: 3␤
pmichaud ng: say [[], [[]], []].perl
p6eval ng af269f: get_iter() not implemented in class 'Undef'␤current instr.: 'perl6;Any;map' pc 169948 (src/gen/core.pir:10930)␤
pmichaud ng: say [[], [[]], []].WHAT
p6eval ng af269f: Array()␤
pmichaud hmmm
something's wrong there
ng: say ((), (()), ()).WHAT
p6eval ng af269f: List()␤
pmichaud ng: say ((), (()), ()).perl
p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
pmichaud and there too.
jnthn yeah.
pmichaud say ().perl
ng: say ().perl 23:11
p6eval ng af269f: ()␤
pmichaud ng: say (1, (), 2).perl
p6eval ng af269f: (1, 2)␤
23:11 ng_feed joined
pmichaud ng: say (()).perl 23:11
p6eval ng af269f: ()␤
ng_feed rakudo-ng: (Solomon Foster)++
rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
rakudo-ng: (Solomon Foster)++
jnthn colomon: Got a fix for the Rat.new issue too. :-)
ng_feed rakudo-ng: Add Num.exp (which makes Any.exp and exp(Any) work as well).
rakudo-ng: (Kyle Hasselbacher)++
rakudo-ng: S16-io/say.t passes now
rakudo-ng: (Jonathan Worthington)++
pmichaud ng: say ((),()).perl
p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
ng_feed rakudo-ng: Implement term:dotty.
rakudo-ng: (Jonathan Worthington)++
rakudo-ng: Fix parameter flattening.
rakudo-ng: (Jonathan Worthington)++
23:11 payload joined
ng_feed rakudo-ng: Fix proto. 23:11
moritz_ ng_feed is now going to report a few old commits
ng_feed rakudo-ng: (Solomon Foster)++
rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
rakudo-ng: (Solomon Foster)++
moritz_ hope it works then :-)
ng_feed rakudo-ng: Make Any!to-radians work for radians again. Add Num.sin.
rakudo-ng: (pmichaud)++
rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
rakudo-ng: (pmichaud)++ 23:12
rakudo-ng: Terminate listop argument lists on <?stdstopper>.
colomon jnthn++ # \\o./
jnthn moritz_: I've got another commit coming after tests.
ng_feed rakudo-ng: (Solomon Foster)++
rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
rakudo-ng: (Solomon Foster)++
rakudo-ng: Add Num.exp (which makes Any.exp and exp(Any) work as well).
rakudo-ng: (Kyle Hasselbacher)++
rakudo-ng: S16-io/say.t passes now
rakudo-ng: (Jonathan Worthington)++
rakudo-ng: Implement term:dotty.
rakudo-ng: (Jonathan Worthington)++
rakudo-ng: Fix parameter flattening.
rakudo-ng: (Jonathan Worthington)++
rakudo-ng: Fix proto.
rakudo-ng: (Solomon Foster)++
rakudo-ng: Merge branch 'ng' of git@github.com:rakudo/rakudo into ng
moritz_ ouch
ng_feed rakudo-ng: (Solomon Foster)++
moritz_ it repated itself endlessly. sigh. 23:13
pmichaud ng: say ((), ).perl
p6eval ng af269f: (())␤
jnthn karma win!
pmichaud ouch, that's wrong.
ng: say ((), ()).perl
p6eval ng af269f: Method 'perl' not found for invocant of class 'Undef'␤current instr.: 'perl6;Any;_block1442' pc 169667 (src/gen/core.pir:10814)␤
pmichaud I wonder where it's getting the Undef from.
jnthn pmichaud: Not sure. :-|
pmichaud ng: say ((),3).perl 23:14
p6eval ng af269f: sh: ./perl6: No such file or directory␤
pmichaud ng: say ((),3).perl
p6eval ng af269f: sh: ./perl6: No such file or directory␤
jnthn colomon: ah, I seeem to have got a test fail...
pmichaud oops, rebuild.
23:14 ng_feed joined
moritz_ next try with ng_feed 23:15
pmichaud jnthn: oh, I still see C compiler warnings during make, fwiw 23:16
(if you're looking for things to do :-)
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...
moritz_ colomon: yes, I commented out a crucial line that skipped already seen tries
23:31 Whiteknight joined 23:32 ihrd joined, ihrd left
masak 'night, #perl6. 23:35
moritz_ 'night masak 23:36
23:38 JeffreyKegler joined
jnthn pmichaud: Probably going to stop here today. Ran into some oddness... 23:39
pmichaud: ...probably just needs me more awake to debug though.
23:48 Whiteknight joined
pmichaud jnthn: that sounds fine 23:49
diakopter ng: say ((),3).perl
p6eval ng 6528b7: (3)␤
pmichaud things are likely to be a bit crazy around here as well.
at least for a few hours
arnsholt The SVN browser on perlcabal.org seems to be broken 23:50
I get error 500s
diakopter :(
diakopter set that up
www.perlcabal.org/svn/pugs/revision works
moritz_ perlcabal.org/svn/pugs/revision/?rev=29101 seems to work
arnsholt Indeed it does
diakopter it does die on some diffs 23:51
arnsholt What about perlcabal.org/svn/pugs/browse/t/spec for you guys?
diakopter Infinoid & I spent quite some times trying to diagnose
hm, weird
I've never seen /browse break
moritz_ PATH: /t/spec 23:52
rpath returning 't/spec' at /usr/share/perl5/SVN/Web/action.pm line 381.
[Tue Nov 17 00:52:48 2009] [error] [client 87.176.79.181] plugin error - Number.Format: plugin not found
jnthn pmichaud: End of week/weekend will be a tad disrupted due to BPW. 23:53
23:57 hercynium joined
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. :-)
moritz_ it would be nice if one of you could fix some tests in master before the release though :-) 23:59
bed &