Camelia, the Perl 6 bug

IRC log for #perl6, 2010-07-16

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

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

All times shown according to UTC.

Time Nick Message
00:00 jnthn "final classes"?
00:00 jnthn And...I think not. :-)
00:00 jnthn Being undefined is pretty much the definition of a type object.
00:01 tylercurtis sorear: What would "my SomeFinalClass $foo;" initialize $foo to?
00:03 sorear tylercurtis: a trap representation
00:04 sorear doing anything to the initial value of $foo would raise an exception
00:05 sorear SomeFinalClass.new, .ACCEPTS, etc could only work if the receiver was a literal
00:05 pmichaud S06:2485 says
00:06 pmichaud "The C<.my> method provides access to the lexical namespace associated with
00:06 pmichaud the given call frame's current position.  It may be used to look
00:06 pmichaud up ordinary lexical variables in that lexical scope."
00:06 pmichaud however, S02:2692 says
00:06 pmichaud " The caller's lexical scope is allowed to hide any
00:06 pmichaud user-defined variable from you.  In fact, that's the default, and a
00:06 pmichaud lexical variable must have the trait "C<is dynamic>" to be
00:06 pmichaud visible via C<CALLER>."
00:07 pmichaud is it intended that callframe() would provide access to my-scoped variables that CALLER would not?
00:08 pmichaud (and iiuc, part of the reason for having the "is dynamic" restriction on CALLER was to assist with optimization)
00:08 pmichaud (which would seem to be eliminated if callframe() is able to access the vars)
00:08 jnthn rakudo: { my $a; our sub foo() { $a } }; foo()
00:08 p6eval rakudo d51e99:  ( no output )
00:09 sorear callframe() is the optimizer's bogeyman
00:09 sorear in every way
00:09 jnthn rakudo: { my $a = 42; our sub foo() { $a } }; say foo()
00:09 p6eval rakudo d51e99: OUTPUT«42␤»
00:09 TimToady I think .my could filter to dynvars only, yes
00:09 pmichaud "could" or "does"  ;-)
00:09 pmichaud ?
00:09 TimToady doesn't much matter till someone does .keys :)
00:09 sorear especially since you can use it in a method and then bogey every single function that calls a method
00:10 sorear bonus points if you call the method .list and then methods that don't even syntactically look like they have method calls are hurt
00:10 TimToady but to the first approximation callframe is not required to show you anything the optimizer took away
00:10 pmichaud is it allowed to?
00:10 pmichaud show things the optimizer takes away?
00:11 pmichaud wait, rephrase
00:11 sorear oh that's nice.
00:11 pmichaud is it allowed to show things that an optimizer *might* take away?
00:11 Chillance joined #perl6
00:11 TimToady well, we could have .MY_DANGEROUS
00:11 TimToady gotta run
00:11 jnthn .oO( .MY_PRECIOUS )
00:11 TimToady bia2hr
00:11 TimToady &
00:12 pmichaud I'm looking at a spectest that is reading my variables from its caller, where those variables weren't declared 'is dynamic'
00:12 pmichaud so I'm wondering if that's a valid spectest
00:14 ashleydev joined #perl6
00:15 lue what's the difference between .WHO and .WHAT ?
00:15 pmichaud .WHAT returns the type object
00:15 pmichaud .WHO returns the package namespace (iirc)
00:15 jnthn correct afaik
00:16 jnthn pmichaud: I suspect not if those vars coulda been optimized away.
00:16 pmichaud I'm going to change the spectest to match S06, and someone else can figure it out a bit later.  :-)
00:16 jnthn pmichaud: Or if the spec is going to be clafiried to only show is dynamic ones.
00:17 pmichaud I think that .my should be limited to "is dynamic" vars.
00:17 jnthn +1
00:18 lue rakudo: my $a = 3+2i; say "{$a.WHAT}, {$a.WHO}"
00:18 p6eval rakudo d51e99: OUTPUT«Complex(), Complex␤»
00:19 pugssvn r31715 | pmichaud++ | [t/spec]:  Revise test dealing with ro-ness of .my() .
00:26 dalek rakudo: f3d9ab2 | pmichaud++ |  (3 files):
00:26 dalek rakudo: Remove LexPad type in favor of a simple Hash.
00:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​3d9ab28c618ed7881b32d266ff8b37115d87f93
00:26 dalek rakudo: 550831c | pmichaud++ | .gitignore:
00:26 dalek rakudo: Add lib/Safe.pir to .gitignore.
00:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​50831ca9928937a4893a52809082bafcf726951
00:26 dalek rakudo: c2ebda4 | pmichaud++ | src/Perl6/Actions.pm:
00:26 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
00:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​2ebda41619b745177333d9d6878bcca803226b6
00:34 axplock joined #perl6
00:34 axplock left #perl6
00:38 ingy is there an action that is called when a rule fails?
00:42 ingy like, ya know how when a rule passes and the action class has a method with the same name as the rule, it gets called, yeah?
00:43 ingy so, like, ya know, is there a action method name that is looked for when a rule fails?
00:44 rjbs joined #perl6
00:45 jnthn ingy: no
00:45 jnthn ingy: However, you can always add a | <?> or something at the end of the rule
00:45 jnthn ingy: Then it will have matched of course
00:45 jnthn ingy: But you can check whatever you need to in the action method.
00:46 jnthn ingy: oh, there's also
00:46 jnthn | { do stuff } <!>
00:49 ingy what's that do?
00:50 rjbs In declaring a class, I know I can say "has Str $.foo" to add an attribute of type Str.
00:50 rjbs How do I declare whether or not a defined value is required to instantiate an object?
00:51 jnthn ingy: | is "alternation" so "if you couldn't match everything before this" - actually maybe make it || so you get ordering for sure. { do stuff } is a closure where you can perform some action. <!> then makes the match be considered a failure. But by then you've run your code, which is what you wnated. :-)
00:52 plobsing joined #perl6
00:52 jnthn rjbs: In ideal Perl 6, has Str:D $.foo; *may* do it.
00:52 jnthn rjbs: Though Rakudo doesn't implement that just yet.
00:52 jnthn (:D is a kind of "type modifier" that implies "this type but defined")
00:53 rjbs So, if I want a Person class with a first name, last name, and optional middle name, what do I do?
00:53 ingy jnthn: thanks. I don't put code in my grammars, but i think that's helpful enough knowledge to get something working.
00:54 jnthn rjbs: Well, you could also choose to write a constructor that requires those be passed.
00:54 jnthn rjbs: That's be the way that catches it early
00:54 ingy what's the constuctor syntax?
00:55 jnthn method new(:$first_name!, :$middle_name, :$last_name!) { self.bless(*, :$first_name, :$middle_name, :$last_name) } or some such
00:55 jnthn (So make first_name and last_name required args.
00:55 jnthn )
00:55 rjbs Huh.  Okay.
00:55 ingy hi rjbs
00:55 rjbs Hallo!
00:56 ingy rjbs: what are you writing in p6?
00:56 rjbs I was going to write an example slide for my Moose tutorial, but now it looks like I won't.
00:56 rjbs Well, I probably still will.
00:56 ingy :)
00:56 pmichaud jnthn: ping
00:56 ingy for what conf? oscon?
00:57 jnthn rjbs: the :D constraint on the attribute declaration is probably the "shortest" way to do it, but we may have to go through some contortions to make it give a decent error message...
00:57 ingy pmichaud: ping with payload!
00:57 jnthn pmichaud: pong
00:57 rjbs ingy: yeah
00:57 pmichaud jnthn: the new add_phaser code seems to execute every phaser in the context of !YOU_ARE_HERE.  That doesn't seem right.
00:57 pmichaud ingy: pong
00:57 ingy pmichaud: nevermind :P
00:58 jnthn pmichaud: It's not, but it's righter than excuting them in no lexical context.
00:58 pmichaud I agree that BEGIN phasers may need to be !YOU_ARE_HERE.  I'm not sure about the others.
00:58 pmichaud The others should already have a lexical context -- the block in which they're declared.
00:58 jnthn pmichaud: Which is what we were doing (with all of them) before
00:58 pmichaud ?
00:58 jnthn pmichaud: Improvements welcome. :-)
00:59 jnthn pmichaud: Before you couldn't "say" in *any* of the phasers
00:59 jnthn pmichaud: Or use any built-ins.
00:59 pmichaud okay
00:59 pmichaud so that's the same "mainline doesn't have an outer context" issue, I guess.
00:59 jnthn pmichaud: What I've got us doing now is certainly not right. But it's less wrong.
00:59 jnthn Or at least, more useful :-)
00:59 pmichaud okay, got it.
01:00 pmichaud (could've used a comment that says "this isn't right but better for now."  But I'm also the last person to have justification to complain about lack of comments :-)
01:00 jnthn We can't get it Really Right without doing that whole static lexpad vs thing.
01:00 jnthn s/vs//
01:01 pmichaud I think if I just get it so that the mainline gets a very early outer, the rest of it will just work.
01:01 jnthn (comment) I can always add one. :-)
01:01 pmichaud at least as far as finding things in the setting goes.
01:01 jnthn pmichaud: OK. May still need it for BEGIN though
01:01 jnthn Until we make something better.
01:01 pmichaud right, BEGIN may need it.
01:02 pmichaud but only when being run at compile-time (i.e., not from a loaded module)
01:02 jnthn Well, BEGIN probably needs a "fake" lexical context building when being run at compile time
01:02 pmichaud right
01:02 jnthn That collects the lexicals it sets and later stashes them in the Right Place.
01:03 pmichaud anyway, my question is answered for now :-)
01:03 rjbs left #perl6
01:04 jnthn pmichaud: Having now fixed BEGIN up to be phaser-y, I can fix the disappearing user defined ops in pre-compiled code issue and mark that thingy in the ROADMAP done. :-)
01:04 pmichaud wfm!
01:04 jnthn Though I'm currently distracting myself improving the mmulti-method dispatch failure errors too 'cus they suck.
01:09 pmichaud afk # walk on the beach
01:13 dalek book: 3ae798c | chromatic++ | src/multi-dispatch.pod:
01:13 dalek book: Edited multi-dispatch chapter for clarity.
01:13 dalek book: review: http://github.com/perl6/book/commit/3a​e798c95344895c5e298d3acb98f435c33f61a9
01:14 [Coke] http://www.boingboing.net/2010/​07/14/colon-the-webs-punct.html
01:14 FardadJalili joined #perl6
01:15 pnate joined #perl6
01:16 jnthn For an article on punctuation, I love the apparently missing comma in the opening sentence.
01:21 sahadev joined #perl6
01:26 payload joined #perl6
01:29 skids joined #perl6
01:40 jnthn Sheesh, good errors take some effort.
01:43 jnthn dammit, I accidentally the lolspeak in the error too :/
01:49 sorear jnthn: :$first-name! doesn't required a defined value
01:49 jnthn sorear: I know
01:49 jnthn Guess you have to trust your consumers at some level... :-)
01:49 * sorear looks forward to "is required" being added to Perl6
01:50 sorear jnthn: it's easy in moose!
01:50 jnthn Traits are normally a list-ditch solution. :-)
01:50 jnthn *last
01:50 jnthn sorear: What does 'is required' do in Moose?
01:50 jnthn sorear: And what is it applied to?
01:51 sorear It causes attributes to require a value.
01:51 sorear or, to be a bit more precise:
01:52 sorear Moose attributes can be absent, or can hold any Perl 5 value (including undef)
01:52 sorear has foo => (isa => 'Str')  # This attribute can be absent, or can hold a Str (like Perl6 Str:D)
01:53 sorear Foo.new(foo => 'x')  # creates an object with the foo attribute present and 'x'
01:53 sorear Foo.new(foo => undef)  # creates an object with the foo attribute present and undef
01:53 sorear Foo.new()  # creates an object with the foo attribute not present
01:54 sorear the distinction is extremely useful for lazy attributes
01:54 sorear which use 'not present' for needing to be calculated, but once calculated can hold any p5 value
01:55 sorear 'isa' constrains only present values
01:55 sorear 'required' forces the attribute to be present, errors otherwise
01:55 sorear 'default' sets a value if the suppied thing is not-present, but _any_ offered thing (even undef) overrides
01:56 agentzh joined #perl6
01:56 sorear 'init_arg' allows you to choose a different key for the constructor, or undef to disallow constructor setting entirely
01:57 jnthn init_arg seems to have come straight from clos. :-)
01:57 sorear 'builder' is like default, but takes a method name instead, for big out-of-line stuff
01:57 tylercurtis CLOS++
01:58 sorear 'lazy' means that, if the attribute value is not supplied on construction, the default or builder will be called on the first read access
01:59 jnthn default sounds like has $.foo = 42; and builder sounds like has $.foo = $.method;
01:59 sorear it's funny.  I initially came to #perl6 wanting to experience the real thing, since I'm a Moose hacker, but now I'm pretty sure that Moose *is* the real thing and will wind up getting ported to Perl 6
02:00 tylercurtis Generally, ++ to adding any of the attribute stuff from Moose to Perl 6.
02:00 sorear triggers!  call this code block whenever an attribute is changed
02:00 jnthn sorear: Are all these things in Moose core, or some MooseX?
02:00 tylercurtis Preferably with a more pleasant syntax.
02:00 tylercurtis jnthn: Moose core.
02:01 sorear see: http://search.cpan.org/~doy/Moose-1.08​/lib/Moose/Meta/Attribute.pm#Creation ; http://search.cpan.org/~flora/Class-MOP-​1.03/lib/Class/MOP/Attribute.pm#Creation
02:02 sorear all the standard attribute traits are in one of those lists
02:02 jnthn *nod*
02:02 sorear the Moose notion of a trait is rather different from Perl 6's
02:02 jnthn Yes
02:02 sorear in Moose land, a trait is an attribute of a meta object
02:02 jnthn I'm know that. :-)
02:02 jnthn In Perl 6 a trait may end up adding an attribute to a meta-object
02:02 jnthn But it's up to whatever the multi candidate decides to do that handles that trait.
02:02 sorear has foo => (bar => 1, baz => 1)  -->  Attribute.new(name => 'foo', bar => 1, baz => 1)
02:02 lue wello o/
02:03 sorear yeah
02:03 sorear it mostly boils down to: Moose adds new traits by subclassing %*KNOWHOW<has>
02:03 sorear %?
02:04 tylercurtis What is %*KNOWHOW?
02:04 sorear tylercurtis: it's the Perl 6 compiler variable which tracks the lexically scoped current default metaclasses for various syntactic objects
02:05 sorear BEGIN { %*KNOWHOW<role> } returns an object which knows how to implement role declarations at that point
02:06 dalek rakudo: c80d2d9 | jonathan++ | src/ (2 files):
02:06 dalek rakudo: Start to improve multi-method dispatch failure errors. Now they include the
02:06 dalek rakudo: method name and the type name, which is somewhat awesomer, but not yet awesome.
02:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​80d2d903724a2ce84072e4d5472f33fd6a8e8a7
02:06 dalek rakudo: 7b26327 | jonathan++ | src/Perl6/Actions.pm:
02:06 dalek rakudo: Generalize add_phaser's argument list a little so it doesn't take the block to
02:06 dalek rakudo: add from the $/ it is passed. Also make it a method, not a sub.
02:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​b2632723acb878e0dba2a7653c3727054a03b11
02:06 dalek rakudo: b19a44e | jonathan++ | src/pmc/p (2 files):
02:06 dalek rakudo: If a multi-method dispatch fails, also dump the list of candidates, sorted as
02:06 dalek rakudo: the dispatcher would sort them, like we do for failed multi-sub dispatches.
02:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​19a44ebd7171b534d53f1b40fb96422093666b1
02:06 dalek rakudo: f74314f | jonathan++ | src/pmc/p6invocation.pmc:
02:06 dalek rakudo: Fix lolspeak-o.
02:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​74314f63b4b10b69b9b9d49993b5c8f8f6a133c
02:06 sorear in principle, you can lexically change the meaning of the object system with a well placed constant %?KNOWHOW = hash( %?KNOWHOW, :role<MyRoleHOW> );
02:07 sorear but this is not very specced at the moment
02:08 sahadev joined #perl6
02:09 tylercurtis Moose has CL-style :documentation? Nice.
02:12 jnthn sorear: Rakudo calls it %*HOW at the moment
02:12 jnthn rakudo: BEGIN { say %*HOW<class> }
02:12 dalek rakudo: b612d4a | jonathan++ | src/ (4 files):
02:12 dalek rakudo: REJECTS is gone from the spec, so toss it from Rakudo too.
02:12 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​612d4a63199b36316094add07485e0767f39d74
02:12 p6eval rakudo c2ebda: OUTPUT«===SORRY!===␤Null PMC access in invoke()␤»
02:12 jnthn huh
02:13 jnthn rakudo: BEGIN { say 'alive' }
02:13 p6eval rakudo c2ebda: OUTPUT«alive␤»
02:13 jnthn rakudo: BEGIN { say %*HOW }
02:13 p6eval rakudo c2ebda: OUTPUT«Hash[0x75e82b0]␤»
02:13 jnthn Oh
02:13 jnthn Think it's a Parrot hash leaking in.
02:15 sorear well it *is* defined in NQP
02:16 * sorear is rewriting primitives from a stack-based IR to a tree-based IR.  Out with the line noise, in with the fingernail clippings?
02:33 Sarten-X joined #perl6
02:36 meteorjay joined #perl6
02:38 ashleydev joined #perl6
02:47 jnthn phenny: tell pmichaud is there anything you want to salvage from this patch? http://rt.perl.org/rt3/Tic​ket/Display.html?id=73148 If not, close ticket. :-)
02:47 phenny jnthn: I'll pass that on when pmichaud is around.
02:47 dalek rakudo: aea8165 | jonathan++ | src/pmc/perl6multisub.pmc:
02:47 dalek rakudo: Remove long-commented out code that we don't need.
02:47 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​ea8165a6d34ecb6f34ff3d60ac398a5e83278c8
02:52 lue Are there any tips to finding the issue when you break something as simple as print ?
02:52 lue [I'm not a master in debugging...]
02:53 jnthn lue: Take your patch out and then add it back piece by piece to try and narrow down what caused the breakage
02:53 jnthn lue: Breaking print/say is...well...ouch
02:54 jnthn lue: Normally it boils down to somehting broken with regard to initialization, or soemthing broken in dispatch.
02:57 lue I only did two things, so fortunately that wouldn't take too long. # and that fact it's something as unrelated as =:= is not helping :)
02:58 jnthn Yes, it's...odd
02:58 jnthn It's also 5am here though so probably I should sleep when this spectest run is done. :-)
02:58 lue huh, I don't remember modifying the grammar (mentioned after reset).
03:00 lue jnthn: I think I may have inherited your bad sleeping habits from a while back. I'm starting to stay up 'til around midnight, 1am every night :)
03:00 jnthn What's mentioned after reset is just the last change before you did anything, not a change of yours.
03:00 jnthn lue: huh...I stay up until 1 when I'm being well behaved. :-)
03:01 lue you know which xkcd comic I'm thinking of right now, I bet :)
03:01 jnthn :-)
03:01 jnthn yay
03:01 * jnthn git pushes for the last time today
03:01 jnthn er, well
03:02 jnthn "today" :-)
03:02 felliott joined #perl6
03:03 lue I remember (thanks to git diff), the grammar mod was attempting to fix 'where', which I gave up :)
03:04 jnthn idem spat. Night all. o/
03:04 lue goodnight o/
03:04 dalek rakudo: 2348e0c | jonathan++ | src/Perl6/Grammar.pm:
03:04 dalek rakudo: Switch grammar augmentations to work like a BEGIN phaser. Fixes issues relating
03:04 dalek rakudo: to user defined ops and pre-compilation, as well as makes things overall a bit
03:04 dalek rakudo: cleaner.
03:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​348e0cc51ce3d223d9868cbfb6af08191719f55
03:04 dalek rakudo: 0680fc2 | jonathan++ | docs/ROADMAP:
03:04 dalek rakudo: Move operating overloading to done section of ROADMAP now that the pre-comp
03:04 dalek rakudo: issues are dealt with.
03:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​680fc22f82de3d51c3d098288ce1ef475559889
03:06 lue rakudo: multi sub circumfix:<Ω Ω>($a) { say $a }; Ω3Ω
03:06 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Cannot take substr outside string␤»
03:06 lue rakudo: multi sub circumfix:<Ω Ω>($a) { say $a }; Ω 3 Ω
03:06 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "\u03a9 3 \u03a9"␤»
03:08 sahadev joined #perl6
03:25 FardadJalili joined #perl6
03:26 FardadJalili how can I invoke a method of a parent class in its child?
03:27 sorear nextsame;
03:28 FardadJalili sorear: thanks.
03:50 felliott joined #perl6
04:24 cjk101010 joined #perl6
04:30 songmaster joined #perl6
04:38 songmaster rakudo: my %a; say %a<a> :exists ?? "Yes" !! "No"
04:38 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "say %a<a> "␤»
04:39 tylercurtis std: if 5 sub ($a) { say 'does this work?'; }
04:39 p6eval std 31715: OUTPUT«[31m===[0mSORRY![31m===[0m␤Missing block at /tmp/iXjqCBJD10 line 1:␤------> [32mif 5 [33m⏏[31msub ($a) { say 'does this work?'; }[0m␤    expecting any of:␤    bracketed infix␤  infix or meta-infix␤Parse failed␤FAILED 00:01 117m␤»
04:39 songmaster rakudo: my %a; %a<a>=0; say %a<a> :exists ?? "Yes" !! "No"
04:39 * tylercurtis didn't think it would.
04:39 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "say %a<a> "␤»
04:40 tylercurtis rakudo: my %a; %a<a> = 0; say ($a<a> :exists);
04:40 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 20␤»
04:40 tylercurtis rakudo: my %a; %a<a> = 0; ($a<a> :exists ).say;
04:40 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "($a<a> :ex"␤»
04:42 songmaster I don't think the :exists adverb works.  There are no tests for it (S02), unlike the :kv adverbs.
04:42 tylercurtis rakudo: my %a; %a<a> = 0; ($a<a> :kv).say;
04:42 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "($a<a> :kv"␤»
04:42 tylercurtis rakudo: my %a; %a<a> = 0; ($a<a>:p).say;
04:42 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "($a<a>:p)."␤»
04:43 tylercurtis rakudo: my %a; %a<a> = 0; (%a<a>:p).say;
04:43 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "(%a<a>:p)."␤»
04:43 tylercurtis rakudo: my %a; %a<a> = 0; (%a<a> :delete).say;
04:43 p6eval rakudo b612d4: OUTPUT«===SORRY!===␤Confused at line 20, near "(%a<a> :de"␤»
04:43 TimToady rakudo basically doesn't do adverbs yet
04:43 TimToady you'll have to call a method on the container object
04:43 songmaster Thx, was just checking...
04:45 TimToady rakudo: my %a; %a<a> = 0; %a.delete('a').perl.say
04:46 p6eval rakudo b612d4: OUTPUT«0␤»
04:46 TimToady at least it looks like it returns the value
04:48 tylercurtis TimToady: do you know if any implementation does adverbs correctly yet?
04:49 TimToady well, viv correctly translates them to Perl 5 for the implementation of STD
04:49 bcubas joined #perl6
04:49 TimToady because the standard grammar uses :delete and :exists
04:50 TimToady and STD parses them correctly, obviously
04:50 TimToady or viv wouldn't be able to do that
04:51 szabgab rakudo: my @x = 1..3; for @x -> $a, $b { say $a }
04:51 p6eval rakudo 0680fc: OUTPUT«1␤3␤»
04:53 szabgab oh, I was expecting StopIteration here
04:53 TimToady theres a test in ./spec/S02-builtin_data_types/autovivification.t but most of the :exists seem to be S05 tests
04:54 TimToady rakudo: my @x = 1..3; for @x -> $a, $b? { say $a }
04:54 p6eval rakudo 0680fc: OUTPUT«1␤2␤3␤»
04:54 TimToady looks busted
04:56 TimToady that one should say 1,3
04:57 rv2733 joined #perl6
04:58 szabgab my version of Rakudo is old as at least the former works
04:58 szabgab I wonder if I should upgrade now :)
04:59 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); say %x.perl
04:59 p6eval rakudo 0680fc: OUTPUT«{"b" => ["b"], "c" => ["c"], "a" => ["a", "A"]}␤»
04:59 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k { say $k }
04:59 p6eval rakudo 0680fc: OUTPUT«a  a A␤b    b␤c      c␤»
04:59 szabgab so this us busted too?
05:00 szabgab so is this busted too?
05:00 TimToady rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k { say $k.WHAT }
05:00 p6eval rakudo 0680fc: OUTPUT«Pair()␤Pair()␤Pair()␤»
05:00 TimToady that seems okay
05:01 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k, $v { say $k }
05:02 p6eval rakudo 0680fc: OUTPUT«b  b␤a      a A␤»
05:02 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k, $v { say $k.WHAT }
05:02 p6eval rakudo 0680fc: OUTPUT«Pair()␤Pair()␤»
05:02 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); for %x.kv -> $k, $v { say $k.WHAT }
05:02 p6eval rakudo 0680fc: OUTPUT«Str()␤Str()␤Str()␤»
05:03 szabgab rakudo: my %x = <a A b c>.classify( { .lc } ); for %x.kv -> $k, $v { say $k }
05:03 p6eval rakudo 0680fc: OUTPUT«c␤a␤b␤»
05:04 szabgab thanks, I need to upgrade :)
05:06 tylercurtis TimToady: how are operator adverbs defined?
05:09 TimToady they just turn into extra named args to the operator, so postcircumfix:<{ }>($array, **@subscripts, :$exists) {...} or some such
05:09 macdaddy joined #perl6
05:10 tylercurtis I thought that might be the case, although it does not make implementing :ok sound simple.
05:10 cognominal about #76514 and masak 18:29, now I am convinced. We can close the bug.
05:11 TimToady :ok is not likely to be done that way, for that reason
05:11 cognominal thx for your feedback.
05:11 TimToady (if we ever do :ok)
05:13 TimToady :ok would likely end up hardwired in the compiler, much like *.foo
05:14 szabgab I have a directory with a efw subdirs that are the same name just in different case and windows does not like that, I was trying to locte them:
05:14 szabgab rakudo: my %h = qqx{ls -1}.split("\n").classify({ .lc }).grep({ say .key if .value != 1})
05:14 p6eval rakudo 0680fc: OUTPUT«Operation not permitted in safe mode␤  in 'Safe::forbidden' at line 2:/tmp/S8XKVyBqKe␤  in main program body at line 20:/tmp/S8XKVyBqKe␤»
05:14 szabgab rakudo: my %h = <a A b c>.classify({ .lc }).grep({ say .key if .value != 1})
05:14 p6eval rakudo 0680fc: OUTPUT«a␤»
05:14 szabgab rakudo: <a A b c>.classify({ .lc }).grep({ say .key if .value != 1})
05:14 p6eval rakudo 0680fc:  ( no output )
05:17 TimToady +.value maybe
05:17 tylercurtis Makes sense, especially since it wouldn't really need to modify the behavior of the op; just check its result.
05:18 TimToady though != should imply +
05:27 jakk joined #perl6
05:30 TimToady thunk &
05:46 sahadev left #perl6
05:49 moritz_ phenny: tell pmichaud I'm confused by r31715, "Revise test dealing with ro-ness of .my()". The comment you added is the contrary of th test code. I agree with the comment, not with the code
05:49 phenny moritz_: I'll pass that on when pmichaud is around.
06:00 moritz_ phenny: tell pmichaud also the last test now has a very misleading test message
06:00 phenny moritz_: I'll pass that on when pmichaud is around.
06:01 pugssvn r31716 | pmurias++ | [mildew] --no-wrap-in-block option
06:02 pugssvn r31717 | pmurias++ | [smop] use --no-wrap-in-block option to fix regressions
06:10 uniejo joined #perl6
06:27 dalek rakudo: 0b3a0ec | (Martin Berends)++ | tools/test_summary.pl:
06:27 dalek rakudo: [tools/test_summary.pl] use $*VM<config><revision> instead of %*VM...
06:27 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​b3a0ec9d7089c6f872d915a1e2b6d97a515f224
06:32 cxreg mberends: even though zavolaj is broken, i'm pretty sure Pg works and the test passes, so I'm thinking I'll merge it
06:35 mberends cxreg: I agree, your Pg passed 24 tests out of 32 over here, the remainder were minor points.
06:36 cxreg ok, pushed
06:37 mberends :) that zavolaj bug has resisted about 10 attempted patches over here
06:38 moritz_ mberends: did you bisect rakudo?
06:38 cxreg yikes
06:38 cxreg moritz_: i'll do it
06:39 mberends moritz_: I won't have time to bisect. Some revisions will need Parrot rebuilds too. cxreg++ for volunteering :-)
06:45 cxreg mberends: the nice thing about bisect is that you write a script and let git do all the work for you
06:45 * cxreg has one almost ready
06:48 mberends cxreg: I had not quite figured out what that script would need to do, factoring in parrot revisions and the database tests.
06:48 sorear what would be cool?  git trisect
06:49 sorear L  L+(H-L)/3  L+2*(H-L)/3  H
06:49 moritz_ what would that doo? :-)
06:49 sorear not quite as efficient, but makes up for it in parallelism
06:49 sorear since rakudo builds only use one core
06:49 sorear wonder if anyone's done it.
06:49 mberends 8 cores, 9-sect?
06:50 moritz_ would imply multiple checkouts too
06:50 moritz_ git n-sect :-)
06:50 moritz_ spoken "git insect" :-)
06:51 baest joined #perl6
07:06 pmurias joined #perl6
07:08 cxreg ok, it's running.  expects to take roughly 7 builds
07:08 cxreg which should take what, 3 hours? :/
07:12 moritz_ remember to re-gen Zavalaj.pir after each rakudo compilation
07:12 cxreg yep
07:13 sorear woah, for once I don't have the slowest computer in the room
07:13 cxreg sorear: i think there's something wrong with cpufreq on this box, i cant get it to go over 800mhz
07:15 moritz_ the intel pentium M cpufreq stepping always worked well for me under linux
07:15 cxreg this is a core 2 duo
07:15 * cxreg shrugs
07:16 * moritz_ doesn't have experience with those
07:17 sorear _this_ is a first stepping Pentium 4 from 2003
07:17 mberends cxreg: the kind of script you've made might be generally useful in rakudo/tools/, if you can abstract out the <test> part.
07:17 sorear (my history sucks, don't trust the dates, but cpuid agrees on the model bit)
07:19 cxreg mberends: it's pretty lousy :)
07:19 dalek rakudo: d0df858 | moritz++ | src/Perl6/Compiler.pir:
07:19 dalek rakudo: report parrot revision in --version output
07:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​0df858ca7d692280d67f1370dcc507422b50fc4
07:20 Mowah joined #perl6
07:21 pmurias sorear: hi
07:25 moritz_ jnthn: I think that Perl6::Module::Loader.stub_lexical_imports needs to call Perl6::Grammar.gen_op (to make imported operators parse), but at that point we don't have a reference to it. Any idea what the best solution would be? Or should the call happen when we parse 'use' or 'need' instead?
07:46 pugssvn r31718 | moritz++ | [t/spec] tests for RT #76366, accessing lexicals through our-subs
07:49 cxreg down to 5 revs
07:54 snarkyboojum joined #perl6
07:56 pugssvn r31719 | moritz++ | [t/spec] tests for RT #74186, unfudge two similar tests, and switch to planless testing
07:58 moritz_ another two tickets down
08:01 xabbu42 joined #perl6
08:02 sorear it's kind of amusing seeing Perl 6 with 5-digit ticket numbers.
08:02 cxreg moritz_: it was the llsig branch
08:03 frettled sorear: and in short time, referring to a 4-digit ticket number will be like having a 4-digit user ID on Slashdot :)
08:03 arnsholt joined #perl6
08:05 sorear frettled: no, it's not that
08:05 moritz_ cxreg: that's what I feared :/
08:05 sorear we don't actually have lots of tickets; ticket numbers are -highly- inflated
08:05 cxreg moritz_: i'm down to my last 2 builds, should have the sha in a few mion
08:05 sorear basically the following things contribute towards our ticket numbers:
08:05 sorear * Perl 6 bugs
08:05 cxreg min
08:05 sorear * Perl 5 bugs
08:06 moritz_ * spam
08:06 sorear * Parrot bugs from the TPF days
08:06 sorear * All spam sent to perl.org
08:06 sorear or maybe just all spam sent to the report addresses
08:06 frettled sorear: so just like Slashdot. :)
08:07 pugssvn r31720 | moritz++ | [t/spec] tests for RT #75136: declaring a multi just returns the current candidate, not the whole set
08:09 moritz_ that one was fun to test
08:09 moritz_ it's a quite unusual bug report
08:09 japhb joined #perl6
08:13 frettled Hmm!
08:25 pmichaud good evening, #perl6
08:25 phenny pmichaud: 02:47Z <jnthn> tell pmichaud is there anything you want to salvage from this patch? http://rt.perl.org/rt3/Tic​ket/Display.html?id=73148 If not, close ticket. :-)
08:25 phenny pmichaud: 05:49Z <moritz_> tell pmichaud I'm confused by r31715, "Revise test dealing with ro-ness of .my()". The comment you added is the contrary of th test code. I agree with the comment, not with the code
08:25 phenny pmichaud: 06:00Z <moritz_> tell pmichaud also the last test now has a very misleading test message
08:26 sorear hello pmichaud
08:28 pugssvn r31721 | pmichaud++ | [t/spec]:  update callframe.t tests per comments from moritz_++ .
08:28 pmichaud moritz_: ping
08:35 cxreg o_O
08:35 cxreg bisect claims that commit 874adc3ef broke it
08:36 cxreg could be my script was inadequate due to interim build issues though
08:38 Ross joined #perl6
08:39 thebird joined #perl6
08:42 meppl joined #perl6
08:44 * cxreg updates the script and re-runs
08:45 sorear What's the difference between FIRST and START?
08:46 sorear Other than that FIRST is only legal in loops
08:46 dakkar joined #perl6
08:46 moritz_ pmichaud: pong
08:47 pmichaud moritz_: in d0df85, what happens for the revision number on parrot tarballs not obtained via svn?
08:47 pmichaud does it display  Parrot r0  ?
08:48 moritz_ pmichaud: it displays whatever parrot returns in the config hash
08:48 pmichaud okay, so r0 then.
08:48 pmichaud that seems lta
08:48 moritz_ good question though
08:48 moritz_ does parrot reports its release version somehow?
08:48 pmichaud at least, that's what Parrot used to report for non-svn checkouts.
08:49 moritz_ then I could check for revision == 0 and print the version number instead
08:49 pmichaud VERSION
08:49 dalek niecza: 4581f14 | sorear++ |  (2 files):
08:49 dalek niecza: Move rest of the small subs to CgOp
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/4​581f1411db01ff8895b73c32fb38e3d929972a6
08:49 dalek niecza: d45d477 | sorear++ |  (2 files):
08:49 dalek niecza: Move some of the MOP to CgOp
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/d​45d477a8c53567f5b7402a3b080b227d48902a7
08:49 dalek niecza: 0d2e83d | sorear++ |  (3 files):
08:49 timbunce joined #perl6
08:49 dalek niecza: Generalize scopedlex to also handle puts
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/0​d2e83dcbe08537e58cfd2808c3fef1bbeac445a
08:49 dalek niecza: 04a8475 | sorear++ |  (2 files):
08:49 dalek niecza: Make the syntax for unquoted names in Q:CgOp slightly more liberal
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/0​4a84755aa2062673114dca88592797597df3547
08:49 dalek niecza: 77809fa | sorear++ |  (3 files):
08:49 dalek niecza: Add some Huffmanny shorthands for Q:CgOp
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/7​7809fabd945a0f40ee705e657359dd3d7b997bd
08:49 dalek niecza: 2375faa | sorear++ | setting:
08:49 dalek niecza: Move the rest of the MOP to Q:CgOp
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/2​375faa72afec2481f74ca78feaad603edc808c6
08:49 dalek niecza: acb3c4e | sorear++ | Niecza/ (2 files):
08:49 dalek niecza: Retire NIL
08:49 dalek niecza: Now the CodeGen stack machine interface is only used by CgOp.pm
08:49 dalek niecza: review: http://github.com/sorear/niecza/commit/a​cb3c4e40768fe28260efca95f71c007a4820f65
08:50 pmichaud rakudo:  say $*VM<parrot><VERSION>
08:50 p6eval rakudo d0df85: OUTPUT«Any()␤»
08:50 pmichaud rakudo:  say $*VM<config><VERSION>
08:50 p6eval rakudo d0df85: OUTPUT«2.5.0␤»
08:51 pmichaud maybe always output VERSION, and add the revision number if known.
08:52 moritz_ ok, will do
08:59 snarkyboojum joined #perl6
08:59 sorear hello snarkyboojum
08:59 sorear I fixed the HFS+ issue
09:00 moritz_ no, you worked around it :-)
09:00 moritz_ HFS+ still has the issue
09:01 frettled What was the HFS+ issue?
09:01 snarkyboojum sorear: I saw that - much appreciated :)
09:01 moritz_ frettled: case insensitivity
09:01 frettled moritz_: oh, that one.
09:02 frettled moritz_: occurs in other toy file systems, too :)
09:02 moritz_ frettled: I know :-)
09:02 frettled But only HFS+ has perfected Unicode madness.
09:03 moritz_ madness in what way?
09:03 cxreg ask leonidas
09:04 frettled Executive (and therefore inaccurate) summary: Apple implemented Unicode support in their file systems before Unicode encoding was properly standardised.  Incompatibility ensues.
09:04 sorear you mean like, it's using a bizarre normal form?
09:04 moritz_ I dimly recall that macos x preserves decomposed normal form of umlauts entered with dead keys
09:04 moritz_ and doesn't normalize on access
09:05 moritz_ so if you copy&paste an &auml; from a web site it's a different character than one entered via keyboard
09:05 clintongormley joined #perl6
09:08 frettled It's a bit more complicated than that, but just a bit: http://en.wikipedia.org/wiki/HFS_Plus
09:10 frettled Ah, _there_ was the kerneltrap link: http://kerneltrap.org/mailarchi​ve/git/2008/1/23/593749/thread
09:10 pmurias joined #perl6
09:13 moritz_ frettled: thanks for the link, hilarious indeed
09:18 Sanitoeter joined #perl6
09:25 frettled np
09:27 sorear What's everyone's favorite Perl 6 microbenchmark?
09:30 sorear ... since when does "256 unicode characters" take up "512 bytes"
09:30 cono sorear: ([/] 1,2,3).perl.say
09:31 arnsholt sorear: UTF-16?
09:34 arnsholt pmichaud: I pushed a branch which gives nqp-rx given/when. The code should be ready for merge into master if it's a wanted feature
09:34 pmichaud arnsholt: url?
09:34 arnsholt http://github.com/perl6/nqp-rx/tree/given-when
09:35 sorear cono: I'm looking for something which takes a measurable amount of time to run.
09:35 moritz_ sorear: they count characters represented by 4 byte UTF-16 as 2 characters. d'oh.
09:36 cono sorear: ("A" ... "ZZ").perl.say
09:39 pmichaud arnsholt: can you make it work with the normal .CONTROL_BREAK exception instead of using a repeat loop?
09:41 pmichaud also, I'm concerned that many people will get thrown off by the fact that most of Parrot's built-in types don't understand smart matching.
09:41 pmichaud so things like      when "foo" { ... }   won't work.
09:41 arnsholt Yeah, that's tripped me up with ~~ as well a few times
09:42 pmichaud in that situation I think I'd almost prefer not to offer given/when at all rather than one that only works in limited cases.
09:42 arnsholt Yeah, that I can understand
09:43 moritz_ is .method_on_dollar_bang implemented?
09:44 arnsholt jnthn++ said he would look into if the new metamodel might make that less of an issue
09:44 arnsholt (I for one have my fingers crossed)
09:44 pmichaud I don't see how it can (more)
09:44 pmichaud for      when "foo" { ... }
09:44 pmichaud it would mean that "foo"  would have to have an .ACCEPTS method on it
09:44 pmichaud and I don't think the metamodel is dealing with that.  At least, I hope it isn't.
09:45 arnsholt True, true
09:45 arnsholt Another option would be to make the smart-match code do more than just invoking .ACCEPTS
09:45 pmichaud that gets... tricky
09:45 arnsholt That it does
09:50 arnsholt While you're here. I've an idea brewing to make at least some of Parrot's sub modifiers available in nqp-rx. Does that sound worthwhile?
09:50 arnsholt (Most notably, it'd be nice to have :vtable)
09:50 pmichaud to the extent that's to be done, it's to be handled via traits
09:50 pmichaud i.e.,   is vtable('...')
09:50 arnsholt Yeah, that's my conclusion as well
09:51 pmichaud I'd be happy to see an "is vtable" implementation.
09:51 moritz_ I hope you'll be using a cheating traits implementation
09:51 moritz_ because the "real thing" requires rather advanced multi dispatch
09:51 arnsholt I will definitely cheat the traits
09:51 moritz_ (probably more than parrot offers out-of-the-box)
09:51 pmichaud it can't assume the existence of   &trait_mod:<is>, no.
09:52 moritz_ pmichaud: any comments on my comments on your last spectest patch?
09:52 jferrero joined #perl6
09:52 arnsholt ATM my experiment code just has [is <trait=.colonpair>]* sandwiched in between the sig and the block
09:53 pmichaud moritz_: I modified the spectest.
09:53 moritz_ pmichaud: ok
09:53 pmichaud r31721
09:54 moritz_ it's much more consistent now, but I think still wrong
09:54 pmichaud which part do you think is wrong?  ;-)
09:54 moritz_ anyway, works for me
09:54 moritz_ that it's not dies_ok
09:55 pmichaud and you think it should be dies_ok because...?
09:55 pmichaud I think if the assignment is dies_ok, then the lookup must be as well.
09:55 moritz_ I didn't notice the unclarity in the spec when I read it, back when I implemented callframe()
09:55 pmichaud either $x is visible (and writable), or it's not visible.
09:55 moritz_ right
09:56 moritz_ anyway, I'm fine with leaving it as-is
09:56 pmichaud I'm willing to say it shouldn't be visible, and to modify the tests to agree with that, and to mark them as todo/skip
09:57 pmichaud but I was trying to use  .my  to fix the $/-in-subst-issue and that's what led me to that.  :-)
09:57 moritz_ right, we also use it in MAIN
09:57 moritz_ did you commit the $/-in-subst btw?
09:57 pmichaud no, there are other problems.
09:57 moritz_ :(
09:57 pmichaud other spectests fail, so it's going to need a more wholesome fix.
09:58 pmichaud I'll revisit it a bit later -- likely on the plane.
10:05 sftp_ joined #perl6
10:09 ive joined #perl6
10:19 sftp_ joined #perl6
10:29 * sorear removes 500 lines of code.  refactoring++
10:29 sorear also, out.
10:33 dalek niecza: 8a46a61 | sorear++ | C (2 files):
10:33 dalek niecza: Move most of the derived-operation logic from CodeGen to CgOp
10:33 dalek niecza: review: http://github.com/sorear/niecza/commit/8​a46a61f7e786924a96d2986a9cd0a1aa2bb5810
10:33 dalek niecza: dfbc2aa | sorear++ | C (2 files):
10:33 dalek niecza: Generalize call CgOps to support CPS calls too
10:33 dalek niecza: review: http://github.com/sorear/niecza/commit/d​fbc2aa7d6ed543afefa03bc086b93e7e5d93272
10:33 dalek niecza: c2bd41b | sorear++ | C (2 files):
10:33 dalek niecza: Start removing CPS helper function calls out of the primitive set
10:33 dalek niecza: review: http://github.com/sorear/niecza/commit/c​2bd41b7c25495893cdcae061fa4a19c097a208b
10:36 Mowah joined #perl6
10:37 agentzh joined #perl6
10:53 pugssvn r31722 | pmurias++ | [mildew] make a test correct
10:53 pugssvn r31723 | pmurias++ | [mildew] fix a bug
10:54 pugssvn r31724 | pmurias++ | [smop] better DUMPing, add support for %DUMP {... %} to the .ri language
10:54 user__ joined #perl6
10:55 masonkramer joined #perl6
10:59 colomon A method named 'infix:sym<O/>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role.
11:00 colomon ???
11:03 colomon jnthn: ping
11:16 moritz_ colomon: what are you doing to get that error?
11:16 colomon Trying to build Vector
11:17 colomon specifically, it's a .pm file trying to use the .pm where infix:<O/> is declared.
11:17 colomon changing the name does not change the error.
11:17 moritz_ oh
11:17 moritz_ do you have a precompiled .pir lying around?
11:17 colomon you mean, as the source of the problem, or so that you can look at it?
11:18 colomon (I did do a make clean)
11:18 moritz_ problem source
11:18 moritz_ well, jnthn fiddled with custom operators a bit
11:18 moritz_ and importing them is known to be broken
11:19 colomon Ah, I thought he was declaring that fixed.
11:19 moritz_ no, what he did was custom circumfixes
11:20 colomon "Move operating overloading to done section of ROADMAP now that the pre-comp
11:20 colomon issues are dealt with. "
11:21 moritz_ oh
11:21 colomon http://github.com/rakudo/rakudo/commit/2​348e0cc51ce3d223d9868cbfb6af08191719f55
11:21 jnthn oh hai
11:21 colomon o/
11:21 jnthn Yes, pre-comp *should* be fixed now.
11:22 moritz_ rakudo: BEGIN { @*INC.push: 't/spec/packages' }; use Exportops; say 5!
11:22 p6eval rakudo d0df85: OUTPUT«===SORRY!===␤Unable to find module 'Exportops' in the @*INC directories.␤(@*INC contains:␤  lib␤  /home/p6eval/.perl6/lib␤  /home/p6eval//p1/lib/parrot/2.​5.0-devel/languages/perl6/lib␤  .␤  t/spec/packages)␤»
11:23 moritz_ rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say 5!
11:23 p6eval rakudo d0df85: OUTPUT«120␤»
11:23 moritz_ rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say 3 yadayada 5
11:23 p6eval rakudo d0df85: OUTPUT«3..5␤»
11:23 colomon right, this seems to be a more subtle problem
11:24 moritz_ rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say  ¢5
11:24 p6eval rakudo d0df85: OUTPUT«5 cent␤»
11:24 moritz_ rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say  3 notthere 5 # not exported, should fail
11:24 p6eval rakudo d0df85: OUTPUT«Could not find sub &infix:<notthere>␤  in main program body at line 20:/tmp/g_Wzw_v3da␤»
11:25 moritz_ that's the wrong error message
11:26 jnthn moritz_: Grammar tweaks aren't done as mix-ins just yet.
11:26 jnthn moritz_: So they'll be a bit leaky still.
11:26 moritz_ jnthn: wfm, I'll just write a ticket :-)
11:26 jnthn moritz_: Primarily the fix I did solves things like, any operators we wrote in the core setting would get lost
11:27 jnthn Or at least, our ability to parse them would.
11:28 moritz_ std: 3 notthere 4
11:28 p6eval std 31724: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/OqesRAJTeM line 1:␤------> [32m3 [33m⏏[31mnotthere 4[0m␤    expecting any of:␤   bracketed infix␤  infix or meta-infix␤      statement modifier loop␤Parse failed␤FAILED 00:01 114m␤»
11:30 moritz_ jnthn: oh, I now see while imported-subs.t doesn't work
11:30 moritz_ use Exportops;
11:30 moritz_ eval_lives_ok '5!', 'postfix:<!> was exported...';
11:30 moritz_ fail
11:30 moritz_ eval_lives_ok executes in the context of Test.pm
11:30 jnthn Ah!
11:30 jnthn Yes, that is a fail
11:31 jnthn colomon: Where is Vector.pm so I can try and re-produce the error?
11:33 colomon http://github.com/colomon/Vector
11:34 colomon run ufo and make and you'll get it.
11:34 pugssvn r31725 | moritz++ | [t/spec] fix imported-subs.t
11:35 moritz_ one of you has the honor of add S06-operator-overloading/imported-subs.t to t/spectest.data, I currently don't have access to my ssh key
11:35 jnthn colomon: ufo don't work on Win32 :-/
11:35 jnthn bbi10
11:35 colomon the bug crops up making Nurbs.pm, the operator is imported from KnotVector.pm
11:41 dalek rakudo: 3576104 | (Solomon Foster)++ | t/spectest.data:
11:41 dalek rakudo: Turn on S06-operator-overloading/imported-subs.t, moritz++.
11:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​576104377b3fd636c8785fd66e521f8cb04c7f3
11:41 dalek rakudo: 43f15a9 | pmichaud++ | src/ (2 files):
11:41 dalek rakudo: Refactor phaser handling, add .loadinit to set mainline outer_ctx as early as
11:41 dalek rakudo: possible.
11:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​3f15a9296b51d0b6711d1ccca8673172c8506dd
11:41 dalek rakudo: a95517f | pmichaud++ | t/spectest.data:
11:41 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
11:41 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​95517fda292cf105be19f454be6ccb37e95c0c4
11:46 colomon jnthn: also, it seems like Vector.pm's infix:<+> is getting blocked by the core's infix:<+>, even after I declare it our multi sub infix:<+>(Vector $a, Vector $b where { $a.Dim == $b.Dim }) is export
11:52 dalek rakudo: 2317396 | pmichaud++ | src/Perl6/Actions.pm:
11:52 dalek rakudo: Eliminate obsolete %BEGINDONE.
11:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/2​3173960460b3ca3bc3f524e7ddebd60cfd2ade6
11:58 pmichaud jnthn: ping
12:00 colomon moritz_: is there a reason srand takes a Real instead of an Int in the spec?  I'm trying to sort out What Should Be Done with it...
12:01 jnthn colomon: ah, think I may have realized part of what I've broken...
12:01 jnthn pmichaud: pong
12:01 moritz_ colomon: I think the implementation should be free to either use a full Real for initialization, or truncate to Int if it doesn't make sense for the PRNG to use reals
12:01 pmichaud jnthn: just a status update
12:01 pmichaud I refactored add_phaser a bit tonight
12:01 moritz_ colomon: but if most PRNGs actually use an Int, I'd be OK with standardizing on Int too
12:01 * jnthn git pulls
12:02 pmichaud CHECK, INIT, END no longer go through !YOU_ARE_HERE
12:02 envi^home joined #perl6
12:02 pmichaud BEGIN does, but only for the immediately-executed-during-compile-time part
12:02 jnthn pmichaud: Do they still find subs in the setting?
12:02 pmichaud jnthn: they don't, and that's interesting.
12:02 jnthn argh!
12:02 jnthn So you broke what I fixed yesterday. :-(
12:03 pmichaud well, all spectests passed. (more)
12:03 jnthn Yes, because I'd not got to enabling any.
12:03 jnthn For the fixes.
12:03 pmichaud more to the point, the problem we're having with setting is unrelated to BEGIN.
12:03 pmichaud or to the phasers.
12:03 moritz_ rakudo: INIT { say  4 }
12:03 p6eval rakudo d0df85: OUTPUT«4␤»
12:04 pmichaud well, obviously not completely unrelated, but not tied to BEGIN itself.
12:04 pmichaud the other thing I added is that the mainline code gets an outer context immediately once it is loaded.
12:04 pmichaud so the fact that &say isn't being found is because that outer context isn't being set properly.
12:06 azert0x joined #perl6
12:06 jnthn pmichaud: The outer context of...what?
12:07 azert0x joined #perl6
12:07 pmichaud the mainline
12:07 pmichaud in something like
12:07 pmichaud INIT { say 4 }
12:07 pmichaud the outer block of the init closure should be the mainline code
12:07 pmichaud and the outer block of the mainline code is the setting
12:08 jnthn Right
12:08 jnthn But I think you'd just put something in to set the outer of the mainline to be the setting?
12:08 pmichaud I did that
12:08 azert0x joined #perl6
12:08 pmichaud before tonight, we were setting the outer of the mainline at the point where it was executed
12:08 pmichaud which is too late for BEGIN, CHECK, and INIT
12:08 jnthn Right.
12:09 pmichaud so, I added a loadinit that is setting the outer of the mainline at the point where it's loaded
12:09 pmichaud and for some reason it's not taking effect (working on that now)
12:09 jnthn The thing is that the capture_lex that the mainline body does on, say, the INIT block doesn't run until the mainline body does.
12:10 azert0x joined #perl6
12:10 pmichaud true, but the INIT block should autoclose
12:10 jnthn Yes, true
12:10 pmichaud which should at least get back to the setting.
12:10 jnthn Right.
12:10 jnthn But it doesn't seem to work out?
12:10 pmichaud not yet.  still working out why.
12:13 pmichaud also, is it supposed to be the case that the !class_init block takes place lexically inside of the bare block?
12:14 pmichaud i.e., in   class C does Foo { ... },  the !class_init code has the class block as its outer
12:15 jnthn pmichaud: I think that's deliberate. I don't recall why right away.
12:15 pmichaud okay.
12:15 jnthn pmichaud: looking at auto-close...hmm
12:15 pmichaud seemed weirdish when I was debugging the output.
12:15 takadonet morning all
12:15 jnthn It follows c->outer_ctx
12:16 takadonet wow! lots of commits
12:16 pmichaud something else is werid, too.
12:16 pmichaud here's the code I'm currently looking at
12:16 pmichaud http://gist.github.com/478296
12:17 jnthn pmichaud: In Sub.pmc the code in METHOD set_outer(PMC *outer) { does some stuff to try and find an outer_ctx to attach as well as an outer_sub
12:17 jnthn pmichaud: I ain't convinced it's going to work in the case we have though.
12:17 pmichaud in general I'm not using set_outer
12:17 pmichaud normally we just use set_outer_ctx
12:17 pmichaud (which sets outer_ctx directly)
12:18 jnthn OK
12:18 pmichaud in the gist I just nopasted... I'm trying to figure out what context is interposing itself between _block76 and _block64
12:19 pmichaud _block64 is the mainline
12:19 jnthn Yes, that looks...odd indeed.
12:19 pmichaud _block76 is the CHECK block
12:19 pmichaud _block76 has _block64 as its :outer
12:19 pmichaud so.... where's the intermediate context coming from?
12:21 jnthn That's very odd.
12:21 JimmyZ joined #perl6
12:22 jnthn pmichaud: autoclose seems to look at the ->outer_sub pointer
12:22 jnthn pmichaud: As well as the outer_context one
12:22 pmichaud yes, I also tried setting outer_sub... didn't seem to help.
12:22 pmichaud although I'm curious.... (checking something)
12:23 jnthn pmichaud: I'm trying to work out if auto-close coulda stuck in the extra frame.
12:24 jnthn pmichaud: Of note, auto-close does this:
12:24 jnthn outer_pmc   = current_sub->outer_sub;
12:24 jnthn if (PMC_IS_NULL(outer_pmc))
12:24 jnthn break;
12:24 jnthn Meaning that if outer_ctx is set but outer_sub is not, it will stop auto-closing.
12:25 pmichaud well, outer_sub is set.
12:25 jnthn The mainline's outer_sub is set?
12:25 pmichaud sure
12:25 pmichaud the mainline has an :outer -- it points to the wrapper block for the entire compilation unit
12:26 jnthn Right, so which block gets it's outer sub set to point to the setting?
12:26 jnthn The wrapper block?
12:27 ruoso joined #perl6
12:27 pmichaud the outer_sub isn't likely the problem.
12:27 pmichaud the likely problem is
12:27 jnthn Or more to the point - do we somewhow end up with a twiddled chain of outer_sub such that following it from e.g. a phaser -> mainline -> ... eventually gets us to the setting?
12:27 pmichaud outer_c = outer_sub->ctx;
12:28 pmichaud although that could be related to the outer_sub, yes.
12:28 pmichaud so....
12:28 pmichaud I did try setting outer_sub on the mainline as well, that didn't seem to help.  I'll try it again.
12:29 am0c joined #perl6
12:30 pmichaud oh, I might've had my "current_sub" from the wrong pointer
12:30 pmichaud building now.
12:32 jnthn $P1 = getattribute $P0, 'current_sub' # get attribute on a Null PMC segfaults?!
12:32 pmichaud (btw, in the new code it's trivially simple for me to get the phasers to run from the setting again -- I just disabled it for the refactor to try to get something a bit more "rightish")
12:33 pmichaud it might segfault due to a recursive handler, I guess.
12:33 jnthn ah, true
12:33 jnthn That sounds more likely
12:33 jnthn ...I hope!
12:34 pmichaud okay, changing UNIT_OUTER and YOU_ARE_HERE To force a 'set_outer' on the mainline doesn't seem to change anything.
12:35 jnthn That check example still shows the outer_ctx of the mainline is null?
12:35 pmichaud yes.
12:35 jnthn And we're absolutely certain that the code that does the set_outer was run before the CHECK block?
12:36 jnthn (could be good to stick in a debugging print statement just to be really sure)
12:36 pmichaud any chance
12:36 azert0x joined #perl6
12:36 pmichaud I can check that, yes.
12:37 pmichaud any chance that something is coming in and undoing the set_outer that I'm doing at :load :init ?
12:37 pmichaud like, a fixup or something like that?
12:38 jnthn I can't think of anything that would.
12:38 jnthn I'm still lost on where the phantom block comes from.
12:38 pmichaud me too.
12:39 pmichaud I'm thinking there must be an autoclose bug here somewhere.
12:40 pmichaud when I ask the CHECK block for its outer sub, it correctly reports _block64
12:41 pmichaud anyway, confirmed:  UNIT_CHECK is calling !YOU_ARE_HERE prior to invoking the CHECK block.
12:41 pmichaud sorry, UNIT_OUTER
12:41 jnthn OK, good to know
12:42 pmichaud and !YOU_ARE_HERE is calling both  set_outer and set_outer_ctx
12:42 jnthn !UNIT_OUTER is too?
12:43 pmichaud well, in this case !UNIT_OUTER calls !YOU_ARE_HERE
12:43 jnthn ah, oi
12:43 jnthn *ok
12:44 pmichaud I'm putting in a debug print to verify the outer is being set.
12:44 jnthn pmichaud: The phantom sub is of type Sub and claims to live in the perl6 namespace
12:45 jnthn pmichaud: ...and has subid post29
12:46 pmichaud oooh, subid
12:46 jnthn Which is the thing that add_phaser's it
12:46 jnthn However, its :outer(...) certainly does _not_ point to post29
12:46 pmichaud the :load :init block?
12:46 jnthn Yes
12:47 jnthn just add
12:47 jnthn $S0 = $P1.'get_subid'()
12:47 jnthn say $S0
12:47 jnthn After the line that prints the phantom sub
12:48 pmichaud come to think of it.... *why* does the CHECK block have the mainline as its outer in the first place anyway?
12:48 bluescreen joined #perl6
12:48 pmichaud I'd think it'd be the :load :init block, with the way the code is now.
12:49 pmichaud a-ha
12:49 jnthn pmichaud: I'm a tad confused what this is doing
12:49 jnthn .const 'Sub' $P65 = "26_1279284348.25"
12:49 jnthn .local pmc block
12:49 jnthn set block, $P65
12:49 jnthn "!UNIT_OUTER"(block)
12:50 jnthn (that's from the :load :init block)
12:50 pmichaud 26_  is the mainline
12:50 jnthn 26_1279284348.25 is the mainline
12:50 pmichaud "!UNIT_OUTER" is setting its outer context
12:50 jnthn Oh, wait, this is per-phaser code
12:50 jnthn OK
12:51 pmichaud in this case, !UNIT_OUTER falls through to !YOU_ARE_HERE, which should be setting the outer context of the mainline to the setting.
12:51 jnthn pmichaud: oh!
12:51 pmichaud (and !YOU_ARE_HERE no longer executes the block it is passed -- it simply sets the outer context)
12:51 jnthn .const 'Sub' $P77 = "24_1279284348.25"
12:51 jnthn capture_lex $P77
12:51 jnthn "!add_phaser"("CHECK", $P77)
12:51 jnthn What is that capture_lex going to do?
12:52 jnthn (it's being called from the :load :init block)
12:52 pmichaud oh, yes, that's likely the issue.
12:52 pmichaud anyway, that's also my "a-ha" above
12:52 jnthn Could it be causing the phantom frame?
12:52 pmichaud yes, likely
12:52 tewk joined #perl6
12:52 pmichaud more to the point, I realize now why I didn't like the passing-of-a-string to !get_phaser_result
12:53 pmichaud I want it to pass the block itself.
12:53 pmichaud because that way I can use a block reference for add_phaser, and let !get_phaser_result "own" the block itself.
12:53 jnthn That also works
12:53 pmichaud let me put that in place and see if things get better.
12:54 mathw yay! I stick my head in here for thirty seconds and I see people agreeing with each other. The world is good. At least, this bit of it.
12:55 felliott joined #perl6
12:56 felliott_ joined #perl6
13:01 pmichaud ugh, that messes things up with operator overloading
13:02 [Coke] in scrollback - all the parrot bugs in an rt queue were in the /parrot/ queue, not the perl6 queue. am I misunderstanding sorerar's complaint?
13:03 jnthn pmichaud: That's just treated like a BEGIN phaswer.
13:03 jnthn *phaser
13:03 pmichaud right
13:03 pmichaud except the result of the "make" isn't stored anywhere.
13:04 pmichaud which means the block gets lost.
13:04 jnthn The tricky thing is we need to do that stuff from the grammar, not the actions.
13:04 jnthn Otherwise --target=prase breaks on custom ops.
13:05 pmichaud I think --target=parse already includes the actions.
13:05 pmichaud otherwise a lot more would break.
13:05 jnthn Oh?
13:05 jnthn I was under the impression it didn't.
13:05 pmichaud it didn't used to.
13:06 pmichaud yes, --target=parse now includes the actions.
13:06 pmichaud oh, maybe not
13:06 pmichaud checking
13:07 pugssvn r31726 | mberends++ | [docs/talks/p6.dbi.odp] Perl 6 Database Interfacing slides for YAPC::EU 2010
13:07 pmichaud anyway, seems like --target=parse would fail on class declarations and other things like that
13:07 pmichaud (or anything else that requires BEGIN-time operations)
13:07 jnthn pmichaud: Those are explicitly installed by the parser.
13:08 jnthn pmichaud: See methods like add_my_name and add_our_name in Grammar.pm
13:08 pmichaud well, adding an operator may be a BEGIN phaser, but we really need a way to make sure the resulting phaser PAST node makes it into the output tree.
13:09 pmichaud and relying on it being in the .loadinit isn't good.
13:09 pmichaud (because it gets the lexical scoping wrong)
13:10 pmichaud I suppose I can just push it into @BLOCK[0][0]
13:10 jnthn pmichaud: I figured add_phaser made sure of that?
13:10 jnthn Oh, I guess not
13:10 jnthn d'oh
13:10 pmichaud but pushing into @BLOCK[0][0] has the same problem of --target=parse not working right
13:11 pmichaud because @BLOCK[0][0] doesn't exist in that case.
13:12 jnthn Ah yes
13:13 jnthn Could the return of add_phaser be somehow stached so the action method can get it and emit it?
13:13 jnthn Like capture it somehow?
13:14 [Coke] pmichaud: aren't you up super late? =-)
13:14 pmichaud [Coke]: yes, 3h15 here.
13:14 pmichaud I got started on fixing this and just didn't stop.
13:15 pugssvn r31727 | colomon++ | [spec] Add Real.rand to spec, as it was already in the spectests and Rakudo.  Change term:<rand> description to refer to it.
13:16 Sarten-X joined #perl6
13:16 pmichaud I'll try a slightly different approach.
13:19 pmichaud okay
13:20 pmichaud that got rid of the phantom sub
13:21 jnthn Progress. :-)
13:22 colomon rakudo: class Blue { }; say +(Blue.new)
13:22 p6eval rakudo 231739: OUTPUT«Can't take numeric value for object of type Blue␤  in 'Any::Numeric' at line 1316:CORE.setting␤  in main program body at line 6205:CORE.setting␤»
13:24 pmichaud ohhhhhhhhh!!!!!!!!!
13:24 pmichaud wait, nm.
13:25 jnthn aww!
13:28 pmichaud okay
13:29 M_o_C joined #perl6
13:29 pmichaud well, I need some sleep, so I think I'll have to suspend here for a bit.
13:29 jnthn pmichaud: OK
13:30 pmichaud I'm really not sure why the phasers aren't seeing the correct outer of the mainline.
13:30 jnthn pmichaud: Tricky problem. :-S
13:30 jnthn No, me either.
13:30 jnthn I'll let you know if I manage to track it down any further.
13:30 pmichaud it's clear to me that it *is* being set early on, but the phasers just don't follow the outer chain correctly.  It's undoubledly due to a problem with the ->ctx or ->outer_ctx pointers.
13:31 pmichaud Might try changing !UNIT_OUTER  so that it only sets the outer sub, and not the outer ctx
13:31 jnthn *nod*
13:31 jnthn Could be worth a try
13:31 pmichaud i.e., leave the outer_ctx null and see if autoclose gets it right
13:31 pmichaud should I go ahead and push my (untested) phaser change for operator declarations?
13:31 pmichaud (you can revert if it doesn't work out)
13:32 jnthn Yes
13:32 jnthn I'll see if it works.
13:32 pmichaud pushed
13:32 dalek rakudo: c7edce6 | pmichaud++ | src/Perl6/Actions.pm:
13:32 dalek rakudo: Make sure a phaser is part of its lexical outer, not the loadinit.
13:32 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​7edce628818608a960a23b9b71c2473f446552a
13:33 pmichaud I may not be able to look at this again until the plane ride in about 18 hours
13:33 pmichaud depends on what other activities are taking place today :-)
13:33 pmichaud but I'm pretty sure the current factoring is closer to getting things rightish :-)
13:33 jnthn That's fine - enjoy activities. :-)
13:33 pmichaud anyway, sleep here -- bbl
13:34 jnthn sleep well o/
13:35 tylercurtis joined #perl6
13:38 macdaddy joined #perl6
13:39 mberends 8 cores, 9-sect?
13:39 mberends ooops :)
13:39 jnthn Is that some geek version of 2 girls, 1-cup?
13:41 ashleydev joined #perl6
13:41 pmurias ruoso: hi
13:43 ruoso hi pmurias
13:43 pmurias ruoso: all tests pass (not counting the p5 interop)
13:44 pmurias ruoso: so properly packaging STD is the next thing?
13:45 ruoso Yes... and If we don't reach an agreement on how to do it, just include it in mildew as a private package
13:46 pmurias i don't think an agreement will be hard
13:47 ruoso sure... it's just that our schedule is limited... and this is an important requisite
13:57 rgrau` joined #perl6
13:57 pmurias ruoso: in which directory should i put the plugin and how should i call it (Dist::Zilla::Plugin::STD)?
13:58 tadzik joined #perl6
14:10 thebird joined #perl6
14:10 ruoso pmurias, er... I don't have experience with Dist::Zilla, so I trust your judgement
14:13 gbacon joined #perl6
14:19 ashleydev joined #perl6
14:23 Mowah joined #perl6
14:26 Trashlord joined #perl6
14:27 pugssvn r31728 | pmurias++ | start hacking on Dist::Zilla::Plugin::STD
14:28 pugssvn r31729 | pmurias++ | [Dist-Zilla-Plugin-STD] copy over the handwritten files
14:31 alester joined #perl6
14:33 pmurias ruoso: what will be next after the STD dist?
14:41 ruoso I think we can release the first version to CPAN
14:41 ruoso then add p5 interop support and release the second version
14:44 pugssvn r31730 | pmurias++ | [Dist-Zilla-Plugin-STD] the same set of file as in STD-dist is copied over
14:44 pugssvn r31730 | [STD] fix dist.ini
14:46 felliott joined #perl6
15:07 thebird joined #perl6
15:07 pugssvn r31731 | pmurias++ | [STD] port over the changes from STD-dist required for mildew to work
15:08 pmurias ruoso: i think we could release that version of STD on CPAN
15:09 Chillance joined #perl6
15:10 pmurias ruoso: if some one is unhappy about it I can always release version 0.02 improved with the feedback
15:12 [Coke] OOC, what's the module name?
15:13 [Coke] (just STD, or something more verbose?)
15:14 pmurias STD
15:15 pmurias [Coke]: TimToady wants to take STD as namespace so more standard grammars can live there like STD::P5, STD::Python
15:16 jedai_ joined #perl6
15:18 thebird joined #perl6
15:21 patspam joined #perl6
15:27 pmurias ruoso: http://www.cpan.org/modules/by-auth​ors/id/P/PM/PMURIAS/STD-0.01.tar.gz
15:27 ruoso pmurias, coool
15:29 pmurias AST:: in mildew should be renamed to Mildew::AST?
15:37 pugssvn r31732 | pmurias++ | [mildew] rename Emit::Yeast to Mildew::Emit::Yeast
15:44 arnsholt_ joined #perl6
15:50 cxreg jnthn: i bisected to find out what broken zavolaj
15:51 cxreg it was able to narrow it down to llsig between 0cbf6dcec and 4d2e620ad, but then i ran into compile problems
15:52 dalek rakudo: c513fbd | (Solomon Foster)++ | src/core/ (2 files):
15:52 dalek rakudo: Make sure calling .rand on a Complex number doesn't cause an infinite recursion.
15:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​513fbdf55d2d891a2e97e06ffc74a59904e0e0e
15:52 dalek rakudo: 9dae675 | (Solomon Foster)++ | src/core/ (3 files):
15:52 dalek rakudo: Adjust rand and srand to conform more to our current way of doing things.
15:52 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​dae67569fa11b8bfd77c0b454c5b4f05258a89c
15:54 justatheory joined #perl6
16:10 * moritz_ back
16:22 cxreg "Can not handle type " ~ $_.perl ~ " in an 'is native' signature." <- is that preferred to "... {$_.perl} ..." ?
16:22 jnthn .perl rather than $_.perl should work too
16:22 moritz_ even better: "Can not handle type $_.perl() in an ..."
16:23 jnthn Aye. Think that was NYI when Zavolaj was written. :-)
16:24 ruoso pmurias, yes... I think everything in mildew needs to be in the Mildew:: namespace
16:25 PZt joined #perl6
16:28 pyrimidine joined #perl6
16:30 tadzik is rakudo.org down?
16:31 moritz_ seems like
16:31 TimToady web server, anyway
16:31 TimToady does ping
16:32 moritz_ actually it pongs :-)
16:32 TimToady :P
16:32 TimToady :Pong
16:35 pmurias TimToady: i release STD to CPAN
16:35 pmurias * released
16:36 TimToady saw that; wondering how best to keep things in sync
16:36 pmurias in sync?
16:36 pmurias the distribution is generated by dzil build in src/perl6
16:36 pmurias STD-dist is dead
16:36 TimToady ah
16:37 PerlJam dzil++
16:38 pugssvn r31733 | pmurias++ | remove now useless STD-dist
16:39 ashleydev joined #perl6
16:47 vocal joined #perl6
16:57 timbunce joined #perl6
17:01 ashleydev joined #perl6
17:02 timbunce what's the name of the thingy that give commit access to github repros? (I want to mention it in a blog post)
17:02 timbunce (the irc thingy on this channel)
17:02 moritz_ timbunce: hugme
17:02 timbunce moritz_: thanks
17:03 moritz_ timbunce: what are you blogging about?
17:03 Tene hugme: hug timbunce
17:03 * hugme hugs timbunce
17:03 moritz_ hugme: show perl6-examples
17:03 hugme moritz_: the following people have power over 'perl6-examples': P⁣erlJam, T⁣imToady, [⁣particle], c⁣olomon, j⁣nthn, m⁣asak, m⁣oritz_, p⁣michaud. URL: http://github.com/perl6/perl6-examples/
17:03 timbunce java2perl6 - it's a biggie
17:03 timbunce member:hugme: show java2perl6
17:03 moritz_ hugme: add moritz to java2perl
17:03 hugme moritz_: ERROR: Can't add moritz to java2perl:  HTTP/1.1 401 Unauthorized
17:03 moritz_ still the same error
17:03 timbunce hugme: show java2perl6
17:03 hugme timbunce: sorry, I don't know anything about 'java2perl6'
17:04 moritz_ I have no idea what the problem is :(
17:04 moritz_ hugme: show java2perl
17:04 hugme moritz_: the following people have power over 'java2perl': P⁣erlJam, T⁣imToady, [⁣particle], c⁣olomon, j⁣nthn, m⁣asak, m⁣berends, m⁣oritz_, p⁣michaud, t⁣imbunce. URL: http://github.com/timbunce/java2perl/
17:04 moritz_ hugme: list projects
17:04 hugme moritz_: I know about Math-Model, Math-RungeKutta, MiniDBI, book, gge, hugme, ilbot, java2perl, json, modules.perl6.org, november, nqp-rx, nqpbook, perl6-examples, perl6-wtop, process-cmd-args, proto, pugs, star, svg-matchdumper, svg-plot, tardis, temporal-flux-perl6syn, try.rakudo.org, tufte, ufo, web, yapsi
17:04 timbunce ah, so the 6 got lost. ho hum
17:04 moritz_ huh
17:04 moritz_ that would explain why it doesn't work :-)
17:05 moritz_ hugme: reload
17:05 hugme moritz_: reloaded successfully
17:05 moritz_ hugme: add moritz to java2perl6
17:05 * hugme hugs moritz. Welcome to java2perl6!
17:05 moritz_ now it works. Yay
17:06 timbunce hugme: list projects
17:06 hugme timbunce: I know about Math-Model, Math-RungeKutta, MiniDBI, book, gge, hugme, ilbot, java2perl6, json, modules.perl6.org, november, nqp-rx, nqpbook, perl6-examples, perl6-wtop, process-cmd-args, proto, pugs, star, svg-matchdumper, svg-plot, tardis, temporal-flux-perl6syn, try.rakudo.org, tufte, ufo, web, yapsi
17:07 [Coke] huge doesn't respond to privmsg?
17:07 [Coke] *hugme
17:07 [Coke] hugme: hug me
17:07 * hugme hugs [Coke]
17:08 radu joined #perl6
17:09 radu rakudo: grammar Test1 { rule r { "test" } }; "test" ~~ /<Test1.r>/;
17:09 p6eval rakudo c513fb: OUTPUT«===SORRY!===␤regex assertion not terminated by angle bracket at line 20, near ".r>/;"␤»
17:09 radu hrm
17:09 radu am i doing something wrong?
17:10 radu I thought that was the syntax for matching against a grammar rule
17:10 tylercurtis rakudo: grammar Test1 { rule TOP { "test" } }; say Test1.parse("test")
17:10 p6eval rakudo c513fb: OUTPUT«test␤»
17:11 radu ok, but I just needed a boolean answer..To know if the string matches the rule, not to actually parse it
17:12 tylercurtis rakudo: grammar Test1 { rule TOP { "test" } }; say Test1.parse("test").Bool
17:12 p6eval rakudo c513fb: OUTPUT«1␤»
17:12 radu ok, thanks, that should work :)
17:15 timbunce Blog post: http://blog.timbunce.org/2010/07/1​6/java2perl6api-java-to-perl-6-api​-tranalation-what-why-and-whereto/
17:15 tylercurtis radu: the result of .parse, like the result of  $someStr ~~ $someRegex, is a Match object that stringifies to the matched text(although there are ways to limit what part of the matched text gets returned iirc), numifies to the numeric value of the stringification, and Boolifies(not sure what the standard term for this is) to whether or not it matched.
17:20 timbunce any feedback on that blog post is most welcome!
17:20 cdarroch joined #perl6
17:20 cdarroch joined #perl6
17:21 tylercurtis timbunce: it makes me want to stop working on what I should be working on and work on finding some nice Java library to port to Perl 6.
17:21 timbunce tylercurtis: perfect! :)
17:21 timbunce tylercurtis: how about JDBC? ;-)
17:21 szabgab joined #perl6
17:25 tylercurtis timbunce: I have Parrot stuff I need to get done so it can make it into 2.6.
17:25 [particle] timbunce: how about you leave him alone and let him finish his gsoc project :P
17:25 tylercurtis [particle]: actually, what I'm working on at the moment is updating the Squaak tutorial
17:27 [particle] tylercurtis++
17:33 tadzik a survey: what do you guys most dislike about Perl 5, which is now better in Perl 6?
17:33 TimToady almost everything in Perl 5 is attached wrong, except for lexical variables
17:35 PerlJam tadzik: I don't dislike much about Perl 5, but ... the regex syntax is clunky when you start using "advanced regex"
17:37 ashleydev TimToady: what does "attached" mean?
17:41 TimToady meaning you have to through too many links or symbol tables to get to the actual thing in question, when it should just be hanging directly off of something you already have access to
17:42 TimToady most of the globals, or the filehandles, or their attributes, for instance
17:42 TimToady subroutines should be lexically scoped, not found in global packages
17:42 TimToady and so on
17:43 TimToady commuting &
17:44 patspam joined #perl6
17:45 PerlJam "subroutiens should be lexically scoped" he says after 20ish years conditioning us that they live in the package's symbol table.
17:45 [particle] he might say something different if he were in #perl
17:46 * TimToady sees all, even while commuting...
17:46 Kodi joined #perl6
17:48 lue .oO(but we know #perl6 is where the Truth comes out!)
17:48 Kodi Probably what annoys me most about Perl 5 is that built-in subs and user-defined subs are such different animals. You can't say "my $f = \&abs", for instance.
17:48 * moritz_ wonders what TimToady commutes with, and if that means we can measure him exactly
17:49 * PerlJam invokes heisenberg
17:49 [particle] in perl 6, that's heisenberg()
17:50 lue while I was waffling between 5 and 6, what led me toward 6 was the use of -> in 5. I was too impatient to try and get it :)
17:50 lue .oO(or was it <- ?)
17:50 [particle] <== ? feed operators?
17:50 moritz_ lue: you mean dereferencing stuff?
17:51 PerlJam lue: that's another annoyance of perl 5 ... the programmer needs to know way too much about references.
17:51 cxreg PerlJam: the lack of having to know about it confuses me in 6 :)
17:51 lue no, things that other languages use the . for. (like Dog.new in 6 is Dog<-new or something in P5)
17:52 moritz_ PerlJam: having to know too much about references leads to threads such as http://www.perlmonks.org/?node_id=849713 :-)
17:52 moritz_ lue: that's simply -> instead of .
17:53 pmichaud aloha, #perl6
17:53 lue It doesn't help that I tried to jump right into using Qt in P5, and didn't bother looking at tutorials. But I was impatient (one of the virtues), and wanted to find something by the end of day.
17:53 lue Perl6 looked better :)
17:53 lue pmichaud: hello o/
17:54 cxreg lue: i wonder if you're the first person in the world to learn perl 6 without knowing perl 5
17:54 lue .oO(Well, I learned Python 3 without learning 2)
17:54 cxreg i'm not saying it's a bad thing, just that you might be the first :)
17:54 tylercurtis cxreg: I know a little bit of Perl 5. By which I mean, I've read tutorials and done hello, world.
17:55 lue rakudo: multi sub opcode(1) { say 1 }; multi sub opcode(2) { say 2 }; my $a = 2; opcode($a) # I love Perl6
17:55 p6eval rakudo c513fb: OUTPUT«2␤»
17:56 tylercurtis But I haven't really done actually written anything ~~ NonTiny & ActuallyWorks in Perl 5.
17:56 PerlJam lue: you'll like haskell too if that's all you care about :)
17:56 tylercurtis So, lue is not the only one. :)
17:58 lue It's why I stopped using Python. Imagine having to use 255 elseifs (and 1 initial if) O.o [they don't have switch statements]
17:58 lue As TimToady said, their OWTDI wasn't my OWTDI :)
17:59 jnthn pmichaud: morning
17:59 * tylercurtis has tried to learn Python several times.
17:59 PerlJam lue: perl 5 didn't have a switch statement until relatively recently, so most perl 5 people don't have to imagine it :)
17:59 cxreg is using the MMD code to handle that logic meant to be efficient?  what's the complexity?
18:00 tylercurtis For some reason, even though there's no specific thing that bothers me, I just can't stand to attempt to do anything significant in Python.
18:00 cxreg i wonder if you had thousands of multis, if it'd degrade
18:00 jnthn cxreg: Yes.
18:00 jnthn cxreg: Badly.
18:00 cxreg ok, i thought maybe so
18:01 lue and binding. You can't do binding in Python3 [which is a nightmare when you try to implement the NES memory map O.o]
18:01 dual joined #perl6
18:01 jnthn But really if you have an opcode map then the thing most likely to be fast and easy is to have an array of anonymous subs. :-)
18:02 lue jnthn: I only need hundreds :)
18:02 pmichaud <- packing for departure from paradise and return to the infernos of north texas
18:02 Kodi I emailed a patch to rakudobug about 24 hours ago and I still can't find it at rt.perl.org. Should I resubmit it?
18:02 jnthn lue: It's still not going to be very efficient to do it that way.
18:02 jnthn pmichaud: Aww.
18:02 jnthn hugme: hug pmichaud
18:02 * hugme hugs pmichaud; jnthn++
18:02 jnthn ...I get karma for getting hugme to hug people now?
18:02 colomon pmichaud: safe home
18:03 pmichaud ...and to be shortly replaced by the "we don't believe in A/C" inferno of Oregon :-)
18:03 jnthn Surely Oregon isn't quite as infernoous as Texas? :-)
18:03 cxreg jnthn: so rather like how you'd do it in perl 5, then
18:03 plainhao joined #perl6
18:04 lue rakudo: sub noop() { say 'noop' }; sub brk($a) { say "brk $a" }; my @a = &noop, &brk; @a[1](53)
18:04 jnthn cxreg: Or C. :-)
18:04 p6eval rakudo c513fb: OUTPUT«brk 53␤»
18:04 cxreg jnthn: heh.
18:04 lue \o/
18:04 cxreg jnthn: yeah, but C isn't FuTuRisTic!!
18:04 lue jnthn: it's gonna be 92F today :(
18:04 * cxreg jumps on a monorail
18:04 jnthn lue: It hit 31C here today apparently.
18:05 jnthn lue: That's not too far off 92F.
18:05 lue I prefer Celsius myself, but idiot weathermen keep using Farenheight :(
18:05 jnthn And yes, it's hot.
18:05 pmichaud rakudo:  say (101-32)/5*9
18:05 p6eval rakudo c513fb: OUTPUT«124.2␤»
18:05 pmichaud er
18:05 justatheory joined #perl6
18:05 pmichaud rakudo:  say (101-32)/9*5
18:05 p6eval rakudo c513fb: OUTPUT«38.3333333333333␤»
18:05 pmichaud today's high in Dallas  :-|
18:05 PerlJam 40 degrees just doesn't *sound* hot :)
18:06 jnthn pmichaud: omg
18:06 jnthn PerlJam: Heh, it does if you're European. :P
18:06 lue I have a thermometer in celsius, so I've been luckily conditioned to celsius.
18:06 pmichaud rakudo:  say (86-32)/9*5
18:06 p6eval rakudo c513fb: OUTPUT«30␤»
18:06 lue 40 = .oO(DO NOT GO OUTSIDE UNLESS YOU ARE A WORKING AIR CONDITIONER)
18:06 pmichaud today's high in Maui   :-)
18:08 lue .oO(when it's warmer in !Hawaii...)
18:09 jnthn pmichaud: Humid or not so?
18:09 pmichaud not.  68%
18:10 pmichaud (maybe a bit more where I'm at, about 30m from the shoreline :-)
18:11 tylercurtis lue: my uint8 @opTable[0xFF]; sub noop () { say "noop"; }; @opTable[0] = &noop; @opTable[0]() # Probably NYI.
18:11 tylercurtis rakudo: my uint8 @opTable[0xFF]; sub noop () { say "noop"; }; @opTable[0] = &noop; @opTable[0]() # Probably NYI.
18:11 p6eval rakudo c513fb: OUTPUT«===SORRY!===␤Malformed my at line 20, near "uint8 @opT"␤»
18:11 FardadJalili joined #perl6
18:11 PerlJam arrays are shapless still
18:12 lue uint8 ~~ NYI
18:13 * lue wishes there were specced a Uint8 type, so that it could be implemented in rakudo already
18:13 FardadJalili rakudo: my Int $a = 10; my Int $b = $a / 120; $b.say;
18:13 p6eval rakudo c513fb: OUTPUT«Type check failed for assignment␤  in '&infix:<=>' at line 1␤  in main program body at line 20:/tmp/br7Zi_pA9o␤»
18:13 FardadJalili isn't it supposed to cast it to Int itself?
18:13 tylercurtis FardadJalili: 10 / 120 is a Rat.
18:14 FardadJalili rakudo: my Int $a = 10; my Int $b = ($a / 120).Int; $b.say;
18:14 PerlJam what does "cast" mean?  truncate? round?  what?
18:14 tadzik rakudo: <a b c>.fmt("%s, %s and %s") #what is wrong in here?
18:14 jnthn FardadJalili: Int specifies a constraint, not a coercion.
18:14 p6eval rakudo c513fb: OUTPUT«0␤»
18:14 p6eval rakudo c513fb: OUTPUT«Insufficient arguments supplied to sprintf␤  in 'Any::join' at line 1␤  in 'Any::join' at line 1351:CORE.setting␤  in 'List::fmt' at line 2499:CORE.setting␤  in 'Iterable::fmt' at line 3470:CORE.setting␤  in main program body at line 20:/tmp/tN4yrQbtPn␤»
18:14 PerlJam FardadJalili: or ... given that there are multiple valid things that could happen, it's best to make the programmer be explicit about what they want :)
18:15 FardadJalili PerlJam: hmm, I think I got what you say :D
18:15 FardadJalili ok, thanks anyone.
18:19 * lue considers a Perl6 compiler for GCC
18:19 PerlJam %!PHASERS is global, yes?
18:19 tylercurtis lue: elaborate?
18:19 pugssvn r31734 | kyle++ | [purge-empty-dirs.pl] Delete empty directories.
18:19 PerlJam so, to implement things like FIRST, LAST, ENTER, LEAVE, it would need to be per-block?
18:21 lue eh, just a thought. A compiler for P6 -> Machine Byte Code™
18:21 jnthn PerlJam: I don't think that mechanism is expected to also handle those.
18:21 tylercurtis lue: I'm working on a very very very limited LLVM compiler for Perl 6.
18:21 tylercurtis lue: It can do things like "say 42;"
18:21 tylercurtis and "my $a = 42; say $a;"
18:22 meteorjay joined #perl6
18:22 pmichaud PerlJam: I'm guessing they'll need to be properties on the block.
18:22 pmichaud FIRST and LAST certainly want to act that way.
18:22 pmichaud ENTER could be compiled directly into the block
18:22 pmichaud LEAVE is... tricky in parrot.
18:22 PerlJam wait, why is LEAVE tricky?
18:23 pmichaud exceptions
18:24 TimToady LEAVE should run during stack unwind, not during exceptions
18:24 pmichaud what if an exception decides not to resume?
18:25 pmichaud (more to the point, Parrot doesn't really offer a "stack unwind", or didn't until very recently)
18:25 tylercurtis lue: it might even support "my $a = 42; my $b = $a; say $b;" That's pretty much it, though. Not even any negative integers."
18:25 TimToady we'll need to know whether the intent is to save the resume continuation or throw it away; throwing it away is equiv to unwind
18:25 pmichaud right
18:26 pmichaud and parrot doesn't have a way to "unwind" after an exception (again, caveat that NotFound++ may have implemented it recently)
18:26 TimToady it sort of turns into the "late DESTROY" problem
18:26 TimToady if you do it with GC only
18:27 pmichaud afaik, Parrot doesn't even offer a "execute on callframe GC"
18:28 lue tylercurtis: good luck to you!
18:29 seabird joined #perl6
18:29 TimToady you might need to run a separate unwind stack like p5 does; after the control transfer, you just pop the stack down to the new call level
18:29 pmichaud right
18:30 TimToady but it would be better if parrot could separate exception handler searches from unwinding
18:32 tylercurtis lue: http://github.com/ekiru/Bennu If you ever get bored of coding your NES thing and feel like working on it, you can have a commit bit. :P
18:33 tylercurtis hugme: list projects
18:33 hugme tylercurtis: I know about Math-Model, Math-RungeKutta, MiniDBI, book, gge, hugme, ilbot, java2perl6, json, modules.perl6.org, november, nqp-rx, nqpbook, perl6-examples, perl6-wtop, process-cmd-args, proto, pugs, star, svg-matchdumper, svg-plot, tardis, temporal-flux-perl6syn, try.rakudo.org, tufte, ufo, web, yapsi
18:36 PerlJam so ... I can use <?DEBUG> in the grammar, but is there something equivalentish for the AST that's being build by the actions?
18:36 PerlJam s/build/built/
18:39 pugssvn r31735 | colomon++ | [spec] Say a bit about Numeric operators and Bridge.
18:40 pmichaud PerlJam: what sort of thing are you looking for?
18:40 pmichaud with <?DEBUG>, you'll know that actions methods are being called whenever a rule passes
18:40 PerlJam I want to inspect the structure of the AST
18:41 TimToady colomon: what happens if they seed srand with 0.12345679 on the assumption srand wants 0..^1?
18:41 colomon Then they get srand(0)
18:41 TimToady that seems unfriendly, if they don't want to have to know the precision of srand
18:41 colomon I admit that's a fuzzy one to me.
18:42 colomon Well, current spec calls for a Real, and current Parrot only allows us an Int.
18:42 TimToady otoh, most people do want exact seeds so they'll be reproducable
18:42 colomon I'm not quite sure how to bridge that gap.
18:42 * jnthn afk, walk
18:43 colomon but I'm very willing to take good suggestions.
18:43 PZt joined #perl6
18:43 TimToady well, maybe Real->Int conversion denormalizes 0..^1 to 0..^2**$n, and they have to give an Int if they want to spec it directly
18:44 Trashlord joined #perl6
18:45 sbp joined #perl6
18:46 colomon jnthn: I think the Numeric grant work is done.  Unless one of us spontaneously thinks of something else to do for it.
18:47 pmichaud finale report done?
18:47 colomon TimToady: when you say denormalizes, are you thinking of just multiplying it by 2**$n, or something trickier.
18:47 colomon pmichaud: no
18:47 TimToady then 0.12345 and any integer do the expected thing, and we can warn on a non-Int >= 1
18:47 colomon pmichaud: I'm not sure what's involved there, thus pinging my grant manager.  ;)
18:48 TimToady for any given prng you'd hopefully be able to ask the max srand it wants
18:48 pmichaud look for copies of ours on use.perl and other places
18:48 colomon afk # whirlwind house cleaning
18:50 seabird joined #perl6
18:50 ingy greetings
18:51 seabird left #perl6
18:52 masak joined #perl6
18:53 masak ahoy, #perl6!
18:53 tylercurtis 'ello, masak, ingy.
18:53 masak my latest blog post is attracting more comments than I thought it would. http://use.perl.org/~masak/journal/40447
18:54 masak most exhibit an endearing combination of wanting to help and not understanding the whole problem :)
18:54 lue 'ello masak o/
18:55 masak \o
18:55 sorear good * #perl6
18:57 masak time to do some unmitigated hacking.
18:59 rv2733 joined #perl6
19:00 lue hai sorear o/
19:00 lue masak: how many EXP do I have? :)
19:01 masak lue: how many thousand lines of Perl 6 have you written? :)
19:01 lue .oO(I have at least 100...)
19:01 lue .oO(...from reading the spec)
19:02 masak nono, the 100 was from consulting the spec before you decide to propose a brilliant, novel idea.
19:02 lue darn!
19:03 masak and if you ever finish the spec, the mail archives, exigeses, and apocalypses are veritable gold mines of information.
19:04 masak I read most of A03 yesterday. the part about >>op<< hyperops is a hoot.
19:04 lue .oO[ anyone who has read the entire spec must've written it :) ]
19:04 ingy masak: I had an idea for ufo I wanted to talk to you about
19:05 masak ingy: all right.
19:05 ingy masak: as someone who now uses make test constantly, it is annoying that pir gets built in lib. Can we build it in a blib?
19:06 masak why do you find it annoying that pir gets built?
19:06 masak that's very desirable to me.
19:06 ingy tab completions fail
19:06 masak (because my test files would be very slow without the pir files)
19:07 ingy sure, just build them in blib
19:07 ingy and path blib for make test
19:07 ingy like p5 does
19:07 masak ok, you just explained how you planned to do all this.
19:07 masak you still haven't eplained why you find the pir building annoying.
19:07 ingy I did explain
19:08 masak I missed it.
19:08 tylercurtis masak: tab completion.
19:08 masak ah.
19:08 masak yes, that annoys me too :)
19:08 masak and now I see what you mean.
19:08 ingy well then, \o/
19:08 masak yes, maybe that's a good practice.
19:09 ingy you wanna fix or me?
19:09 masak when people say "tab completions fail" on this channel, it usually means they wrote to the wrong person :) that's why I didn't read it as an explanation. sorry :)
19:09 masak ingy: I'll make an attempt.
19:09 ingy k
19:10 masak ufo and the ufo component of pls are drifting dangerously far apart.
19:10 masak this is the divine punishment for copy-pasting code.
19:10 ingy heh
19:12 ingy masak: why is pls a branch of proto?
19:12 masak ingy: because the plan is to mutate the whole proto repo into a pls repo, as soon as pls is mature enough.
19:12 masak no need to keep proto around.
19:15 masak ingy: ah; doing the blib/ thing looks non-trivial :/
19:15 ingy masak: I can do it
19:15 masak please. I'll review your patch.
19:16 * jnthn back
19:16 jnthn yayitsmasak!
19:16 masak yayitsjnthn!
19:16 ingy masak: so why not just make pls a repo now?
19:16 masak ingy: because it still needs some love. mostly testing.
19:17 jnthn And Win32fixing.
19:18 ab5tract joined #perl6
19:18 masak is it just me, or is chromatic all but mentioning Perl 6 in this post? http://www.modernperlbooks.co​m/mt/2010/07/string-plus.html
19:18 tylercurtis masak: I just realized I forgot to attribute the Makefile I shamelessly stole from Yapsi for Bennu; so I added a comment to it linking to Yapsi's.
19:18 masak tylercurtis: cool; thanks.
19:22 justatheory joined #perl6
19:22 tylercurtis masak: Or maybe he's secretly a Lisper. :)
19:23 masak tylercurtis: in which way does Lisp help with that kind of string checking?
19:23 tylercurtis "If your language supports multiple dispatch, lets you define your own types, lets you override stringification, and can override interpolation for cases like these, you can do such things."
19:24 tylercurtis I'm pretty sure Common Lisp fits that description.
19:26 tomaw joined #perl6
19:26 tylercurtis Other than interpolation. But you can override the result of formatting, I think.
19:29 masak I won't claim that it wasn't Lisp chromatic thought of. :) but to me it sounded like a description of Perl 6, or maybe Perl 5 with Moose on the top.
19:29 moritz_ it's tagged with perl6, you know :-)
19:29 Tene I've never heard chromatic talk about using CL.
19:33 tylercurtis Tene: I did say secretly. :)
19:34 nadim joined #perl6
19:35 Tene I sometimes ponder alternate meanings of statements as if "secretly" had something to do with "secrete".  I guess that would be something like "so steeped in CL tha tit oozes out his pores" or something.
19:36 tylercurtis I don't think CL could fit through a pore. Maybe Scheme.
19:42 lue masak: apparently thunderbird wasn't autochecking, and I just now got the DateTime discussion. I can see where your annoyance came from :)
19:42 masak lue: it passed, though.
19:44 lue afk
19:46 sawyer_ joined #perl6
19:50 ingy masak: I'm pretty sure I can rewrite ufo as just a static Makefile :)
19:50 moritz_ platform indendently?
19:50 ingy moritz_: likely
19:51 masak ingy: that would be interesting to see.
19:51 ingy I'll do it on a branch
19:51 ingy :)
19:51 masak ingy: would it still retain the dependency ordering that the aliens talk about?
19:52 ingy masak: why do you do that?
19:52 masak ingy: waitwait, that's why I made ufo.
19:52 masak if we're not clear on that point, we need to talk. :)
19:52 masak oh, how quickly a project is adopted and then misunderstood :/
19:53 masak ingy: I do that because that's the fastest way to compile the .pm files.
19:53 ingy masak: I'll retain it then :)
19:54 masak ingy: if they're built in the wrong order, the parsing error messages are sometimes much harder to understand.
19:54 ingy anyway, I'm going to make the blib patch without changing the order first
19:55 masak sounds good.
19:56 masak pmurias: ping
19:59 moritz_ first success in my SEO quest: http://modules.perl6.org/ now comes up as third hit when search for "Perl 6 modules" with google
19:59 moritz_ (used to be no. 4)
20:00 masak \o/
20:00 M_o_C joined #perl6
20:01 jferrero joined #perl6
20:02 eternaleye joined #perl6
20:02 patspam joined #perl6
20:04 masak rakudo: say +"foo"
20:05 p6eval rakudo c513fb: OUTPUT«0␤»
20:05 masak A03 suggests this give the result NaN.
20:05 masak what's the rationale for giving the result 0?
20:08 moritz_ it's easier to do calculations with 0 than with NaN
20:08 masak sure, but "foo" isn't, and doesn't contain, a number.
20:09 tylercurtis moritz_:  is it desirable to do calculations with stuff that clearly wasn't intended to be calculated upon?
20:10 moritz_ tylercurtis: that surely depends on what you want to do
20:11 moritz_ tylercurtis: if you're a sysadmin summing over some fields in log files, it's better if a mal-formed contribution gives you zero
20:11 tylercurtis moritz_: true.
20:11 moritz_ instead of making your sum unusable by setting it to NaN
20:11 moritz_ if you parse financial data, it's probably the other way round
20:12 payload joined #perl6
20:12 payload left #perl6
20:13 tylercurtis Maybe there should be a :default() adverb for operators like + and ~, once adverbs work.
20:14 tylercurtis Or a pragma to turn numification of non-numerics into either a failure or an error.
20:14 tadzik http://rakudo.org/status -- in the progress graph, the thin dotted line is the number of spectests?
20:14 tadzik bah, haven't read the below description, my bad
20:20 moritz_ again I'm looking for ideas for next week's Perl 6 contribution
20:21 moritz_ rakudo: say {a => 1, b => 3}.pick(20, :replace)
20:21 p6eval rakudo c513fb: OUTPUT«bbbbbbbbaabbbbbbbbaa␤»
20:21 moritz_ rakudo: say {a => 1, b => 3}.pick(20, :replace)
20:21 p6eval rakudo c513fb: OUTPUT«abbabbbabaabbbabbbba␤»
20:23 rv2733 joined #perl6
20:25 masak someone points out on p6l that we cannot enforce well-ordering. that is correct and largely irrelevant.
20:27 moritz_ like many p6l threads :-)
20:28 * moritz_ considers showing resonance in his p6+physics talk
20:28 moritz_ probably a good idea, considering how fundamental it is
20:29 moritz_ for some physicists, particles are just resonances in some curves :-)
20:31 TimToady to others, particles are merely persistent accounting errors in the quantum foam
20:33 hanekomu_9 joined #perl6
20:36 pmurias masak: pong
20:38 masak pmurias: would LAST really work in -n and -p code? I thought LAST only made sense in a block attached to a loop.
20:38 moritz_ aren't -n and -p loops around your code?
20:39 masak moritz_: I haven't fully grokked YOU_ARE_HERE, but... to the extent I have, they aren't; not in the sense that would help here.
20:40 TimToady the intent is that -n and -p merely be loops around YOU_ARE_HERE in your setting
20:40 masak I understand that.
20:40 tylercurtis masak: Would it be relevant to point out that the well-orderedness or non-well-orderedness of Real types doesn't matter? :P It's not like there's a Real.minimal-Real-of-this-type-according-to-so​me-arcane-well-ordering-that-is-not-even-known method.
20:40 TimToady but yes, you can't rewrite code you don't have
20:40 masak does the spec for YOU_ARE_HERE guarantee that LAST ends up in a block that is actually a loop block?
20:41 rgrau` joined #perl6
20:41 TimToady whether it does or not, your UNIT should look like the loop block
20:41 masak tylercurtis: it's up to you. for me it seems to be enough to blow off steam here now and then. :)
20:43 masak tylercurtis: if one wonders where Perl 6 got its ivory-tower research-project reputation from, p6l is the answer.
20:43 TimToady top and bottom, were we talking type theory or quarks, I forget...
20:44 masak :)
20:44 * justatheory quarks
20:44 justatheory Pardon me.
20:44 TimToady still think they should have been truth and beauty
20:45 frettled TimToady: So that we could do truth-up and beauty-down searches?
20:45 * masak fondly remembers his last beauty-down search
20:46 * TimToady tries to figure out what a top-up or a bottom-down search would mean
20:47 [particle] is that when you found out beauty is truly more than skin-deep
20:47 * justatheory remembers to fondle beauty
20:47 [particle] bottom down searching sounds like the ... op
20:49 masak TOP { up } # there's top-up search
21:01 tadzik hmm. http://github.com/rakudo/rakudo/​blob/master/src/core/Rat.pm#L105 When is this sub actually used? If both arguments are Int, where is the Rat here?
21:02 moritz_ the rat is the return value
21:02 moritz_ rakudo: say (1/5).WHAT
21:02 p6eval rakudo c513fb: OUTPUT«Rat()␤»
21:03 tadzik hmm. So Rat is the only class which has infix</>(Int, Int), and that's how Rakudo knows what sub to use?
21:04 moritz_ yes... except that it's not defined in the Rat class
21:04 moritz_ it's outside the class body
21:04 moritz_ it just happens to be in the same file
21:04 tadzik ah, right
21:06 ingy hi masak
21:06 masak ingy: hi
21:08 ingy masak: I think you'll like the blib changes.
21:09 ingy masak: I will work on adding tests to ufo
21:09 masak oh my. :) ok.
21:09 ingy blib ended up being a short patch
21:09 ingy I tried all the targets
21:09 ingy seems to work
21:10 masak ingy++
21:10 * ingy works with make more than with perl :D
21:11 ingy I recently wrote a Module::Install-esque Makefile build system for Python
21:11 * ingy <3 make
21:11 frettled yay :)
21:11 * frettled <3 make, too
21:12 masak ingy: jnthn informed me that the 'patsubst' line (added byh @uasi) isn't very platform-independent.
21:12 masak ingy: not sure if it will turn out to matter.
21:12 jnthn It will if ufo is meant to work on Windwos. :P
21:12 ingy masak: it's good until it breaks, I always say
21:12 ingy anyway, tests would be the next step in that direction
21:13 ingy I have a shiny new perl6 test framework that might be helpful :)
21:13 tylercurtis moritz_: An idea for a "this week's contribution to Perl 6": write spectests for Path.
21:13 masak ingy: tests require modules, no?
21:14 ingy ?
21:14 masak ingy: I'm not 100% sure I want ufo to have an external dependency.
21:14 ingy masak: this is to define tests for ufo _developers_
21:14 ingy right now we have nothing
21:15 ingy to assert that we didn't break stuff
21:15 masak ingy: good point.
21:15 ingy I'll add it as `make devtest`
21:15 ingy or somesuch
21:16 masak ok, good.
21:16 tadzik hmm, did rakudo have some nice optimizations recently, or is the effect of building with --gen-parrot? Everything seems significantly faster for me
21:16 ingy thanks for making ufo
21:16 masak ingy: you're welcome. we'll see where it lands. :)
21:16 ingy :D
21:17 whiteknight joined #perl6
21:22 jnthn rakudo: class A {}; my $x = &A::nosuch
21:22 p6eval rakudo c513fb: OUTPUT«Null PMC access in isa_pmc()␤  in '&infix:<=>' at line 1␤  in main program body at line 20:/tmp/CLe8T9c5p_␤»
21:25 TimToady I'm thinking I'll change YOU_ARE_HERE to {YOU_ARE_HERE} so it always looks like a block to the setting
21:25 TimToady so -n looks like: for $*ARGFILES.lines {YOU_ARE_HERE}
21:26 masak is YOU_ARE_HERE a macro substitution rather than a function call?
21:26 TimToady where the {} represent UNIT
21:26 frettled . o O ( I get to write perl6 -nawe?  Yay? )
21:26 TimToady more like macro
21:27 masak then it just might work.
21:27 TimToady so the OUTER of the UNIT code is the for loop
21:27 TimToady sort of a post-declared macro
21:27 frettled masak: «It's a million-to-one chance, but...»?
21:27 TimToady it's actually the {*} in proto that gave me the idea
21:28 frettled TimToady: might actually be easier to parse for humans, too
21:28 TimToady even thought about using {*} there, but it's a little too lightweight
21:28 masak the OUTER? that won't work... FIRST, NEXT and LAST need to be in the loop block, not one block in.
21:28 TimToady they are in the loop block
21:28 frettled {HERE_BOY}
21:28 TimToady the use's UNIT is the loop block
21:28 TimToady *r
21:29 TimToady I'm saying the {} are part of the macro
21:29 masak ah, ok. now I see what you meant.
21:29 TimToady as with {*}
21:29 TimToady but syntactically you can poke it wherever a block is acceptable
21:29 TimToady and it stands in for the implicit block scope around UNIT
21:30 frettled That's pretty neat.
21:30 timbunce joined #perl6
21:30 TimToady so you can't think that foo(1); bar(2); {YOU_ARE_HERE}; is the same scope as foo
21:30 TimToady er, howeve ryou say it
21:31 TimToady it's as if the user's entire main program were textually substituted for the YOU_ARE_HERE
21:31 masak is there anything preventing someone from putting two {YOU_ARE_HERE}s in their custom setting?
21:32 TimToady other than that teh startup code is probably going to only look for one of them?
21:33 masak the startup code? that's the thing doing the macro substitution?
21:33 TimToady "hey, Mr SETTING, tell me your YOU_ARE_HERE."
21:33 TimToady it's not really a macro sub
21:33 TimToady it's just telling the UNIT its OUTER
21:34 TimToady before it starts to compile
21:34 masak ah.
21:34 masak last-minute lexical block stiching :)
21:34 TimToady and you can't have two immediate OUTERS
21:34 jnthn .oO( $block.OUTER = all(...) )
21:35 masak two {YOU_ARE_HERE} thingies wouldn't imply two immediate OUTERs. it'd imply two stiched-in blocks with the same OUTER.
21:36 masak or possibly the exact same stiched-in block referenced twice from the OUTER block.
21:36 TimToady at some point you should just be using eval instead of abusing the setting mechanism :)
21:36 cognominal Is there a bug report about error reporting in rakudo?   reporting at the granularity of block(oid) is too coarse.
21:36 masak TimToady: :) just exploring its edges.
21:37 TimToady cognominal: are you referring to parse errors?
21:37 TimToady it's a known problem, with a known solution :)
21:38 cognominal yup
21:38 jnthn cognominal: Not sure if there's a ticket. It's a known TODO though.
21:38 cognominal ok, thx for the answer
21:38 TimToady the problem basically boils down to the fact that if you don't have real LTM, you have to fake it with backtracking rather than panicking when you should
21:39 tylercurtis TimToady: is that known solution to implement enough of Perl 6 to run STD? :P
21:39 TimToady so rakudo often panics far to late
21:39 TimToady *too
21:39 masak how does the LTM engine react to mixing | and || ?
21:39 TimToady tylercurtis: got it in one :)
21:39 TimToady LTM only pays attention to the first leg of ||
21:40 cognominal I got tripped again by using  the old arithmetic if.
21:40 masak ok. makes sense.
21:40 TimToady usually you've already committed to an LTM before you hit a || though
21:40 masak colomon: what's an arithmetic if?
21:40 cognominal ?? ::
21:40 TimToady anyway, works out quite well in STD, which does have real LTM
21:41 cognominal oops
21:41 pyrimidine left #perl6
21:41 cognominal ?? !!
21:41 dalek book: 8ac231b | chromatic++ | src/multi-dispatch.pod:
21:41 dalek book: Added editorial note.
21:41 dalek book: review: http://github.com/perl6/book/commit/8a​c231b3815d089b41b27d29a460665996de4b19
21:41 masak cognominal: usually referred to as the "trinary operator".
21:41 TimToady arithmentic if is something else in Fortran
21:41 TimToady it's a three-way branch on neg,0,pos
21:42 cognominal indeed,   http://en.wikipedia.org/wiki/Arithmetic_IF
21:42 masak works great in conjunction with strcmp :P
21:43 tylercurtis given $foo { when * < 0 { doSomething() }; when 0 { doSomethingElse(); }; when * > 0 { doSomethingEvenMoreElse-y(); } } # Perl arithmetic if.
21:43 cognominal I thought it was called that way in C. Don't have a K&R around though to verify
21:44 masak cognominal: it's not a very good name. there's nothing arithmetic about it.
21:44 TimToady in Perl 5:  goto ['neg','zero','pos'][($a cmp $b)+1]
21:45 TimToady er, make the first [] ()
21:45 TimToady though maybe that works
21:46 tylercurtis TimToady: Wikipedia seems to suggest you can supply any numeric expression to arithmetic if.
21:46 TimToady buubot: print eval ['neg','zero','pos'][1]
21:46 buubot TimToady: No factoid found. Did you mean one of these: [prints it funny =( jsc told me 'new Boolean("x")'] [prints the last expression that]
21:47 TimToady buubot: eval ['neg','zero','pos'][1]
21:47 cognominal masak: well the specificity of ? :  in C is that it is a conditional statement that returns a value, so it is is an expression.
21:47 buubot TimToady: ERROR: syntax error at (eval 39) line 1, near "]["
21:47 TimToady buubot: eval ['neg','zero','pos']->[1]
21:47 buubot TimToady: zero
21:47 dalek book: dc0b883 | chromatic++ | src/preface.pod:
21:47 dalek book: Edited preface.
21:47 dalek book: review: http://github.com/perl6/book/commit/dc​0b88388482a9a69112ac83e86dc378d61be97d
21:47 cognominal in Perl 6,  almost everything gives a value anyway.
21:48 TimToady yes, Fortran had an implicit * <=> 0 there
21:48 TimToady + 2, since Fortran arrays are 1-based :)
21:48 rgrau_ joined #perl6
21:49 cognominal According to google books, the K&R says " The conditional expression, written with the ternary operator "?:", provides an alternate way to write this "
21:54 jnthn TimToady: say &nosuch::sub.WHAT # what should this be?
21:54 jnthn TimToady: Failure object? Any()?
21:55 * jnthn would prefer to fix the Null PMC Access we get at the moment to the correct thing :-)
21:57 masak supernovus++ # renaming Temporal into DateTime
22:05 masak ingy: blib patch looks good.
22:05 masak ingy: I'll have to try it a bit in practice too, but I like how the patch looks. :)
22:09 masak hm. not getting anything constructive done. thinking of going to bed.
22:09 masak 'night, #perl6.
22:09 jnthn o/
22:10 pugssvn r31736 | lwall++ | [Numeric] fix typo and a technicality pointed out by Minimiscience++
22:21 pjcj joined #perl6
22:22 TimToady jnthn: Code() I'd think
22:22 jnthn TimToady: ok
22:26 * jnthn tries a spectest with that
22:41 pugssvn r31737 | lwall++ | [S02,S06] change YOU_ARE_HERE to {YOU_ARE_HERE} to better represent the UNIT block
22:50 pmurias joined #perl6
22:53 PZt joined #perl6
22:56 gbacon joined #perl6
23:02 pugssvn r31738 | lwall++ | [STD] change YOU_ARE_HERE to {YOU_ARE_HERE}
23:02 pugssvn r31738 | [tryfile] find the spec dir even if .t file is from command line
23:07 jnthn rakudo: say defined("a" => 3).WHAT; say (defined("a" => 3)).WHAT
23:07 p6eval rakudo c513fb: OUTPUT«0␤Int()␤»
23:07 jnthn oh hmm
23:07 jnthn token prefix:sym<defined> { <sym> » <O('%named_unary')> }
23:08 jnthn STD don't have that.
23:09 dalek rakudo: 13dc51c | jonathan++ | src/builtins/Signature.pir:
23:09 dalek rakudo: Make sure we never end up with a a null string in a Parameter object.
23:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​3dc51ca64900285d3c6f0f40a0f2e8592076e3f
23:09 dalek rakudo: a63b5c5 | jonathan++ | src/core/Signature.pm:
23:09 dalek rakudo: Remove a workaround and some other tweaks to avoid a meta-error in reporting
23:09 dalek rakudo: failed dispatches to trait_mod multis.
23:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​63b5c53eb7774c60c68c27ea6f80de6386f96ff
23:09 dalek rakudo: dd8d5d7 | jonathan++ | src/Perl6/Actions.pm:
23:09 dalek rakudo: Make sure &no::such doesn't give back a Null PMC.
23:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​d8d5d7e5b2c486ebe5d852e312a7b26fde44a63
23:18 * ingy refactors ufo, FTW!
23:24 snarkyboojum joined #perl6
23:47 ingy moritz_: hi
23:48 ingy moritz_: fyi... PREFIX=some/path make -e install
23:48 ingy moritz_: works now...
23:48 ingy moritz_: and ufo is much smaller in the process!
23:49 * ingy does a little Makefile dance
23:49 ingy make ingy dance
23:55 [Coke] no rule to make target ingy.
23:56 Psyche^ joined #perl6
23:59 snarkyboojum joined #perl6
23:59 gbacon joined #perl6
23:59 justatheory joined #perl6
23:59 mberends joined #perl6
23:59 PacoLinux joined #perl6
23:59 dalek joined #perl6
23:59 buubot joined #perl6
23:59 simcop2387 joined #perl6
23:59 buu joined #perl6
23:59 Khisanth joined #perl6
23:59 thepler joined #perl6
23:59 sjohnson joined #perl6
23:59 yahooooo joined #perl6
23:59 knewt2 joined #perl6

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs