Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-02-03

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:07 aindilis joined #perl6
00:18 mtnviewmark @TimToady -- well, the part about &<op>, was expected, but not the part about [op] not being meta...
00:18 lambdabot Unknown command, try @list
00:19 mtnviewmark it seems like one to many concepts to introduce just to have [] as a set of operator quotes....
00:19 mtnviewmark in otherwords....
00:20 mtnviewmark we want &[op] so we can say   sort &[op] ....
00:20 mtnviewmark and we want [op] to work  in [op] 1,2,3
00:21 mtnviewmark then it feels very meta, like Xop, in the second case.... to say that infix ops (so named with []) used prefix will do reduction...?
00:21 mtnviewmark why not instead rename [op] meta to something like |op
00:21 pugs_svn r25177 | lwall++ | [Cursor] delete old post-TRE but pre-trie LTM
00:21 mtnviewmark then you get |op and |\op
00:21 mtnviewmark as the reduce forms
00:22 mtnviewmark and leave [op] for the "I wanna talk about an operator with all that extra stuff"
00:22 jfredett joined #perl6
00:23 TimToady it's still a meta in that position really
00:23 TimToady and everyone likes the [op] reduction visually
00:23 TimToady and | already means something else in temr positoin
00:23 TimToady *term
00:24 TimToady *position, for that matter
00:24 mtnviewmark okay - I thought that you meant [op] wouldn't be considred meta any more
00:24 mtnviewmark which, made me sad....
00:25 TimToady I don't mind having it both ways :)
00:25 TimToady I was more just claiming you could think of it that way, without loss of generality
00:26 TimToady at a bare psychological level, [op] just means here's an infix op that would be misinterpreted otherwise
00:27 TimToady but the non-meta theory doesn't actually explain [\op]  :)
00:28 * justatheory is happy to be meta theory
00:28 TimToady which was my point earlier about trying to figure out what $a [\op] $b would mean  :)
00:28 TimToady Anything you can do, I can do meta!  I can do anything meta than you!  --Annie Oakley
00:30 * justatheory does his meta with class!
00:30 TimToady is that legal?
00:31 hercynium joined #perl6
00:31 justatheory I hope not.
00:37 mtnviewmark See - this is the odd thing: if    $a + $b    and    $a [+] $b are the same, becuase [+] is just another name for infix:<+>
00:37 mtnviewmark then it seems that if    [+] 1,2,3   should work
00:37 mtnviewmark that     +  1,2,3   should too
00:37 mtnviewmark only in this case they are different things
00:38 mtnviewmark the fact that you are no trying to figure out what   $a  [\+] $b    could mean, only further reenforces the similarity, which isn't there
00:38 mtnviewmark s/no /now /
00:45 TimToady well, the difference is that the parser expects to find an infix where it expects to find an infix :)
00:45 TimToady so the infix disambiguator is usually unnecessary there
00:46 mtnviewmark I see how the parser does it -- I'm just thinking that us humans are gong to think that [+] (the operator name) and [+] (the metaop) are the same thing there --- so much so that you are now looking for meaning for [\+] (the operator name) as it should be the same as [\+] (the metaop)
00:47 TimToady and there's little reason *not* to overload the disambiguator to also be a meta
00:48 TimToady well, that's the operator, not what the name of the operator is called :)
00:48 mtnviewmark contemplates &[[+]] ....
00:48 mtnviewmark er, should have said "the operator spelling"
00:49 TimToady well, there's an interesting question whether += and [+]= are the same operator...
00:49 TimToady probably wants some normalization
00:50 TimToady *canonicalization
00:50 TimToady starts to look like organic chemistry nomenclature...
00:51 TimToady speaking of iso and ortho
00:52 mtnviewmark speaking of.... lemme guess, you'd like to invert the markers for :direct and :iso?
00:53 mtnviewmark if we want most user defined operators to "just do the right thing" - you are probably right
00:54 mtnviewmark but that led me to a question: When a user defines an operator - do they have access to the  proto token  defs, and do we expect them to use them to add their operator to an existing spot?
00:54 TimToady well, just that normally you want the unmarked case to be default
00:54 mtnviewmark If they do --- then it sort of doesn't matter - 'cuase they'll just get what the proto token has defined on it (no matter if we do it positive or negaive)....
00:55 mtnviewmark on the other hand, if we expect them to modify $<O> themselves, then, yup, we want unmarked to be the common case
00:55 TimToady hmm, well, not sure
00:56 mtnviewmark (Side comment: there is a sort of lurking bug in the .coerce code, because while it "applies" the properties from the class, it has no way to unapply what's there... you get a sort fo amalgam)
00:56 TimToady kinda depends on how objecty code objects are and how easy it is to clone/delegate
00:57 TimToady seems like equiv should get you everything the same that can be the same
00:58 TimToady but this is venturing into a rather prototype (vs classy) viewpoint
01:00 TimToady my proto token foo is &THAT::bar {...} or some such
01:00 * ruoso thinks that he finally found a sane way of autothread code doing async IO
01:00 TimToady and then you wonder how immutable your parent is...
01:01 TimToady which definition of autothread is that?
01:01 ruoso TimToady, I've just sent a reply to the IO thread ....
01:02 ruoso autothread being doing cooperative asynchronous IO in a user-friendly way
01:02 mtnviewmark I've got to run, but I can take on inverting the sense of :direct and :iso if you want...
01:02 mtnviewmark though I hate :indirect and :noniso ---- so, another hunt for good names I suppose
01:03 mtnviewmark :iffy is good and should stay "positive", since it shouldn't be the default, methinks
01:03 mtnviewmark (supposes he can get the follow up, if any, via lambdabot...)
01:06 p6paste "ruoso" at 127.0.0.1 pasted "cooperative async io in an user-friendly way" (19 lines) at http://paste.nix.is/5
01:08 TimToady I think EV.loop is probably evil
01:09 ruoso we need some way to delegate the execution to the event loop
01:10 TimToady I think ==> is all about event loops
01:10 ruoso how would you write that code using ==> ?
01:11 TimToady how would you write a loop to process an incoming pipe in Unix?
01:11 ruoso with a for?
01:11 ruoso actually, it depends
01:11 TimToady foo | bar | baz implies that baz is doing something to its input
01:11 TimToady but it's async
01:12 ruoso er....
01:12 ruoso not really
01:12 ruoso it's blokcing
01:12 ruoso *blocking
01:12 TimToady until there's an event
01:12 TimToady that's what event processing is all about
01:12 ruoso ok...
01:12 ruoso in that sense, I'd write the code as I pasted
01:13 ruoso as if it were a blocking code
01:13 ruoso but with something else taking care of that to make it multi-task
01:13 TimToady ==> is implicitly spawning threads
01:14 ruoso is it?
01:14 TimToady yes
01:14 ruoso sorry... I need the code around the operator to understand what you mean ;0
01:14 ruoso ;)
01:15 TimToady foo() ==> bar() ==> baz()
01:15 TimToady they're just like subprocesses spawned by a shell
01:15 ruoso right, but how that relates to accepts?
01:15 ruoso accepting new connections, that is
01:16 TimToady when there's a connection to accept it sends that event down a ==>
01:16 ruoso TimToady, the problem here is not about data flowing in one direction
01:16 ruoso but about a full duplex conversation that goes during a HTTP connection, for instance
01:17 TimToady usually modelled as a bidirectional pipe, or a pair of pipes, at least in BSD
01:17 * ruoso need to go home...
01:17 TimToady but yes, the protocol wants to be written transactionally
01:17 ruoso TimToady, would you care rewriting the code I pasted in the way you're thinking?
01:17 TimToady and that needs translation to event-ese
01:18 TimToady I'll glare at it some, no promises :)
01:18 * ruoso really have to go... should be back in a hour
01:18 TimToady ciao
01:25 s1n jnthn: ping
01:32 aindilis` joined #perl6
01:32 meppl joined #perl6
01:34 PZt joined #perl6
01:45 ruoso joined #perl6
01:46 * ruoso back
02:10 ruoso TimToady, btw... doing the translation from transactional to event-ese is what makes async programming so hard... my idea was exactly to make it looks like transactional programming but still being asynchronous
02:11 hercynium joined #perl6
02:12 eternaleye joined #perl6
02:15 Limbic_Region joined #perl6
02:27 agentzh left #perl6
02:30 Sepheebear joined #perl6
02:35 agentzh joined #perl6
03:18 TheOrz joined #perl6
03:32 gravity joined #perl6
04:15 _jedai_ joined #perl6
04:42 mtnviewmark joined #perl6
04:49 ab5tract joined #perl6
05:11 mtnviewmark quiet night....
05:21 _jedai_ joined #perl6
05:27 bowma1 joined #perl6
05:38 spx2 joined #perl6
05:46 bowma1 is there a page or faq somewhere that tells me how I can help develop perl6?
05:47 _jedai_ joined #perl6
05:47 diakopter bowma1: there is a gigantic abundance of such pages. if only that faq was asked more f
05:47 diakopter bowma1: what are you interested in doing?
05:47 diakopter types of development activities, uses of Perl 6, anything project related; etc
05:48 bowma1 anything really, my background is in mathematics but I don't think that would help much
05:48 bowma1 I know some haskell, but not enough currently to work on real projects
05:49 diakopter the currently most active Perl 6 implementation is called rakudo; it's written in NQP (not quite Perl) and PIR, two languages on the Parrot VM
05:50 diakopter you can read blog postings about it at rakudo.org
05:50 bowma1 on it now. :)
05:50 diakopter it recently moved to github, though I don't think that's yet reflected online anywhere
05:51 bowma1 so I need to learn NQP and PIR?
05:51 diakopter bowma1: well, in which language(s) are you recently adept?
05:52 * mtnviewmark types make once again in src/perl6 and crosses his fingers....
05:52 bowma1 i'm fluent in C, getting quite familiar now with perl
05:52 bowma1 I've dabbled in most languages though
05:54 bowma1 probably put me somewhere where I can't do much damage
05:54 diakopter bowma1: NQP would be easy to pick up... it's the Parrot Compiler Toolkit (PGE mostly I think?) and the Parrot API that would take a bit to get comfortable with.  I haven't done it myself though.  parrot development "takes place" mostly on irc.perl.org#parrot
05:55 diakopter rakudo development "occurs" both here and irc.perl.org#parrot
05:55 diakopter there are couple of other Perl 6 implementations that are active though
05:55 bowma1 thanks, I like the sound of rakudo
05:58 diakopter pmichaud (Patrick Michaud) is the project originator/driver; he wrote the PCT (PGE/NQP); other active rakudo developers include jonathan/jnthn, particle (jerry), and I'm sure I'm forgetting plenty of others.  they hang out here and on #parrot
05:59 diakopter so, grab the latest trunk parrot from svn.parrot.org/parrot and the latest git push from rakudo/rakudo on github, and you're in business...
05:59 mtnviewmark boy... you leave out one 'self' and STD.pm goes to hell-in-a-handbasket!  :-)
06:00 * mtnviewmark now comes the long wait for ./teststd....
06:00 bowma1 excellent, thank you for the introduction diakopter, hopefully you will see me around
06:00 diakopter bowma1: would you like an svn commit bit for the Perl 6 (machine-readable) official specification (the test suite) and the human-readable official specification (the "Synopses")?
06:01 diakopter (and the myriad other Perl6-related stuff in the svn.pugscode.org repo)
06:01 bowma1 hmm, maybe give me a week to learn a little
06:01 diakopter if so, msg me your email address and desired username.. heh, okay
06:01 alester joined #perl6
06:05 diakopter bowma1: if you like, backlog the millions of words on http://irclog.perlgeek.de/perl6/today and linked/related.
06:05 mtnviewmark rakudo: my $a; $a<foo> = 1; say !$a<foo>;
06:05 p6eval rakudo 36316: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤current instr.: 'postcircumfix:{ }' pc 3633 (src/classes/Associative.pir:77)␤»
06:05 mtnviewmark er?
06:06 mtnviewmark rakudo: my $a; $a<foo> = 1; say $a<foo>;
06:06 TimToady doesn't autoviv yet, I believe
06:06 p6eval rakudo 36316: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Failure'␤current instr.: 'postcircumfix:{ }' pc 3633 (src/classes/Associative.pir:77)␤»
06:06 mtnviewmark oh
06:06 diakopter ....should take you a month or two just even to read it. :)  seriously though, the Synopses and the test suite are good places to learn the language.  also, watch p6eval here; it teaches it, mostly.
06:07 mtnviewmark rakudo: my $a = ('bar' => 'zen'); $a<foo> = 1; say $a<foo>;
06:07 p6eval rakudo 36316: OUTPUT«Method 'postcircumfix:{ }' not found for invocant of class 'Perl6Pair'␤current instr.: 'postcircumfix:{ }' pc 3633 (src/classes/Associative.pir:77)␤»
06:08 mtnviewmark well... what I'm trying to find out is, really, does !$foo<bar> test for non-existance, or if it exists will the value be considred?
06:09 mtnviewmark rakudo: my $a = %('bar' => 'zen'); $a<foo> = 1; say $a<foo>;
06:09 p6eval rakudo 36316: OUTPUT«1␤»
06:09 mtnviewmark rakudo: my $a = %('bar' => 'zen'); $a<foo> = 1; say !$a<foo>;
06:09 p6eval rakudo 36316: OUTPUT«0␤»
06:09 mtnviewmark rakudo: my $a = %('bar' => 'zen'); $a<foo> = 0; say !$a<foo>;
06:09 p6eval rakudo 36316: OUTPUT«1␤»
06:09 mtnviewmark okay - that IS how I thought it should work....
06:11 TimToady $a<foo>:exists should test for existence
06:12 mtnviewmark no, I'm trying to turn off :nometa in <,> ,
06:12 mtnviewmark token infix:sym<,> ( --> Comma)
06:12 mtnviewmark { <sym> { $<O><nometa> = 0; } }
06:12 mtnviewmark but that isn't working....
06:14 TimToady I was thinking of maybe :evil and :morph
06:14 mtnviewmark I've got :nometa and :noniso in my workding dir
06:15 mtnviewmark :nometa is pretty clear: "don't be makin' no metaops outta me, ya hear!"
06:15 mtnviewmark I like :morph for :noniso
06:15 mtnviewmark Is there a reason you did all the tests for properties AFTER you assigned the inner op's <O> to $<O>?
06:15 mtnviewmark seems like you're committing before you're sure!
06:16 TimToady well, if it turns out wrong it's just gonna backtrack and throw it away anyway, so I get the info handy
06:16 TimToady especially if there are variants with different names
06:16 diakopter that's the sunk costs effect... commitment breeds certainty of correctness of the commitment.
06:18 mtnviewmark I'm with d.... I flipped them all around -- but wonder if that isn't hiding my bug...
06:18 TimToady I think the problem is that coerce is happening after your assignment
06:18 TimToady not a problem the other way because coerce doesn't remove props that are already there
06:19 TimToady the coercion is almost the last thing a rule does
06:19 mtnviewmark yes indeedy - that is just what I was thinking.... so when *does* that coerce happen? not on the parse?
06:19 mtnviewmark so
06:20 mtnviewmark <sym> {} <infixish>
06:20 mtnviewmark <.can_meta($<infixish>)>
06:20 mtnviewmark <?{ $<O> = $<infixish><O>; }>
06:20 TimToady it's the very last thing before MATCHIFY
06:20 mtnviewmark that isn't going to work because <infixish> didn't get coerced until late?
06:20 mtnviewmark (.can_meta just is a place for the common check and common error message)
06:21 TimToady the infix has already its own coercion, but the meta hasn't done its yet
06:21 mtnviewmark okay - that is what I'd expect
06:22 TimToady but that should be sufficient
06:22 mtnviewmark back to debugging... something about turning off <nometa> in comma and => that is failing...
06:23 mtnviewmark OH I GET IT
06:23 TimToady it's the --> Comma coercion
06:23 mtnviewmark right
06:23 mtnviewmark oyvey - so with negatives... how can we have per operator overrides
06:23 TimToady we can probably make coerce() not override something that is defined
06:23 mtnviewmark not sure that is right... what do you think?
06:24 TimToady in or keys(%$d) { $m<O>{$_} = $d.{$_} }; trying changing to //=
06:24 mtnviewmark sure...
06:25 * mtnviewmark making...
06:26 TimToady and I'm sure you've discovered that it's very easy to confuse gimme5
06:26 mtnviewmark yes indeed... but that is par for the course when bootstrapping such things
06:27 mtnviewmark and boy... when it gets confused.... kaboom!
06:27 TimToady fortunately it's usually pretty easy to tell from the p5 error where it blew up
06:28 TimToady but for instance, the . in that line above is probably necessary
06:29 mtnviewmark oh, but that change to .coerce will now break the few places where it is called to force things -- like for sym<=> and the, er, hack, to parse !=
06:29 TimToady yeah, probably
06:30 mtnviewmark yup - there it is: [!=] broke... it thinks we're trying !-meta a List assignment!
06:30 TimToady I suppose we could pull the coercion inline like for list vs item assignment
06:31 TimToady then override post coercion
06:31 mtnviewmark I did - that's where I got the code
06:31 mtnviewmark oh - wait
06:32 mtnviewmark I see -
06:32 mtnviewmark is it expected that that special parse login for != will go away at some point because LTM will catch it?
06:32 TimToady doubtless there's a clean way to do this, but I can't think of it offhand
06:32 ashizawa joined #perl6
06:32 mtnviewmark because I'm structuring the code on that assumption....
06:33 TimToady I don't see how LTM will help with that
06:34 mtnviewmark why isn't LTM catching != as a token before !?
06:34 mtnviewmark er, before !       ?
06:35 TimToady there's a fossil check for \s in there
06:35 TimToady but that whole rule needs to go away and rely on the check in the meta
06:35 mtnviewmark indeed - I was just staring at that and going "huh?"
06:36 TimToady the initial trouble was that != also found !== and !=== and !=:=
06:36 TimToady so it really needs to be handled inside !
06:36 mtnviewmark okay - so, I'll assume it is there to stay....
06:37 TimToady the penalty of removing metas from LTM is that you can't intermix tokens with LTM tokens reasonably
06:37 TimToady you have to treat the ! consitently as meta
06:37 TimToady and then look for exceptions
06:39 TimToady alternately, we'd have to have some way of marking the <!=> rule as of lower priority than <!>
06:40 TimToady matching '!' {} '=' makes it the same priority, so if it were later that might work, but it's just as kludgey as the current solution
06:41 TimToady but if a subgrammar were adding the rule it might have to do it that way
06:42 mtnviewmark hmmm... reduce operator is ( --> Transparent ) -- so not sure what is going on... digging deeper (and improving the .panic messages to help)
06:43 mtnviewmark er, rather negate oeprator is....
06:43 TimToady !op is the same prec as op
06:43 TimToady whereas all Xop are of listop prec
06:44 mtnviewmark ah --- got it!   when building != , the resultant operator is :nometa, since = was :nometa --- will have to explicitly turn that one off
06:44 mtnviewmark || <?{ $<infixish>.text eq '=' }>
06:44 mtnviewmark <?{ $<O> = $<infixish><O>; }>
06:44 mtnviewmark { $¢ = STD::Chaining.coerce($¢); }
06:45 mtnviewmark here's the bug --- that second line just shouldn't be there... we don't really want to, in this case, take anything for the = operator
06:45 TimToady we really want the == operator
06:46 mtnviewmark well, the explicit .coerce is effectively building what sym<==> does
06:49 TimToady most of those <?{ ... }> could theoretically just be { ... }, but last time I tried, gimme5 got confused about $¢ somehow
06:49 mtnviewmark okay - that fixed the failing tests ... back to runing teststd all over again...
06:49 mtnviewmark I was going to ask...
06:50 mtnviewmark meaning that $<O> was referring to the wrong thing?
06:50 TimToady and a lot of those used to be <!!{ ... }> to prevent them from stoppping LTM composition
06:51 TimToady something like that, iirc
06:51 mtnviewmark so - :evil?  really? ;-)
06:52 TimToady "Perl 6 has evil operators!!!"
06:52 TimToady but then, so does C
06:53 TimToady perhaps more like :badly_behaved, but that's too long
06:53 TimToady but from the FP perspective, they're evil :)
06:53 mtnviewmark :not_fit_for_meta_manipulation
06:54 TimToady :volatile
06:54 TimToady :will_explode_if_you_look_at_it_funny
06:54 mtnviewmark :touchy
06:55 TimToady that's not too bad
06:55 TimToady :sneaky
06:56 mtnviewmark my husband suggests :irascible
06:59 TimToady :mean
06:59 TimToady :bad
06:59 TimToady :cruel
06:59 TimToady :devious
06:59 mtnviewmark :wrong_side_of_the_tracks ... which actually works for ==> and friends
07:00 TimToady :bad is pretty short :)
07:00 TimToady :naughty
07:02 mtnviewmark d'oh -- I just realized that op= should make the resulting operator :nometa (or what ever...)
07:02 mtnviewmark [+=] is just as bad as [=]
07:03 mtnviewmark :crotchety   or   :grumpy
07:03 TimToady :wicked
07:03 mtnviewmark :thunky
07:05 mtnviewmark well - here's the deal --- we should think of what would a programmer think, when they write a new operator... and then think "oh, hey, that's right, this would ____, I should set the ____ property so that people won't accidentally try to use this in screwy meta ways that won't work."
07:05 TimToady but we're programmers, and we don't know what to think  :)
07:06 mtnviewmark oh, no in this context we're language noodlers!
07:06 TimToady :noodly
07:06 TimToady :fiddly
07:07 spx2_ joined #perl6
07:07 mtnviewmark :iffy and :fiddly --- nice pairing
07:07 masak joined #perl6
07:07 TimToady I kinda like fiddly, sounds like side effects
07:08 mtnviewmark now if we had a replacement for :noniso  that m/.*[fi].*y/
07:08 mtnviewmark :icky
07:09 * mtnviewmark can't wait to write the paragraph in S03 that describes this....
07:09 TimToady :diffedly
07:09 mtnviewmark :diffy
07:09 TimToady it's a keeper!  :)
07:10 mtnviewmark "Operators can be can be :fiddly, :iffy and/or :diffy..."
07:10 TimToady pity i isn't in hexadecimal...
07:10 mtnviewmark no no, " ... can be :diffy, :iffy or :fiddly "
07:10 mtnviewmark sounds better
07:10 TimToady or :doc
07:11 mtnviewmark well... we could spell them   :d1ffy   :1ffy   and :f1dd1y
07:11 TimToady and if ingy adds any operators they can be :spiffy
07:11 TimToady :1ffy won't parse
07:12 TimToady std: :1ffy
07:12 p6eval std 25177: OUTPUT«00:02 32m␤»
07:12 TimToady yeep
07:13 TimToady ah, it's okay
07:13 TimToady it means :ffy(1)
07:13 masak :)
07:14 mtnviewmark really?  Is *that* how :2nd  :3rd  and friends all work?
07:14 TimToady yep
07:14 mtnviewmark are :st, :nd  :rd, :th all just the same routine?
07:14 mtnviewmark er, thing
07:15 TimToady yeah, though those may actually be parsed specially
07:16 TimToady hmm, actually, we seem to be missing th and nd
07:17 TimToady no, they're just extra aliases
07:18 TimToady could have done them all with :st(:nd(:rd(:$th))), but I don't think gimme5 handles it
07:18 TimToady in only knows about 1 or 2 names at a time
07:18 TimToady *it
07:19 mtnviewmark oh fun error messages:  "Can't reduce ==> because it's fiddly"
07:20 TimToady I am surely looking forward to the day when I can put gimme5 in a museum and forget about it
07:20 TimToady too fiddly maybe
07:20 TimToady and "not iffy enough" :)
07:26 * mtnviewmark wonders if Xop should be considdered :diffy
07:27 mtnviewmark boils down to does   $a X+= $b   likely to be what the programmer expected
07:29 mtnviewmark ditto question to    $a [+]= $b
07:29 mtnviewmark wait
07:29 TimToady that's normal
07:29 mtnviewmark strike that...
07:29 mtnviewmark yes -- - because THAT [+] isn't reduction.....
07:30 TimToady but X is problematic with any mutator, though one can get around accumulating ones like += that don't step on each other
07:30 mtnviewmark but crossing seems like a :diffy operation to me -- changes the dimensionality
07:30 TimToady *nod*
07:30 mtnviewmark hehehehehe      I was considering   $a  [X+]= $b
07:30 masak TimToady: re :poll -- that's fine by me, as long as there's some way to get a character without blocking.
07:31 TimToady what's a character?
07:31 mtnviewmark but    $a X[+=] $b     ?  scary!
07:32 TimToady add every element of $b to every element of $a?
07:32 masak TimToady: in this context, it's a keypress, I guess.
07:32 TimToady which, of course, is neither a byte nor a Unicode char
07:32 masak TimToady: I just want to write real-time games in Perl 6. is that too much to ask? :P
07:32 TimToady it's really some kind of event
07:35 TimToady well, speaking of events, my brain just turned to mush
07:35 TimToady zzz &
07:35 masak I'm an old Turbo BASIC user. I liked INKEY$ for its simplicity.
07:36 masak it wasn't even a function call, just a volatile variable that sat there.
07:36 mtnviewmark where's a memory mapped keypress map when you need it?
07:36 masak I'm not saying we should do it that way, but it shows that this need not be difficult.
07:37 mtnviewmark sort of like programming the 1401: the current card is just in locations 0 through 79, 'kay?
07:37 * mtnviewmark admits he's that old
07:37 masak :)
07:40 * masak sees the irony in that his :async addition spawned a thread which escalated into "S16 needs rewriting from scratch"
07:55 iblechbot joined #perl6
07:58 mberends joined #perl6
07:58 masak mberends: greetings.
07:59 DemoFreak joined #perl6
08:07 mberends masak: mornin' ! I was a bit awed by the total spec of SVG-Tiny1.2, I can imagine your reaction to SVG1.1
08:08 masak actually, I haven't got to the stage where I need to be awed by such things yet. :)
08:08 mberends hah
08:08 masak AFAIU, the Perl 5 SVG module doesn't much care about such things.
08:08 masak you can basically mix and match elements as you like.
08:09 masak not sure how I'll do it, but that sounds like a good start. :P
08:09 mberends oh, Perl 5 SVG. I forgot to read that as preparation. Silly me.
08:09 pugs_svn r25178 | mtnviewmark++ | [STD] cleaned up metaop logic
08:09 pugs_svn r25178 | mtnviewmark++ | Introducing :iffy, :diffy, and :fiddly
08:09 pugs_svn r25178 | mtnviewmark++ | PercOp's coerce method now only defaults properties into O
08:10 mberends I just stormed into a new Perl 6 implementation without looking left or right
08:10 masak mberends: I found it slightly difficult to read. I should read more CPAN code.
08:11 masak during a set of long walks this weekend, I re-thought the whole constructor scheme. haven't really digested that yet, but I'm hopeful.
08:11 masak right now, I just want to get to the stage where it outputs useful SVG.
08:11 masak it doesn't even have to be nicely indented!
08:11 mtnviewmark wonders how anything "Tiny" can have 20 appendices!
08:11 mberends yup
08:12 moritz_ you take a large spec, move 70% into the appendices, and then call it "tiny".
08:13 mtnviewmark wow - the "micro DOM" has 56 topic headings in it's description!
08:15 mberends my 'perldoc SVG' says 'No documentation found for "SVG".', that's how little I've seen the Perl 5 version. okay, 'sudo apt-get install libsvg-perl'. Version 2.49, should be OK.
08:16 masak at least I got so far as understanding how all the important methods are autoloaded.
08:16 masak the trick is that they are declared in one class (SVG::Element) and then autoloaded in another (SVG).
08:16 mberends that sounds similar to Perl 5 CGI
08:16 masak maybe it uses that same model.
08:16 mtnviewmark night
08:17 * mberends is wary of porting 'models' from Perl 5 to Perl 6
08:17 masak aye.
08:17 masak me too.
08:17 masak hence the long walks and the re-think.
08:18 mberends anyhow, I have circle() and rect() running and tested.
08:19 mberends the 'model' is lots of boring inline code. that's when the mind begins to speculate about avoiding the drudgery for the rest.
08:20 moritz_ I hope you use named parameters a lot?
08:20 mberends yes
08:20 moritz_ good :-)
08:20 moritz_ I always hate to remember the order of x, y, radius
08:21 mberends method circle( :$cx?, :$cy?, :$r?, :$fill? ) { ... } # is this OK?
08:22 moritz_ sure.
08:22 moritz_ you don't need the ?
08:22 moritz_ named params are optional by default
08:23 mberends ok, thanks
08:23 moritz_ (I'd call it 'radius', not 'r', but that's only a matter of taste)
08:23 mberends the SVG spec defines the obvious names, I don't want to alter them
08:26 moritz_ ok
08:28 Matt-W Morning
08:29 * moritz_ motices an inflation of mames starting with 'm' :-)
08:29 Matt-W It's not my fault it's the best letter to start a name with...
08:29 mberends The Perl 5 SVG looks quite complicated. Currently the Perl 6 one is little more than a parameter shuffling wrapper.
08:31 mberends Mmmorning then
08:31 moritz_ :-)
08:33 mberends mortiz_++: method circle( :$cx, :$cy, :$r, :$fill ) { ... } # passed 2 tests
08:36 masak you're passing tests!? I need to hurry up with my implementation...
08:36 mberends you've got a bigger mountain to climb, to pack you rucksack first
08:37 mberends s/to pack/so pack/
08:37 mberends s/you/your/
08:37 mberends whatever
08:38 moritz_ sometimes we need to rewrite our sentences from scratch :-)
08:39 mberends me all the time :)
08:40 mberends s/me/I do/    # ;)
08:43 Matt-W That's a bit like what Perl 6 is, isn't it?
08:43 moritz_ yes, bug Perl 6 also mangles your thoughts while rewriting your sentences from scratch
08:44 moritz_ s/bug/but/ # :)
08:49 Matt-W Not mangles
08:49 Matt-W Enlightens
08:49 bowma1 left #perl6
08:49 Matt-W And then you have to go back to doing C++ for a living, and you spend a lot of time frustrated with all the stuff it doesn't do
08:51 moritz_ aye
08:51 moritz_ as we speak I'm working on a C++ program :/
08:52 moritz_ and I find it frustrating how much work it is to get integers or doubles out of command line arguments
08:52 Matt-W we've recently been granted permission by our paranoid legal team to use Boost
08:52 Matt-W so I've started using boost::lexical_cast for things like that
08:52 moritz_ in Perl 6 I'd just write sub MAIN(:$b = 6.0, ...)
08:53 moritz_ I also use boost (namely ublas), but I didn't want to learn about more classes
08:53 Matt-W lexical_cast is nice, it's header-only and it's pretty straightforward
08:54 Matt-W lexical_cast<unsigned int>(argv[1]) - throws bad_lexical_cast if it can't manage the type conversion in a sensible manner
09:22 finanalyst joined #perl6
09:31 jnthn s1n: pong, but I gotta go for a flight in half an hour...
09:48 jhuni joined #perl6
09:56 ejs joined #perl6
09:59 meppl joined #perl6
10:06 ejs1 joined #perl6
10:19 c9s_ joined #perl6
10:33 xinming joined #perl6
10:38 ruoso joined #perl6
10:48 charsbar_ joined #perl6
10:49 literal joined #perl6
10:49 c9s_ joined #perl6
10:49 ashizawa joined #perl6
10:49 gazz_ joined #perl6
10:49 drbean joined #perl6
10:49 samlh joined #perl6
10:49 [cotto] joined #perl6
10:49 zostay joined #perl6
11:18 ludan joined #perl6
11:44 alexn_org joined #perl6
12:23 loumz joined #perl6
12:30 jrockway joined #perl6
12:30 rindolf joined #perl6
12:49 zamolxes joined #perl6
12:55 alanhaggai joined #perl6
12:56 alanhaggai joined #perl6
13:15 braceta joined #perl6
13:23 jeremiah_ joined #perl6
13:23 spx2 joined #perl6
13:25 iblechbot joined #perl6
13:28 spx2__ joined #perl6
13:30 jeremiah_ Hello all. :)
13:31 masak jeremiah_: greetings :)
13:31 jeremiah_ Looking for a good resource for playing with perl6, kind of a "hello world" tutorial
13:31 jeremiah_ There seems to be a lot out there, but a lot of it is older.
13:31 masak jeremiah_: you're in the right place.
13:31 jeremiah_ Like Gabor's nice tutorial.
13:32 masak rakudo: say 'hello world'
13:32 jeremiah_ heh :)
13:32 p6eval rakudo 36323: OUTPUT«hello world␤»
13:32 jeremiah_ cool!
13:32 masak indeed.
13:32 jeremiah_ rakudo: "OHAI".say;
13:32 p6eval rakudo 36323: OUTPUT«OHAI␤»
13:33 masak rakudo: { ^$message.say }.('I CAN HAZ RAKUDO')
13:33 p6eval rakudo 36323: OUTPUT«Scope not found for PAST::Var '$message' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤»
13:33 masak oops.
13:33 masak rakudo: { $^message.say }.('I CAN HAZ RAKUDO')
13:33 p6eval rakudo 36323: OUTPUT«./parrot: symbol lookup error: /home/evalenv/parrot/runtime/parrot/dynext/perl6_ops.so: undefined symbol: const_string␤»
13:33 jeremiah_ w00t compiler panic
13:33 jeremiah_ where is Jonathan?
13:33 masak that ought to work, bug we have a Rakudo build failure right now.
13:33 jeremiah_ :)
13:33 masak he's in transit.
13:34 spx2___ joined #perl6
13:34 masak jeremiah_: have you seen moritz_++'s blog posts?
13:34 jeremiah_ masak: I just was with him in Bulgaria and his inspired talks made me want to start hacking perl6 now.
13:34 jeremiah_ masak: No, but I have heard he is quite knowledgable.
13:34 masak people tend to like them. hold on, I'll dig them up.
13:34 jeremiah_ I heard that from Jonathan.
13:35 jeremiah_ Thanks masak.
13:35 masak jeremiah_: moritz_ is indeed quite knowledgeable. and he doesn't complain half as much as I do.
13:35 masak http://perlgeek.de/blog-en/perl-5-to-6/
13:35 jeremiah_ heh, thanks for the link
13:36 * jeremiah_ fires up firefox, that memory-eating hog.
13:37 jeremiah_ masak: Wow - that is good stuff.
13:37 jeremiah_ I am grateful he took the time to write this.
13:38 jeremiah_ I'll have to tell him when he is around here.
13:38 jeremiah_ moritz_: Great stuff on your perl blog! Thanks for writing it!
13:40 masak I'm sure he'll backlog and see that.
13:40 masak most of us regulars backlog.
13:40 wolverian joined #perl6
13:41 masak but if you want to be sure he gets it, say '@tell moritz_ Great stuff on your perl blog! Thanks for writing it!' and lambdabot will relay it for you.
13:43 dalek joined #perl6
13:43 SamB masak: if you trust lambdabot!
13:44 masak better than nothing.
13:44 SamB she's been getting rather unreliable :-(
13:44 * masak likes lambdabot
13:46 spx2 joined #perl6
13:46 moritz_ ah, I backlog when somebody hilights me
13:48 masak ok, then.
13:48 masak moritz_: backlog!
13:48 masak :)
13:50 * ruoso while in the async io theme, just had to do another async io code... http://perlmonks.org/?node_id=740988
14:04 szabgab_ jeremiah_: are you talking about my ages old tutorial for Perl 6 ?
14:04 jeremiah_ szabgab_: Yeah!
14:04 szabgab_ I just cleaned up most of the examples and will upload a new version soon
14:04 jeremiah_ It is really good, just a little old. :)
14:04 szabgab_ finally I wrote unit tests for almost all of them
14:06 szabgab_ moritz_: I've just created a wiki page for the Perl6 hackathon after GPW. please add yourself if you can really come/stay
14:06 szabgab_ http://conferences.yapceurope.org/gpw2009/wiki?node=Hackathon
14:06 jeremiah_ szabgab_: Cool - I'll keep my eyes peeled.
14:07 masak jeremiah_: if you have the time and want to see a real-world Perl 6 program, I'd really like it if you took Druid for a test drive.
14:07 masak https://github.com/masak/druid/
14:07 jeremiah_ masak: Driud? What is that?
14:08 jeremiah_ Okay, I will check it out.
14:08 masak jeremiah_: it's a board game invented by Cameron Browne
14:08 jeremiah_ Ah, cool.
14:09 masak two druids compete for building a monument on the same spot of grass in Stonehenge :)
14:10 jeremiah_ Sounds like a likely scenario. :)
14:12 ejs1 joined #perl6
14:12 masak I've been fascinated by this game for three months now. maybe it'll wear off after I write the computer algorithms for playing it. then again, maybe not.
14:14 aindilis joined #perl6
14:16 mberends joined #perl6
14:16 TheOrz joined #perl6
14:19 jeremiah_ Is readline still the way to get input into the script?
14:19 jeremiah_ I am getting a stack trace . . .
14:19 PerlJam jeremiah_: my $stuff = =$filehandle;
14:20 jeremiah_ What about a command line argument?
14:21 masak jeremiah_: you have to manually parse and open the argument right now, but if you're willing to do that, it works.
14:21 jeremiah_ ah, okay. Is readline the way to go?
14:22 masak either $fh.readline or =$fh, yes
14:26 szabgab_ jeremiah_: =$*IN
14:26 szabgab_ ah you did not ask for STDIN but command line
14:27 masak aye, that's sort of not-yet-impl.
14:27 szabgab_ $*ARGV is not yet implemented ?
14:27 szabgab_ or rather @*ARGV I guess...
14:28 masak szabgab_: IIRC.
14:29 szabgab_ I can't try it in trunk as it is still dead for me :-(
14:29 jeremiah_ How does one iterate over an array?
14:29 PerlJam you mean @ARGS
14:29 szabgab_ for @x -> $v {}
14:29 jeremiah_ szabgab_: Thanks.
14:29 PerlJam and it was implemented last time I looked
14:30 szabgab_ PerlJam: probably :-)
14:30 szabgab_ rakudo: my @x = <a b c>; for @x -> $v { say $v }
14:31 p6eval rakudo 36323: OUTPUT«./parrot: symbol lookup error: /home/evalenv/parrot/runtime/parrot/dynext/perl6_ops.so: undefined symbol: const_string␤»
14:31 PerlJam that's not good.
14:31 szabgab_ sure, p6eval also caught up with the deadness of trunk
14:32 masak indeed.
14:32 jeremiah_ Seems like there is some gardening to do. :)
14:32 masak Rakudo has been increasingly feeling the absence of jnthn and pmichaud...
14:33 diakopter masak: heh; it's been only a few days, right?
14:33 spx2_ joined #perl6
14:33 masak diakopter: depends on how you count.
14:33 masak have you seen RT lately?
14:33 jeremiah_ masak: Where do the rakudo bugs go on RT?
14:33 jeremiah_ Is there a URL?
14:34 diakopter masak: :P well, I personally consider failing tests to be a better indicator of "bugs"
14:34 masak http://rt.perl.org/rt3/
14:34 diakopter I mean, having a bug ticket for it seems redundant to me
14:34 jeremiah_ Ta. (As a brit might say.)
14:34 masak diakopter: there are failing spectests, too. have been for the last few days.
14:34 meppl joined #perl6
14:35 masak diakopter: most of my bug tickets don't have spectests when I submit them. some get them, though.
14:35 jeremiah_ In RT 3, perl6 == rakudo?
14:35 masak aye.
14:36 jeremiah_ Okay.
14:36 diakopter masak: to clarify my statements/thoughts, I think of RT as the place for bug submission by folks who *can't* write the spectest themselves, or don't know how, or don't even know about spec test's existence
14:36 diakopter or for things that can't be tested by the testing framework currently
14:36 diakopter but for folks who can commit new spec tests, why not just add them there directly?
14:36 alexandro joined #perl6
14:37 diakopter (saves time for the implementors)
14:37 diakopter (less visual clutter)
14:37 alexandro left #perl6
14:37 masak diakopter: I'm deep in Rakudo/Perl 6 development. I'm a Rakudo dev. I still use RT heavily.
14:37 masak I don't see the issue.
14:37 masak to me, spectests are one thing, and tickets another.
14:38 icwiener joined #perl6
14:38 diakopter masak: I realize those things; it just seems to me that every ticket needs a spectest, but not every failing spectest needs a ticket
14:38 masak specifically, submitting a rakudobug can take as little as a minute. creating a spectest takes more on the order of five minutes.
14:39 masak it adds up. :)
14:39 diakopter right, ok.  ok, here's my revised suggestion, then. :D
14:39 SamB so you want other people to write the tests for you?
14:39 diakopter create tickets in RT but only to write the spectest
14:39 masak SamB: I want the quickest route to making the problem known.
14:39 diakopter that is, close the ticket once the spectest is written
14:40 masak diakopter: I think that's what we do currently.
14:40 diakopter masak: ok.. I guess then I'll ditto SamB's question.
14:40 masak at least pmichaud reassigns to moritz_ when things are fixed in Rakudo, so that moritz_ can add a spectest.
14:41 diakopter heh, ok. :)
14:42 masak diakopter: well, bugs are often orthogonal to missing features. they're often more like misfeatures. when I find them, my main goal is to bring them to attention. I leave it to other people to determine what needs to be tested.
14:42 masak one might phrase that as 'so you want others to write the tests for you', but the fact is that I consider it to be worthwhile to actually find and report the bugs themselves.
14:43 masak those who don't consider that enough are welcome to make spectests out of my bug tickets.
14:43 SamB masak: sorry, I didn't mean to suggest that you were being *lazy*
14:44 masak SamB: good. then I won't have to ask you to get off my lawn. :P
14:44 PerlJam masak++  (he's doing more than many people :)
14:44 SamB I was more thinking you were in a hurry to get to the next bug
14:44 diakopter masak: I wasn't saying it's not worthwhile to report them as bugs.. I guess I'm speaking to what you just said about leaving it to other people: "to determine what needs to be tested".  In my mind, if p6eval returns something you didn't expect according to the Synopses, then that should go in directly as a failing test.
14:44 masak SamB: I am.
14:45 masak diakopter: that's why the spectests are in Pugs, so that people who think like you do can contribute.
14:45 diakopter masak: so in other words, I think everything that p6eval does "wrongly" should ideally be a test
14:45 masak diakopter: as I said, go ahead.
14:45 diakopter masak: actually even a while back I (and maybe others) suggested a bot to do it automatically
14:46 jeremiah_ spectes
14:46 jeremiah_ Oy, sorry.
14:46 jeremiah_ A bot seems like a bad idea.
14:46 masak diakopter: I'm currently filling my time writing Perl 6 _code_, and writing spectests would take too much time away from that.
14:47 diakopter I didn't expect to get so much pushback on my suggestion; I admit it, I don't fully grasp/believe the time difference of 1 minute to 5 minutes...
14:47 diakopter jeremiah_: why not a bot?
14:48 jeremiah_ Because bots are good for boilerplate, but bad for complex problems that need human intervention.
14:48 masak the spectests do indeed need human intervention.
14:49 masak moritz_++ is doing a ginorous job.
14:49 masak s/ginorous/ginormous/
14:51 * diakopter waking up slowly today I guess..... I think what I'm getting at is a way to make moritz_'s spectest task *less* ginormous, and while reducing redundancy and clutter, and even perhaps reducing masak's time to submit bugs.
14:51 diakopter imagine, masak issues a command to p6eval
14:51 diakopter rakudo: this.do
14:51 p6eval rakudo 36323: OUTPUT«Could not find non-existent sub this␤current instr.: '_block14' pc 53 (EVAL_16:38)␤»
14:52 diakopter you get my drift, hopefully
14:52 SamB well, someone has to decide whether it got it wrong!
14:52 SamB for instance
14:52 diakopter right, masak
14:52 diakopter so, at that point, masak doesn't know whether it's a spectest failure or just his expectation failure
14:52 SamB rakudo: print [1..]
14:52 p6eval rakudo 36323: OUTPUT«Statement not terminated properly at line 1, near "..]"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
14:52 SamB not EVERYTHING is valid perl6
14:52 diakopter (doesn't *necessarily* know)
14:52 SamB some things are Haskell
14:53 * diakopter blinks
14:54 jeremiah_ Yeah, written in haskell to make the syntax more readable.
14:54 jeremiah_ </joke>
14:54 * diakopter backpedals
14:54 spx2 joined #perl6
14:55 * SamB is actually a Haskeller who only ended up here because of pugs
14:55 diakopter masak: anyway, what I'm proposing is a way for you to tell irc/p6eval that your last command to p6eval, you think was performed wrongly, and that you think it's probably a spectest failure
14:56 diakopter and it can go in svn somewhere, already prepared for moritz_ to classify it in the spectests somewhere
14:56 diakopter or examples
14:56 diakopter or wherever
14:56 SamB diakopter: but, uh, how do you put what the output should've been ?
14:56 masak diakopter: you've just proposed RT, according to me.
14:57 diakopter SamB: good point..   how about this syntax:   p6testbot: "the output I expected with perhaps a \n"
14:57 diakopter (implied, the output from my last command to p6eval)
14:57 masak diakopter: but without all the features of RT.
14:59 diakopter alright, I won't persist in the bots'-advocate train of thought.
14:59 masak I don't mean to sound harsh, but I don't think it'll help. at least not me.
14:59 masak as it is, I use p6eval, I copy/paste into RT, and let things have their course.
15:00 masak other people decide to spectest things.
15:00 masak it doesn't get much more efficient than that.
15:01 * SamB agrees
15:01 spx2__ joined #perl6
15:06 spx2_ joined #perl6
15:08 ludan joined #perl6
15:18 elmex joined #perl6
15:21 ludan joined #perl6
15:22 spx2 joined #perl6
15:22 Exodist joined #perl6
15:33 alester joined #perl6
15:37 stephenlb joined #perl6
15:38 ZuLuuuuuu joined #perl6
15:39 ZuLuuuuuu left #perl6
15:48 allbery_b joined #perl6
15:54 aindilis` joined #perl6
16:00 justatheory joined #perl6
16:20 masak moritz_: ping
16:21 moritz_ masak: you pang :-)
16:21 ZuLuuuuuu joined #perl6
16:22 masak I have a patch for you that fixes what r36319 broke.
16:22 moritz_ masak: shoot
16:22 masak moritz_: email or gist?
16:22 icwiener_ joined #perl6
16:23 moritz_ gist or nopaste
16:24 masak http://gist.github.com/57593
16:25 moritz_ masak: that seems to cut off line endings...
16:26 masak :/
16:26 masak hold on, I'll try it another way
16:26 moritz_ masak: but pmichaud just appeared, wait till he gives you commit acces
16:26 moritz_ that's easier for all of us
16:26 mberends moritz_: switch to raw display, masak++ sent me one yesterday OK
16:27 masak mberends: ah, goodie. thanks.
16:27 mberends welcome
16:29 araujo joined #perl6
16:29 masak saluton, araujo :)
16:31 araujo hola masak
16:31 araujo :)
16:31 masak moritz_: are you committing? or shall I?
16:32 moritz_ masak: you please
16:32 * masak goes ahead
16:34 * moritz_ wonders if we'll see a broken umlaut in a commit message soon :-)
16:34 masak I think I confed git to call me 'masak'
16:35 moritz_ so I'll have to test that myself at some point
16:35 masak aye :)
16:36 dalek rakudo: 8e67a4f | (Carl Masak)++ | src/ (3 files):
16:36 dalek rakudo: ran allison++'s script against the src/ files
16:36 dalek rakudo: Things now work again with Parrot r36319 and later.
16:36 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8e67a4f925c4d9ab6ff1842c8fa55b7e702f046f
16:36 masak I bet that if you see a distortion, it won't be git's fault.
16:36 p6eval rakudo 36324: OUTPUT«Syntax error at line 1, near "8e67a4f | "␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:36 p6eval rakudo 36324: OUTPUT«Statement not terminated properly at line 1, near "'s script "␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:36 p6eval rakudo 36324: OUTPUT«Statement not terminated properly at line 1, near "."␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:36 p6eval rakudo 36324: OUTPUT«Statement not terminated properly at line 1, near ": http://g"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
16:36 masak oh, is that still not fixed?
16:37 moritz_ I was quite sure I fixed it
16:37 masak reboot dalek?
16:37 moritz_ no
16:37 moritz_ it's p6eval that should ignore dalek
16:37 masak oh, right.
16:37 [particle]1 p6eval should ignore all other bots
16:37 * masak 's brain is backwards
16:38 [particle]1 all bots should ignore all other bots
16:38 [particle]1 except *maybe* link shorteners
16:38 moritz_ [particle]: but I don't have a complete list of bots anywhere :/
16:39 [particle] yes, i see their mode isn't set here, like on #parrot
16:39 p6eval joined #perl6
16:40 moritz_ I hope that I simply forgot to restart the bot after the last fix
16:43 alexn_org joined #perl6
16:45 idemal joined #perl6
16:49 dalek rakudo: 0c50158 | (Carl Masak)++ | .gitignore:
16:49 dalek rakudo: ignore .dll files
16:49 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0c50158cba82aef182e0a8d22a3b9a91b1fc941b
16:49 moritz_ p6eval didn't go mad
16:49 moritz_ that's good
16:50 masak moritz_++
16:50 moritz_ perlbot: karma moritz
16:50 perlbot Karma for moritz: 1848
16:50 moritz_ perlbot: karma moritz_
16:50 perlbot Karma for moritz_: 143
16:53 jferrero joined #perl6
16:54 ZuLuuuuuu left #perl6
16:56 hercynium joined #perl6
16:56 moritz_ perlbot: karma masak
16:56 perlbot Karma for masak: 257
17:00 jeremiah_ perlbot: karma jeremiah
17:00 perlbot jeremiah doesn't have any karma
17:00 jeremiah_ WHAT!!
17:00 jeremiah_ :)
17:01 masak karma jeremiah_
17:01 masak @karma jeremiah_
17:01 lambdabot jeremiah_ has a karma of 0
17:01 masak jeremiah_++ # welcome
17:01 moritz_ jeremiah_++ # caring about karma
17:01 [particle] karma-- # not caring about jeremiah_
17:02 masak :)
17:02 moritz_ lol
17:02 moritz_ brb
17:02 masak caring++ # jeremiah_ about karma
17:02 jeremiah_ Thanks!
17:02 mtnviewmark joined #perl6
17:03 masak mtnviewmark: greetings.
17:03 jeremiah_ Even n00bs need a little karma
17:03 mtnviewmark hello and good morning (for me!)
17:03 masak jeremiah_: aw, come on! you're no noob! you're already a Perl 6 user, how cool is that?
17:03 jeremiah_ Pretty cool if you ask me. =)
17:03 masak my point exactly!
17:04 TimToady and next thing you know, we'll have persuaded you to have a commit bit
17:04 mtnviewmark std: $a !+< $b
17:04 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't negate a multiplicative operator because it's not iffy enough at /tmp/KxCrnci4zZ line 1:␤------> [32m$a !+<[31m $b[0m␤00:02 33m␤»
17:04 [particle] ...eventually, you'll be designing the language...
17:04 mtnviewmark heh!
17:04 TimToady mtnviewmark++
17:04 masak ...and then implementing it...
17:04 [particle] std: $a != $b
17:04 p6eval std 25178: OUTPUT«00:02 33m␤»
17:05 [particle] mtnviewmark++ indeed
17:05 mtnviewmark std: $a X==> $b
17:05 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't cross a sequencer because it's too fiddly at /tmp/iiu4SN7w7I line 1:␤------> [32m$a X==>[31m $b[0m␤00:02 33m␤»
17:05 masak mtnviewmark++ :)
17:05 * mtnviewmark blushes
17:05 [particle] std: $chicken X==> $road
17:05 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't cross a sequencer because it's too fiddly at /tmp/34lyhTFJZ1 line 1:␤------> [32m$chicken X==>[31m $road[0m␤00:02 33m␤»
17:06 TimToady std: $chicken X $road
17:06 p6eval std 25178: OUTPUT«00:02 33m␤»
17:06 masak best... error message... ever.
17:06 * TimToady bows for the fiddly bits
17:07 mtnviewmark Introducing our new mascots: :iffy, :diffy and :fiddly
17:07 masak mtnviewmark: aye, when I came here this morning the two of you were conspiring over those bits.
17:07 TimToady they're :daffy duck's nephews
17:08 [particle] :sufferin'sucotash
17:08 mtnviewmark yes -- it seems if you want a good name for things, it is best to engage TimToady just before his brain turns to mush -- it is MOST creative then
17:08 masak care to give an executive summary? (or a backlog URL)
17:08 jeremiah_ If I hang out enough with Jnthn I am sure some of it might rub off on me.
17:08 TimToady std: :sufferin'sucotash
17:08 p6eval std 25178: OUTPUT«00:02 32m␤»
17:08 masak Perl 6 is strange.
17:09 * TimToady bows again
17:09 [particle] i think it's charmed.
17:09 mtnviewmark summary: some operators are too :fiddly -- and can't be used with meta operators at all.  Think ff  or  ==>  -- they fiddle about beyond a normal operator
17:09 TimToady pity about the truth and beauty
17:09 [particle] it's definitely quarky.
17:09 masak TimToady: :D
17:09 jan_ joined #perl6
17:09 TimToady Haskell has a bare bottom
17:09 mtnviewmark summary: some operators are :diffy -- that is their result differs too much from their arguments to make much sense in reduction or assignment meta ops
17:10 jeremiah_ Hmm, I thought truth was beauty and beuaty truth, that is all ye know and all ye will ever know.
17:10 masak mtnviewmark: I didn't think I would say this, but the names sort of make sense.
17:10 mtnviewmark summary: some operators are :iffy -- useful in an if expression, and so can be negated with the ! metaop
17:10 masak mtnviewmark: you sold me.
17:10 TimToady std: $a !% 3
17:10 p6eval std 25178: OUTPUT«00:02 33m␤»
17:11 TimToady e.g. % is iffy without returning Bool
17:11 masak right.
17:11 mtnviewmark I always say it is worth it to find good names for things --- TT and I had alot of fun with our Thesauri
17:11 masak I can tell.
17:12 [particle] perl 6 is starting to look like lolskell
17:12 TimToady actually, only used the one in my head this time
17:12 mtnviewmark LOL!
17:12 jeremiah_ lolskell!
17:12 literal Perl always seems to brings a lot of generalizations like these to the surface which seem to have escaped the designers of other languages
17:13 masak I gotta write these things down somewhere...
17:13 mtnviewmark that one deserves a wiki page
17:13 jeremiah_ OHAI CAN I HAZ FUNCTION?
17:13 TimToady YOU HAZ BEEN PWNED BY MY MONAD!
17:13 masak jeremiah_: speaking of which, http://www.youtube.com/watch?v=DzpSREpLJY8
17:14 jeremiah_ masak: Yeah, I saw some of that LOLCODE this weekend, Jonathan was in Bulgaria with me and we looked at some LOLCODE.
17:14 masak oh, right. of course.
17:14 mtnviewmark std: $k:th X+ $bai
17:14 p6eval std 25178: OUTPUT«00:02 33m␤»
17:15 jeremiah_ Very cool. We had a lot of fun.
17:15 jeremiah_ Of course we had been drinking so. . .
17:15 jeremiah_ it was extra fun
17:15 masak :)
17:15 TimToady std: m'kay bai
17:15 p6eval std 25178: OUTPUT«Undeclared routines:␤  bai used at 1 ␤   m'kay used at 0 ␤00:02 32m␤»
17:16 TimToady ooh, a but!
17:16 TimToady *bug
17:16 diakopter bare bug
17:16 TimToady std: `
17:16 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/D7DrHg7sS7 line 1:␤------> [32m[31m`[0m␤    expecting any of:␤    prefix or noun␤   statement end␤    statement list␤   whitespace␤00:02 32m␤»
17:17 diakopter std: ;
17:17 p6eval std 25178: OUTPUT«00:02 32m␤»
17:17 diakopter std: ,
17:17 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/htozV159Cc line 1:␤------> [32m[31m,[0m␤    expecting any of:␤    prefix or noun␤   statement end␤    statement list␤   whitespace␤00:02 32m␤»
17:17 diakopter std: =
17:17 p6eval std 25178: OUTPUT«Undefined␤00:02 32m␤»
17:17 diakopter std: >
17:17 TimToady whoa
17:17 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/pdWTXluzfO line 1:␤------> [32m[31m>[0m␤    expecting any of:␤    prefix or noun␤   statement end␤    statement list␤   whitespace␤00:02 32m␤»
17:17 diakopter std: <
17:17 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/LIMgn9o1v2 line 1:␤------> [32m<[31m[0m␤    expecting escape␤00:02 33m␤»
17:18 diakopter std: |
17:18 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤(Possible runaway string from line 1 to line 1)␤Can't understand next input--giving up at /tmp/txIjwHs3Kx line 0:␤------> [32m[31m[0m␤    expecting noun␤00:04 36m␤»
17:18 diakopter ooo it doesn't like it
17:18 diakopter 4 36
17:18 TimToady std: =foo
17:19 p6eval std 25178: OUTPUT«Undefined␤00:02 32m␤»
17:19 TimToady std: =begin
17:19 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤=begin without =end at /tmp/4Qpsan1C8v line 1:␤------> [32m=begin[31m[0m␤00:02 32m␤»
17:19 diakopter hm; that won't work for repl
17:20 diakopter std: '
17:20 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/9VWS3JdJTb line 1:␤------> [32m'[31m[0m␤    expecting escape␤00:02 33m␤»
17:20 diakopter std:
17:20 diakopter std: \
17:21 p6eval std 25178: OUTPUT«Undefined␤00:02 32m␤»
17:21 diakopter I guess the empty one was disregarded
17:22 [particle] spack: :th
17:22 [particle] harumph
17:22 TimToady a good repl will know when it's in the middle of parsing something
17:23 diakopter std[repl mode]: =begin
17:23 * diakopter wishful typing
17:23 TimToady just so it's not wishful thunking
17:24 diakopter there are puns, and there are p6uns
17:24 mtnviewmark that video was awesome
17:25 TimToady there are puns, and there are pun6
17:26 diakopter that one could go either way
17:26 TimToady as long as it does go a way
17:28 smtms joined #perl6
17:28 diakopter actually it could go both|ways...
17:29 diakopter well
17:29 * diakopter gives up
17:29 diakopter [the stack]
17:40 eternaleye joined #perl6
17:50 M_o_C joined #perl6
17:50 smtms joined #perl6
17:51 M_o_C joined #perl6
17:54 DemoFreak joined #perl6
17:56 schmalbe joined #perl6
18:07 Psyche^ joined #perl6
18:07 M_o_C joined #perl6
18:11 Tene_ joined #perl6
18:15 ft joined #perl6
18:24 masak joined #perl6
18:34 cognominal joined #perl6
18:39 smtms_ joined #perl6
18:43 charsbar joined #perl6
18:50 viklund joined #perl6
18:50 zamolxes joined #perl6
18:57 jferrero joined #perl6
19:05 Psyche^ joined #perl6
19:14 hanekomu joined #perl6
19:23 eternaleye joined #perl6
19:40 jferrero joined #perl6
19:41 turbov21 joined #perl6
19:42 turbov21 is there a way to install Parrot without libicuuc.so?  I've tried --without-icu but gets the same error.
19:43 moritz_ did you do a 'make realclean' before running configure again?
19:43 turbov21 just "make clean"
19:44 moritz_ that's probably not enough :/
19:44 turbov21 try a make, post-realclean now
19:44 turbov21 err, trying
19:45 moritz_ and then re-run Configure.pl with --without-icu
19:45 moritz_ if that doesn't help, try #parrot on irc.perl.org
19:46 turbov21 Thanks!
19:58 masak I just got bitten by a logical bug of sorts: @array[0..0] results in an element, not in a list.
19:59 masak what would be the best way to make sure that it is a list I get? @array[0..0].list?
19:59 moritz_ aye
20:00 masak seems to work.
20:00 masak I expect to be bitten by this one in the future, too. :/
20:00 masak especially since the endpoints of the range need not be literals.
20:06 TimToady I think use of a range operator should imply list
20:06 TimToady much like @array[0,] should
20:06 masak one should think so, yes...
20:06 masak what do the synopses think?
20:08 masak moritz_: the @array[0..0].list trick doesn't work when the elements are arrays :/
20:08 * masak needs to special-case for now
20:09 moritz_ [@array[0..0]].list perhaps?
20:09 TimToady does @array[0..0,] work?
20:09 TimToady or @array[0..0,()] ?
20:09 masak moritz_: the problem, as I hinted, is that my zeroes aren't literals.
20:09 masak TimToady: I'll try, hold on.
20:10 masak TimToady: no and no, respectively :/
20:10 TimToady whatever interpolates a range into a capture should make sure it's listy in list context
20:10 TimToady but I'm not sure rakudo really believes in Captures yes
20:11 masak seems not.
20:11 * masak hesitates on the rakudobug submit button
20:12 * moritz_ shouts "go, go, go!"
20:12 * ruoso later&
20:12 * mberends too
20:12 * masak goes, goes, goes
20:12 * mberends applauds
20:13 * moritz_ looks at the perl6 bug queue and shudders
20:13 masak .oO( bread and spectacle )
20:13 masak moritz_: sorry about that. :/
20:42 duke_leto joined #perl6
20:46 elmex joined #perl6
20:47 duke_leto left #perl6
21:03 rob joined #perl6
21:21 * jnthn is back home
21:32 meppl joined #perl6
21:52 [particle] std: i:th
21:52 p6eval std 25178: OUTPUT«00:02 32m␤»
22:00 Whiteknight joined #perl6
22:02 mtnviewmark that probably doesn't mean what you think it means
22:03 mtnviewmark the i there is a function or method
22:03 mtnviewmark not the operator
22:03 mtnviewmark (I think!  :-)  )
22:03 moritz_ but what does it mean?
22:03 Whiteknight there is an "i" operator?
22:04 moritz_ a postfix operator
22:04 moritz_ to generate complex numbers
22:04 moritz_ rakudo: say 2 * (1 + 2i)
22:04 Whiteknight ah, okay
22:04 p6eval rakudo 36336: OUTPUT«Parrot VM: Can't stat languages/perl6/perl6.pbc, code 2.␤main: Packfile loading failed␤»
22:04 moritz_ thank you p6eval
22:04 [particle] i thought of the constant 'i'
22:04 moritz_ I think you have to write that as 1i
22:04 [particle] std: e:th
22:04 p6eval std 25178: OUTPUT«00:02 32m␤»
22:05 [particle] std: pi:th
22:05 [particle] see
22:05 p6eval std 25178: OUTPUT«00:02 32m␤»
22:05 moritz_ std: 3:th
22:05 p6eval std 25178: OUTPUT«00:02 32m␤»
22:05 moritz_ std: Foo:th
22:05 jnthn std: wtf:th
22:05 p6eval std 25178: OUTPUT«Undeclared type:␤      Foo used at 1 ␤00:02 32m␤»
22:05 p6eval std 25178: OUTPUT«Undeclared routine:␤   wtf used at 1 ␤00:02 32m␤»
22:05 moritz_ uhm.
22:06 moritz_ does it use the same trick as rakudo did?
22:06 [particle] trick?
22:06 moritz_ using the case of the first letter to check for subs/types?
22:06 jnthn moritz_: Only as a heuristic when giving errors.
22:06 [particle] no
22:06 moritz_ ah, that makes sense
22:06 * moritz_ was worried for a moment
22:06 jnthn I haven't put that heuristic into Rakudo's grammar.pg yet though.
22:08 jnthn So what does i:th do?
22:08 jnthn (and e:th, etc)
22:09 jnthn just call the operator with an adverb :th?
22:09 aindilis joined #perl6
22:12 moritz_ probably
22:14 duke_leto joined #perl6
22:17 [particle] yes
22:17 mtnviewmark I don't think there *is* a constant i
22:17 [particle] std: $k:th
22:17 p6eval std 25178: OUTPUT«00:02 33m␤»
22:17 mtnviewmark so [+]:th
22:18 mtnviewmark would be the operator + with the adverb :th
22:18 [particle] token term:i ( --> Term)     { <sym> » }
22:18 mtnviewmark but, TT said there was an exception for i in that   $foo.i was not calling postfix:<i>, but instead the method <i>
22:18 moritz_ std: i-i
22:18 p6eval std 25178: OUTPUT«Undeclared routine:␤   i-i used at 1 ␤00:02 32m␤»
22:19 mtnviewmark or rather - there wasn't an exception for postfix:<i> --- since dot-followed-by-alpha is a method call
22:19 mtnviewmark so.....
22:19 [particle] std: @a[Inf:th]
22:19 p6eval std 25178: OUTPUT«00:02 33m␤»
22:19 mtnviewmark std:  $a:th(1i)
22:19 wolverian std: i - i
22:19 p6eval std 25178: OUTPUT«00:02 33m␤»
22:19 p6eval std 25178: OUTPUT«00:02 32m␤»
22:19 mtnviewmark that would be the imagnary-th elment of $a
22:19 wolverian std: $a:th(i)
22:19 p6eval std 25178: OUTPUT«00:02 33m␤»
22:20 wolverian seems to work
22:20 mtnviewmark or rather s:th(1i)/creature/Jabberwocky/
22:20 mtnviewmark replaces the imaginary-th creature with jabberwocky
22:20 wolverian wonderful :)
22:20 * mtnviewmark thinks more than 1/2 the fun of perl6 is coming up with the examples....
22:21 wolverian still looks like i alone is fine, doesn't it, thoguh?
22:21 wolverian s/guh/ugh/
22:21 braceta left #perl6
22:22 [particle] yes, i is a term
22:22 Whiteknight "yes, i am a term"
22:23 [particle] Whiteknight: SIGTERM
22:23 * Whiteknight segfaults
22:23 mtnviewmark std: $ale:2pounds:25p
22:23 p6eval std 25178: OUTPUT«00:02 33m␤»
22:24 mtnviewmark std: $ale:2£:25p
22:24 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Syntax error at /tmp/2wz74h0zVf line 1:␤------> [32m$ale:[31m2£:25p[0m␤    expecting signature␤00:02 33m␤»
22:24 mtnviewmark hmmm... suppose £ doesn't have the right Unicode properties
22:24 mtnviewmark to be the start of an identifier
22:25 mtnviewmark "That term i am. That term i am.  I do not like that term i am!"
22:27 [particle] std: :**th
22:27 p6eval std 25178: OUTPUT«############# PARSE FAILED #############␤Can't understand next input--giving up at /tmp/UK8jC5rRhI line 1:␤------> [32m[31m:**th[0m␤    expecting any of:␤        prefix or noun␤   statement end␤    statement list␤   whitespace␤00:02 32m␤»
22:27 [particle] std: **:th
22:27 p6eval std 25178: OUTPUT«00:02 32m␤»
22:28 mtnviewmark std: s:th(**)/foo/bar/
22:28 p6eval std 25178: OUTPUT«00:04 34m␤»
22:29 mtnviewmark it isn't clear to me what somethings can be in the construction   colon-something-adverb     as short cut for  colon-adverb-(-something-)
22:29 meppl good night
22:32 [particle] no, me neither. :NaNth, for example
22:34 mtnviewmark that sounds like a fantasy novel
22:34 mtnviewmark "The Secret of :NaNth"
22:34 [particle] quotepair:
22:34 [particle] | $<n>=(\d+) $<id>=(<[a..z]>+)         { $key = $<id>.text; $value = $<n>.text; }         {*}                                                     #= nth
22:35 [particle] so it's gotta be a \d, not even unicode digits allowed
22:35 mtnviewmark there ya go --- just digits
22:35 moritz_ \d *is* Unicode-digits
22:36 moritz_ <[0..9]> would be ASCII-digits
22:36 mtnviewmark oh man....    :二nd
22:36 [particle] ah, good
22:36 [particle] i've been waiting for that ;)
22:36 mtnviewmark but i'm pretty sure they wouldn't use the suffix nd!
22:37 mtnviewmark or :五th
22:37 mtnviewmark and   :⑤th  is just goofy!
22:44 turbov21 is there a list of modules/libraries that work with perl6?  (sorry to ask, but searching for Perl6+cpan only turns up the perl6 library for perl5)
22:44 mberends moritz_: (and others) First upload of SVG::Tiny for your perusal at http://github.com/eric256/perl6-examples/tree/master/lib/SVG
22:45 mberends turbov21: for you too maybe ;)
22:46 turbov21 Thanks! :)
22:46 mtnviewmark left #perl6
22:47 mberends there's more beginning at its parent dir http://github.com/eric256/perl6-examples/tree/master
22:50 turbov21 am i correct in thinking that, right now, most of what can be done with Perl6 is working with it's text-munging roots?
22:51 moritz_ turbov21: basically everything involving data structures can be accomplished with rakudo these days
22:52 moritz_ turbov21: it's just IO that's weak
22:52 mberends yes, HTTP::Daemon networks by shelling netcat
22:52 turbov21 which is the core of DBI, LWP, etc.  but that's cool.
22:53 hercynium joined #perl6
22:53 turbov21 just wanted to be sure i hadn't missed a wiki entry or such
22:53 moritz_ the core of DBI isn't IO, but calls to external functions
22:53 mberends today they ripped the old socket functions out of parrot
22:54 turbov21 moritz_, oh, i thought those calls counted as IO.
22:55 moritz_ turbov21: we could argue about that... ;-)
22:55 moritz_ from a VM point of view IO is a different subsystem than NCI
22:55 turbov21 No, no, no.  I'll accept your opinion as law.  (As a noob, i know my place.)
22:55 turbov21 :)
22:56 moritz_ turbov21: we're all noobs, at various degrees ;-)
22:59 Whiteknight joined #perl6
22:59 mberends turbov21, if you get contributor permission on perl6-examples, there's a long list of Perl 5 core modules that could be contributed in pure Perl 6...
23:07 turbov21 mberends, i need to familiarize myself with Perl6 first, but point taken.  I'll keep that in mind.
23:38 duke_leto left #perl6
23:39 lisppaste3 joined #perl6
23:44 mojoaxel joined #perl6
23:46 mojoaxel left #perl6
23:51 eternaleye joined #perl6

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

Perl 6 | Reference Documentation | Rakudo