»ö« | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by moritz_ on 25 June 2010. |
|||
jnthn | "final classes"? | 00:00 | |
And...I think not. :-) | |||
Being undefined is pretty much the definition of a type object. | |||
tylercurtis | sorear: What would "my SomeFinalClass $foo;" initialize $foo to? | 00:01 | |
00:02
felliott left
|
|||
sorear | tylercurtis: a trap representation | 00:03 | |
doing anything to the initial value of $foo would raise an exception | 00:04 | ||
SomeFinalClass.new, .ACCEPTS, etc could only work if the receiver was a literal | 00:05 | ||
pmichaud | S06:2485 says | ||
"The C<.my> method provides access to the lexical namespace associated with | 00:06 | ||
the given call frame's current position. It may be used to look | |||
00:06
lest_away is now known as lestrrat
|
|||
pmichaud | up ordinary lexical variables in that lexical scope." | 00:06 | |
however, S02:2692 says | |||
" The caller's lexical scope is allowed to hide any | |||
user-defined variable from you. In fact, that's the default, and a | |||
lexical variable must have the trait "C<is dynamic>" to be | |||
visible via C<CALLER>." | |||
is it intended that callframe() would provide access to my-scoped variables that CALLER would not? | 00:07 | ||
(and iiuc, part of the reason for having the "is dynamic" restriction on CALLER was to assist with optimization) | 00:08 | ||
(which would seem to be eliminated if callframe() is able to access the vars) | |||
jnthn | rakudo: { my $a; our sub foo() { $a } }; foo() | ||
p6eval | rakudo d51e99: ( no output ) | ||
sorear | callframe() is the optimizer's bogeyman | 00:09 | |
in every way | |||
jnthn | rakudo: { my $a = 42; our sub foo() { $a } }; say foo() | ||
p6eval | rakudo d51e99: OUTPUT«42» | ||
TimToady | I think .my could filter to dynvars only, yes | ||
pmichaud | "could" or "does" ;-) | ||
? | |||
TimToady | doesn't much matter till someone does .keys :) | ||
sorear | especially since you can use it in a method and then bogey every single function that calls a method | ||
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 | ||
pmichaud | is it allowed to? | ||
show things the optimizer takes away? | |||
wait, rephrase | 00:11 | ||
sorear | oh that's nice. | ||
pmichaud | is it allowed to show things that an optimizer *might* take away? | ||
00:11
Chillance joined
|
|||
TimToady | well, we could have .MY_DANGEROUS | 00:11 | |
gotta run | |||
jnthn | .oO( .MY_PRECIOUS ) |
||
TimToady | bia2hr | ||
& | |||
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 | |
so I'm wondering if that's a valid spectest | |||
00:14
ashleydev joined
|
|||
lue | what's the difference between .WHO and .WHAT ? | 00:15 | |
pmichaud | .WHAT returns the type object | ||
.WHO returns the package namespace (iirc) | |||
jnthn | correct afaik | ||
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. :-) | ||
jnthn | pmichaud: Or if the spec is going to be clafiried to only show is dynamic ones. | ||
pmichaud | I think that .my should be limited to "is dynamic" vars. | 00:17 | |
jnthn | +1 | ||
lue | rakudo: my $a = 3+2i; say "{$a.WHAT}, {$a.WHO}" | 00:18 | |
p6eval | rakudo d51e99: OUTPUT«Complex(), Complex» | ||
pugssvn | r31715 | pmichaud++ | [t/spec]: Revise test dealing with ro-ness of .my() . | 00:19 | |
dalek | kudo: f3d9ab2 | pmichaud++ | (3 files): Remove LexPad type in favor of a simple Hash. |
00:26 | |
kudo: 550831c | pmichaud++ | .gitignore: Add lib/Safe.pir to .gitignore. |
|||
kudo: c2ebda4 | pmichaud++ | src/Perl6/Actions.pm: Merge branch 'master' of github.com:rakudo/rakudo |
|||
00:29
xabbu42 left
00:30
jimk left
00:34
axplock joined,
axplock left
00:36
whiteknight left
|
|||
ingy | is there an action that is called when a rule fails? | 00:38 | |
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:42 | ||
so, like, ya know, is there a action method name that is looked for when a rule fails? | 00:43 | ||
00:45
rjbs joined
|
|||
jnthn | ingy: no | 00:45 | |
ingy: However, you can always add a | <?> or something at the end of the rule | |||
ingy: Then it will have matched of course | |||
ingy: But you can check whatever you need to in the action method. | |||
ingy: oh, there's also | 00:46 | ||
| { do stuff } <!> | |||
ingy | what's that do? | 00:49 | |
rjbs | In declaring a class, I know I can say "has Str $.foo" to add an attribute of type Str. | 00:50 | |
How do I declare whether or not a defined value is required to instantiate an object? | |||
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:51 | |
00:52
plobsing joined
|
|||
jnthn | rjbs: In ideal Perl 6, has Str:D $.foo; *may* do it. | 00:52 | |
rjbs: Though Rakudo doesn't implement that just yet. | |||
(:D is a kind of "type modifier" that implies "this type but defined") | |||
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. | ||
jnthn | rjbs: Well, you could also choose to write a constructor that requires those be passed. | 00:54 | |
rjbs: That's be the way that catches it early | |||
ingy | what's the constuctor syntax? | ||
jnthn | method new(:$first_name!, :$middle_name, :$last_name!) { self.bless(*, :$first_name, :$middle_name, :$last_name) } or some such | 00:55 | |
(So make first_name and last_name required args. | |||
) | |||
rjbs | Huh. Okay. | ||
ingy | hi rjbs | ||
rjbs | Hallo! | ||
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. | ||
Well, I probably still will. | |||
ingy | :) | ||
pmichaud | jnthn: ping | ||
ingy | for what conf? oscon? | ||
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! | ||
jnthn | pmichaud: pong | ||
rjbs | ingy: yeah | ||
pmichaud | jnthn: the new add_phaser code seems to execute every phaser in the context of !YOU_ARE_HERE. That doesn't seem right. | ||
ingy: pong | |||
ingy | pmichaud: nevermind :P | ||
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. | ||
The others should already have a lexical context -- the block in which they're declared. | |||
jnthn | pmichaud: Which is what we were doing (with all of them) before | ||
pmichaud | ? | ||
jnthn | pmichaud: Improvements welcome. :-) | ||
pmichaud: Before you couldn't "say" in *any* of the phasers | 00:59 | ||
pmichaud: Or use any built-ins. | |||
pmichaud | okay | ||
so that's the same "mainline doesn't have an outer context" issue, I guess. | |||
jnthn | pmichaud: What I've got us doing now is certainly not right. But it's less wrong. | ||
Or at least, more useful :-) | |||
pmichaud | okay, got it. | ||
(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. | ||
s/vs// | |||
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. :-) | ||
pmichaud | at least as far as finding things in the setting goes. | ||
jnthn | pmichaud: OK. May still need it for BEGIN though | ||
Until we make something better. | |||
pmichaud | right, BEGIN may need it. | ||
01:02
cdarroch left
|
|||
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 | ||
pmichaud | right | ||
jnthn | That collects the lexicals it sets and later stashes them in the Right Place. | ||
pmichaud | anyway, my question is answered for now :-) | 01:03 | |
01:03
rjbs left
|
|||
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! | ||
jnthn | Though I'm currently distracting myself improving the mmulti-method dispatch failure errors too 'cus they suck. | ||
pmichaud | afk # walk on the beach | 01:09 | |
dalek | ok: 3ae798c | chromatic++ | src/multi-dispatch.pod: Edited multi-dispatch chapter for clarity. |
01:13 | |
[Coke] | www.boingboing.net/2010/07/14/colon...punct.html | 01:14 | |
01:14
FardadJalili joined
01:15
pnate left,
pnate joined
|
|||
jnthn | For an article on punctuation, I love the apparently missing comma in the opening sentence. | 01:16 | |
01:19
drewk left
01:21
sahadev joined
01:26
payload joined
01:27
payload1 left
01:29
skids joined
|
|||
jnthn | Sheesh, good errors take some effort. | 01:40 | |
dammit, I accidentally the lolspeak in the error too :/ | 01:43 | ||
sorear | jnthn: :$first-name! doesn't required a defined value | 01:49 | |
jnthn | sorear: I know | ||
Guess you have to trust your consumers at some level... :-) | |||
sorear looks forward to "is required" being added to Perl6 | |||
jnthn: it's easy in moose! | 01:50 | ||
jnthn | Traits are normally a list-ditch solution. :-) | ||
*last | |||
sorear: What does 'is required' do in Moose? | |||
sorear: And what is it applied to? | |||
sorear | It causes attributes to require a value. | 01:51 | |
or, to be a bit more precise: | |||
Moose attributes can be absent, or can hold any Perl 5 value (including undef) | 01:52 | ||
has foo => (isa => 'Str') # This attribute can be absent, or can hold a Str (like Perl6 Str:D) | |||
Foo.new(foo => 'x') # creates an object with the foo attribute present and 'x' | 01:53 | ||
Foo.new(foo => undef) # creates an object with the foo attribute present and undef | |||
Foo.new() # creates an object with the foo attribute not present | |||
the distinction is extremely useful for lazy attributes | 01:54 | ||
which use 'not present' for needing to be calculated, but once calculated can hold any p5 value | |||
'isa' constrains only present values | 01:55 | ||
'required' forces the attribute to be present, errors otherwise | |||
'default' sets a value if the suppied thing is not-present, but _any_ offered thing (even undef) overrides | |||
01:56
agentzh joined
|
|||
sorear | 'init_arg' allows you to choose a different key for the constructor, or undef to disallow constructor setting entirely | 01:56 | |
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 | ||
tylercurtis | CLOS++ | ||
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:58 | |
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 | ||
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
ashleydev left
|
|||
jnthn | sorear: Are all these things in Moose core, or some MooseX? | 02:00 | |
tylercurtis | Preferably with a more pleasant syntax. | ||
jnthn: Moose core. | |||
sorear | see: search.cpan.org/~doy/Moose-1.08/lib...m#Creation ; search.cpan.org/~flora/Class-MOP-1....m#Creation | 02:01 | |
all the standard attribute traits are in one of those lists | 02:02 | ||
jnthn | *nod* | ||
sorear | the Moose notion of a trait is rather different from Perl 6's | ||
jnthn | Yes | ||
sorear | in Moose land, a trait is an attribute of a meta object | ||
jnthn | I'm know that. :-) | ||
In Perl 6 a trait may end up adding an attribute to a meta-object | |||
But it's up to whatever the multi candidate decides to do that handles that trait. | |||
sorear | has foo => (bar => 1, baz => 1) --> Attribute.new(name => 'foo', bar => 1, baz => 1) | ||
lue | wello o/ | ||
sorear | yeah | 02:03 | |
it mostly boils down to: Moose adds new traits by subclassing %*KNOWHOW<has> | |||
%? | |||
02:03
sahadev left
|
|||
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 | ||
BEGIN { %*KNOWHOW<role> } returns an object which knows how to implement role declarations at that point | 02:05 | ||
dalek | kudo: c80d2d9 | jonathan++ | src/ (2 files): Start to improve multi-method dispatch failure errors. Now they include the |
02:06 | |
kudo: 7b26327 | jonathan++ | src/Perl6/Actions.pm: Generalize add_phaser's argument list a little so it doesn't take the block to |
|||
kudo: b19a44e | jonathan++ | src/pmc/p (2 files): If a multi-method dispatch fails, also dump the list of candidates, sorted as |
|||
kudo: f74314f | jonathan++ | src/pmc/p6invocation.pmc: Fix lolspeak-o. |
|||
sorear | in principle, you can lexically change the meaning of the object system with a well placed constant %?KNOWHOW = hash( %?KNOWHOW, :role<MyRoleHOW> ); | ||
but this is not very specced at the moment | 02:07 | ||
02:08
sahadev joined
|
|||
tylercurtis | Moose has CL-style :documentation? Nice. | 02:09 | |
jnthn | sorear: Rakudo calls it %*HOW at the moment | 02:12 | |
rakudo: BEGIN { say %*HOW<class> } | |||
dalek | kudo: b612d4a | jonathan++ | src/ (4 files): REJECTS is gone from the spec, so toss it from Rakudo too. |
||
p6eval | rakudo c2ebda: OUTPUT«===SORRY!===Null PMC access in invoke()» | ||
jnthn | huh | ||
rakudo: BEGIN { say 'alive' } | 02:13 | ||
p6eval | rakudo c2ebda: OUTPUT«alive» | ||
jnthn | rakudo: BEGIN { say %*HOW } | ||
p6eval | rakudo c2ebda: OUTPUT«Hash[0x75e82b0]» | ||
jnthn | Oh | ||
Think it's a Parrot hash leaking in. | |||
sorear | well it *is* defined in NQP | 02:15 | |
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:16 | ||
02:20
FardadJalili left
02:33
Sarten-X joined
02:35
meteorjay left
02:36
meteorjay joined
02:38
ashleydev joined
02:46
gbacon left
|
|||
jnthn | phenny: tell pmichaud is there anything you want to salvage from this patch? rt.perl.org/rt3/Ticket/Display.html?id=73148 If not, close ticket. :-) | 02:47 | |
phenny | jnthn: I'll pass that on when pmichaud is around. | ||
dalek | kudo: aea8165 | jonathan++ | src/pmc/perl6multisub.pmc: Remove long-commented out code that we don't need. |
||
lue | Are there any tips to finding the issue when you break something as simple as print ? | 02:52 | |
[I'm not a master in debugging...] | |||
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 | |
lue: Breaking print/say is...well...ouch | |||
lue: Normally it boils down to somehting broken with regard to initialization, or soemthing broken in dispatch. | 02:54 | ||
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:57 | |
jnthn | Yes, it's...odd | 02:58 | |
It's also 5am here though so probably I should sleep when this spectest run is done. :-) | |||
lue | huh, I don't remember modifying the grammar (mentioned after reset). | ||
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
sahadev left
|
|||
jnthn | lue: huh...I stay up until 1 when I'm being well behaved. :-) | 03:00 | |
lue | you know which xkcd comic I'm thinking of right now, I bet :) | 03:01 | |
jnthn | :-) | ||
yay | |||
jnthn git pushes for the last time today | |||
er, well | |||
"today" :-) | 03:02 | ||
03:02
felliott joined
|
|||
lue | I remember (thanks to git diff), the grammar mod was attempting to fix 'where', which I gave up :) | 03:03 | |
jnthn | idem spat. Night all. o/ | 03:04 | |
lue | goodnight o/ | ||
dalek | kudo: 2348e0c | jonathan++ | src/Perl6/Grammar.pm: Switch grammar augmentations to work like a BEGIN phaser. Fixes issues relating cleaner. |
||
kudo: 0680fc2 | jonathan++ | docs/ROADMAP: Move operating overloading to done section of ROADMAP now that the pre-comp |
|||
lue | rakudo: multi sub circumfix:<Ω Ω>($a) { say $a }; Ω3Ω | 03:06 | |
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Cannot take substr outside string» | ||
lue | rakudo: multi sub circumfix:<Ω Ω>($a) { say $a }; Ω 3 Ω | ||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "\u03a9 3 \u03a9"» | ||
03:08
sahadev joined
03:25
FardadJalili joined
|
|||
FardadJalili | how can I invoke a method of a parent class in its child? | 03:26 | |
sorear | nextsame; | 03:27 | |
FardadJalili | sorear: thanks. | 03:28 | |
03:38
skids left
03:44
felliott left
03:50
felliott joined
04:24
cjk101010 joined
04:29
FardadJalili left
04:30
songmaster joined
|
|||
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> "» | ||
tylercurtis | std: if 5 sub ($a) { say 'does this work?'; } | 04:39 | |
p6eval | std 31715: OUTPUT«===SORRY!===Missing block at /tmp/iXjqCBJD10 line 1:------> if 5 ⏏sub ($a) { say 'does this work?'; } expecting any of: bracketed infix infix or meta-infixParse failedFAILED 00:01 117m» | ||
songmaster | rakudo: my %a; %a<a>=0; say %a<a> :exists ?? "Yes" !! "No" | ||
tylercurtis didn't think it would. | |||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "say %a<a> "» | ||
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» | ||
tylercurtis | rakudo: my %a; %a<a> = 0; ($a<a> :exists ).say; | ||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "($a<a> :ex"» | ||
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; | ||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "($a<a> :kv"» | ||
tylercurtis | rakudo: my %a; %a<a> = 0; ($a<a>:p).say; | ||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "($a<a>:p)."» | ||
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)."» | ||
tylercurtis | rakudo: my %a; %a<a> = 0; (%a<a> :delete).say; | ||
p6eval | rakudo b612d4: OUTPUT«===SORRY!===Confused at line 20, near "(%a<a> :de"» | ||
TimToady | rakudo basically doesn't do adverbs yet | ||
you'll have to call a method on the container object | |||
songmaster | Thx, was just checking... | ||
TimToady | rakudo: my %a; %a<a> = 0; %a.delete('a').perl.say | 04:45 | |
p6eval | rakudo b612d4: OUTPUT«0» | 04:46 | |
TimToady | at least it looks like it returns the value | ||
04:47
bcubas left
|
|||
tylercurtis | TimToady: do you know if any implementation does adverbs correctly yet? | 04:48 | |
TimToady | well, viv correctly translates them to Perl 5 for the implementation of STD | 04:49 | |
04:49
bcubas joined
|
|||
TimToady | because the standard grammar uses :delete and :exists | 04:49 | |
and STD parses them correctly, obviously | 04:50 | ||
or viv wouldn't be able to do that | |||
szabgab | rakudo: my @x = 1..3; for @x -> $a, $b { say $a } | 04:51 | |
p6eval | rakudo 0680fc: OUTPUT«13» | ||
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 | ||
rakudo: my @x = 1..3; for @x -> $a, $b? { say $a } | 04:54 | ||
p6eval | rakudo 0680fc: OUTPUT«123» | ||
TimToady | looks busted | ||
that one should say 1,3 | 04:56 | ||
04:57
felliott left,
rv2733 joined
|
|||
szabgab | my version of Rakudo is old as at least the former works | 04:58 | |
I wonder if I should upgrade now :) | |||
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"]}» | ||
szabgab | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k { say $k } | ||
p6eval | rakudo 0680fc: OUTPUT«a a Ab bc c» | ||
szabgab | so this us busted too? | ||
so is this busted too? | 05:00 | ||
TimToady | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k { say $k.WHAT } | ||
p6eval | rakudo 0680fc: OUTPUT«Pair()Pair()Pair()» | ||
TimToady | that seems okay | ||
szabgab | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k, $v { say $k } | 05:01 | |
p6eval | rakudo 0680fc: OUTPUT«b ba a A» | 05:02 | |
szabgab | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x -> $k, $v { say $k.WHAT } | ||
p6eval | rakudo 0680fc: OUTPUT«Pair()Pair()» | ||
szabgab | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x.kv -> $k, $v { say $k.WHAT } | ||
p6eval | rakudo 0680fc: OUTPUT«Str()Str()Str()» | ||
szabgab | rakudo: my %x = <a A b c>.classify( { .lc } ); for %x.kv -> $k, $v { say $k } | 05:03 | |
p6eval | rakudo 0680fc: OUTPUT«cab» | ||
szabgab | thanks, I need to upgrade :) | 05:04 | |
tylercurtis | TimToady: how are operator adverbs defined? | 05:06 | |
TimToady | they just turn into extra named args to the operator, so postcircumfix:<{ }>($array, **@subscripts, :$exists) {...} or some such | 05:09 | |
05:09
macdaddy joined
|
|||
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:10
macdaddy is now known as Guest54
|
|||
TimToady | :ok is not likely to be done that way, for that reason | 05:11 | |
cognominal | thx for your feedback. | ||
TimToady | (if we ever do :ok) | ||
:ok would likely end up hardwired in the compiler, much like *.foo | 05:13 | ||
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 | |
rakudo: my %h = qqx{ls -1}.split("\n").classify({ .lc }).grep({ say .key if .value != 1}) | |||
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» | ||
szabgab | rakudo: my %h = <a A b c>.classify({ .lc }).grep({ say .key if .value != 1}) | ||
p6eval | rakudo 0680fc: OUTPUT«a» | ||
szabgab | rakudo: <a A b c>.classify({ .lc }).grep({ say .key if .value != 1}) | ||
p6eval | rakudo 0680fc: ( no output ) | ||
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. | ||
TimToady | though != should imply + | 05:18 | |
05:20
Chillance left
05:27
jakk joined,
jakk left
|
|||
TimToady | thunk & | 05:30 | |
05:41
songmaster left
05:42
rgrau` left
05:46
sahadev left
|
|||
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. | ||
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. | ||
pugssvn | r31716 | pmurias++ | [mildew] --no-wrap-in-block option | 06:01 | |
r31717 | pmurias++ | [smop] use --no-wrap-in-block option to fix regressions | 06:02 | ||
06:09
ashleydev left
06:10
uniejo joined
06:23
tylercurtis left
|
|||
dalek | kudo: 0b3a0ec | (Martin Berends)++ | tools/test_summary.pl: [tools/test_summary.pl] use $*VM<config><revision> instead of %*VM... |
06:27 | |
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:32 | |
mberends | cxreg: I agree, your Pg passed 24 tests out of 32 over here, the remainder were minor points. | 06:35 | |
cxreg | ok, pushed | 06:36 | |
mberends | :) that zavolaj bug has resisted about 10 attempted patches over here | 06:37 | |
moritz_ | mberends: did you bisect rakudo? | 06:38 | |
cxreg | yikes | ||
moritz_: i'll do it | |||
mberends | moritz_: I won't have time to bisect. Some revisions will need Parrot rebuilds too. cxreg++ for volunteering :-) | 06:39 | |
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 | |||
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 | ||
L L+(H-L)/3 L+2*(H-L)/3 H | 06:49 | ||
moritz_ | what would that doo? :-) | ||
sorear | not quite as efficient, but makes up for it in parallelism | ||
since rakudo builds only use one core | |||
wonder if anyone's done it. | |||
mberends | 8 cores, 9-sect? | ||
moritz_ | would imply multiple checkouts too | 06:50 | |
git n-sect :-) | |||
spoken "git insect" :-) | |||
06:51
justatheory left,
baest joined
07:06
pmurias joined
|
|||
cxreg | ok, it's running. expects to take roughly 7 builds | 07:08 | |
which should take what, 3 hours? :/ | |||
moritz_ | remember to re-gen Zavalaj.pir after each rakudo compilation | 07:12 | |
cxreg | yep | ||
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 | ||
moritz_ | the intel pentium M cpufreq stepping always worked well for me under linux | 07:15 | |
cxreg | this is a core 2 duo | ||
cxreg shrugs | |||
moritz_ doesn't have experience with those | 07:16 | ||
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. | ||
sorear | (my history sucks, don't trust the dates, but cpuid agrees on the model bit) | ||
cxreg | mberends: it's pretty lousy :) | 07:19 | |
dalek | kudo: d0df858 | moritz++ | src/Perl6/Compiler.pir: report parrot revision in --version output |
||
07:20
Mowah joined
|
|||
pmurias | sorear: hi | 07:21 | |
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:25 | |
pugssvn | r31718 | moritz++ | [t/spec] tests for RT #76366, accessing lexicals through our-subs | 07:46 | |
cxreg | down to 5 revs | 07:49 | |
07:53
snarkyboojum left
07:54
snarkyboojum joined
07:56
snarkyboojum left
|
|||
pugssvn | r31719 | moritz++ | [t/spec] tests for RT #74186, unfudge two similar tests, and switch to planless testing | 07:56 | |
07:57
japhb left
|
|||
moritz_ | another two tickets down | 07:58 | |
07:58
pmurias left
08:01
xabbu42 joined
|
|||
sorear | it's kind of amusing seeing Perl 6 with 5-digit ticket numbers. | 08:02 | |
cxreg | moritz_: it was the llsig branch | ||
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 | |
08:03
arnsholt joined
|
|||
sorear | frettled: no, it's not that | 08:05 | |
moritz_ | cxreg: that's what I feared :/ | ||
sorear | we don't actually have lots of tickets; ticket numbers are -highly- inflated | ||
cxreg | moritz_: i'm down to my last 2 builds, should have the sha in a few mion | ||
sorear | basically the following things contribute towards our ticket numbers: | ||
* Perl 6 bugs | |||
cxreg | min | ||
sorear | * Perl 5 bugs | ||
moritz_ | * spam | 08:06 | |
sorear | * Parrot bugs from the TPF days | ||
* All spam sent to perl.org | |||
or maybe just all spam sent to the report addresses | |||
frettled | sorear: so just like Slashdot. :) | ||
pugssvn | r31720 | moritz++ | [t/spec] tests for RT #75136: declaring a multi just returns the current candidate, not the whole set | 08:07 | |
moritz_ | that one was fun to test | 08:09 | |
it's a quite unusual bug report | |||
08:09
japhb joined
08:10
eternaleye left
|
|||
frettled | Hmm! | 08:13 | |
08:20
plobsing left
|
|||
pmichaud | good evening, #perl6 | 08:25 | |
phenny | pmichaud: 02:47Z <jnthn> tell pmichaud is there anything you want to salvage from this patch? rt.perl.org/rt3/Ticket/Display.html?id=73148 If not, close ticket. :-) | ||
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 | |||
pmichaud: 06:00Z <moritz_> tell pmichaud also the last test now has a very misleading test message | |||
sorear | hello pmichaud | 08:26 | |
pugssvn | r31721 | pmichaud++ | [t/spec]: update callframe.t tests per comments from moritz_++ . | 08:28 | |
pmichaud | moritz_: ping | ||
cxreg | o_O | 08:35 | |
bisect claims that commit 874adc3ef broke it | |||
could be my script was inadequate due to interim build issues though | 08:36 | ||
08:38
Ross joined
08:39
thebird joined
08:42
meppl joined
|
|||
cxreg updates the script and re-runs | 08:44 | ||
sorear | What's the difference between FIRST and START? | 08:45 | |
Other than that FIRST is only legal in loops | 08:46 | ||
08:46
dakkar joined
|
|||
moritz_ | pmichaud: pong | 08:46 | |
pmichaud | moritz_: in d0df85, what happens for the revision number on parrot tarballs not obtained via svn? | 08:47 | |
does it display Parrot r0 ? | |||
moritz_ | pmichaud: it displays whatever parrot returns in the config hash | 08:48 | |
pmichaud | okay, so r0 then. | ||
that seems lta | |||
moritz_ | good question though | ||
does parrot reports its release version somehow? | |||
pmichaud | at least, that's what Parrot used to report for non-svn checkouts. | ||
moritz_ | then I could check for revision == 0 and print the version number instead | 08:49 | |
pmichaud | VERSION | ||
dalek | ecza: 4581f14 | sorear++ | (2 files): Move rest of the small subs to CgOp |
||
ecza: d45d477 | sorear++ | (2 files): Move some of the MOP to CgOp |
|||
ecza: 0d2e83d | sorear++ | (3 files): Generalize scopedlex to also handle puts |
|||
08:49
timbunce joined
|
|||
ecza: 04a8475 | sorear++ | (2 files): Make the syntax for unquoted names in Q:CgOp slightly more liberal |
|||
ecza: 77809fa | sorear++ | (3 files): Add some Huffmanny shorthands for Q:CgOp |
|||
ecza: 2375faa | sorear++ | setting: Move the rest of the MOP to Q:CgOp |
|||
ecza: acb3c4e | sorear++ | Niecza/ (2 files): Retire NIL |
|||
pmichaud | rakudo: say $*VM<parrot><VERSION> | 08:50 | |
p6eval | rakudo d0df85: OUTPUT«Any()» | ||
pmichaud | rakudo: say $*VM<config><VERSION> | ||
p6eval | rakudo d0df85: OUTPUT«2.5.0» | ||
pmichaud | maybe always output VERSION, and add the revision number if known. | 08:51 | |
moritz_ | ok, will do | 08:52 | |
08:59
snarkyboojum joined
|
|||
sorear | hello snarkyboojum | 08:59 | |
I fixed the HFS+ issue | |||
moritz_ | no, you worked around it :-) | 09:00 | |
HFS+ still has the issue | |||
frettled | What was the HFS+ issue? | 09:01 | |
snarkyboojum | sorear: I saw that - much appreciated :) | ||
moritz_ | frettled: case insensitivity | ||
frettled | moritz_: oh, that one. | ||
moritz_: occurs in other toy file systems, too :) | 09:02 | ||
moritz_ | frettled: I know :-) | ||
frettled | But only HFS+ has perfected Unicode madness. | ||
moritz_ | madness in what way? | 09:03 | |
cxreg | ask leonidas | ||
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? | ||
moritz_ | I dimly recall that macos x preserves decomposed normal form of umlauts entered with dead keys | ||
and doesn't normalize on access | |||
so if you copy&paste an ä from a web site it's a different character than one entered via keyboard | 09:05 | ||
09:05
clintongormley joined
|
|||
frettled | It's a bit more complicated than that, but just a bit: en.wikipedia.org/wiki/HFS_Plus | 09:08 | |
Ah, _there_ was the kerneltrap link: kerneltrap.org/mailarchive/git/2008...749/thread | 09:10 | ||
09:10
pmurias joined
09:13
payload left
|
|||
moritz_ | frettled: thanks for the link, hilarious indeed | 09:13 | |
09:18
Sanitoeter joined,
Guest54 left
|
|||
frettled | np | 09:25 | |
sorear | What's everyone's favorite Perl 6 microbenchmark? | 09:27 | |
... since when does "256 unicode characters" take up "512 bytes" | 09:30 | ||
cono | sorear: ([/] 1,2,3).perl.say | ||
arnsholt | sorear: UTF-16? | 09:31 | |
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? | ||
arnsholt | github.com/perl6/nqp-rx/tree/given-when | ||
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. | ||
cono | sorear: ("A" ... "ZZ").perl.say | 09:36 | |
pmichaud | arnsholt: can you make it work with the normal .CONTROL_BREAK exception instead of using a repeat loop? | 09:39 | |
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 | ||
so things like when "foo" { ... } won't work. | |||
arnsholt | Yeah, that's tripped me up with ~~ as well a few times | ||
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 | ||
moritz_ | is .method_on_dollar_bang implemented? | 09:43 | |
arnsholt | jnthn++ said he would look into if the new metamodel might make that less of an issue | 09:44 | |
(I for one have my fingers crossed) | |||
pmichaud | I don't see how it can (more) | ||
for when "foo" { ... } | |||
it would mean that "foo" would have to have an .ACCEPTS method on it | |||
and I don't think the metamodel is dealing with that. At least, I hope it isn't. | |||
arnsholt | True, true | 09:45 | |
Another option would be to make the smart-match code do more than just invoking .ACCEPTS | |||
pmichaud | that gets... tricky | ||
arnsholt | That it does | ||
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 | ||
(Most notably, it'd be nice to have :vtable) | |||
pmichaud | to the extent that's to be done, it's to be handled via traits | ||
i.e., is vtable('...') | |||
arnsholt | Yeah, that's my conclusion as well | ||
pmichaud | I'd be happy to see an "is vtable" implementation. | 09:51 | |
moritz_ | I hope you'll be using a cheating traits implementation | ||
because the "real thing" requires rather advanced multi dispatch | |||
arnsholt | I will definitely cheat the traits | ||
moritz_ | (probably more than parrot offers out-of-the-box) | ||
pmichaud | it can't assume the existence of &trait_mod:<is>, no. | ||
moritz_ | pmichaud: any comments on my comments on your last spectest patch? | 09:52 | |
09:52
jferrero joined
|
|||
arnsholt | ATM my experiment code just has [is <trait=.colonpair>]* sandwiched in between the sig and the block | 09:52 | |
pmichaud | moritz_: I modified the spectest. | 09:53 | |
moritz_ | pmichaud: ok | ||
pmichaud | r31721 | ||
moritz_ | it's much more consistent now, but I think still wrong | 09:54 | |
pmichaud | which part do you think is wrong? ;-) | ||
moritz_ | anyway, works for me | ||
that it's not dies_ok | |||
pmichaud | and you think it should be dies_ok because...? | 09:55 | |
I think if the assignment is dies_ok, then the lookup must be as well. | |||
moritz_ | I didn't notice the unclarity in the spec when I read it, back when I implemented callframe() | ||
pmichaud | either $x is visible (and writable), or it's not visible. | ||
moritz_ | right | ||
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 | ||
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 | ||
did you commit the $/-in-subst btw? | |||
pmichaud | no, there are other problems. | ||
moritz_ | :( | ||
pmichaud | other spectests fail, so it's going to need a more wholesome fix. | ||
I'll revisit it a bit later -- likely on the plane. | 09:58 | ||
10:01
szabgab left
10:05
sftp_ joined,
sftp left
10:06
lestrrat is now known as lest_away
10:09
ive joined
10:18
agentzh left,
sftp_ left
10:19
sftp_ joined
|
|||
sorear removes 500 lines of code. refactoring++ | 10:29 | ||
also, out. | |||
10:30
Mowah left
|
|||
dalek | ecza: 8a46a61 | sorear++ | C (2 files): Move most of the derived-operation logic from CodeGen to CgOp |
10:33 | |
ecza: dfbc2aa | sorear++ | C (2 files): Generalize call CgOps to support CPS calls too |
|||
ecza: c2bd41b | sorear++ | C (2 files): Start removing CPS helper function calls out of the primitive set |
|||
10:36
Mowah joined
10:37
agentzh joined
|
|||
pugssvn | r31722 | pmurias++ | [mildew] make a test correct | 10:53 | |
r31723 | pmurias++ | [mildew] fix a bug | |||
r31724 | pmurias++ | [smop] better DUMPing, add support for %DUMP {... %} to the .ri language | 10:54 | ||
10:54
user__ joined
10:55
masonkramer left,
masonkramer joined
10:58
user__ is now known as azure1st
|
|||
colomon | A method named 'infix:sym<O/>' already exists in class 'Perl6;Grammar'. It may have been supplied by a role. | 10:59 | |
??? | 11:00 | ||
jnthn: ping | 11:03 | ||
11:08
azure1st left
|
|||
moritz_ | colomon: what are you doing to get that error? | 11:16 | |
colomon | Trying to build Vector | ||
specifically, it's a .pm file trying to use the .pm where infix:<O/> is declared. | 11:17 | ||
changing the name does not change the error. | |||
moritz_ | oh | ||
do you have a precompiled .pir lying around? | |||
colomon | you mean, as the source of the problem, or so that you can look at it? | ||
(I did do a make clean) | 11:18 | ||
moritz_ | problem source | ||
well, jnthn fiddled with custom operators a bit | |||
and importing them is known to be broken | |||
colomon | Ah, I thought he was declaring that fixed. | 11:19 | |
moritz_ | no, what he did was custom circumfixes | ||
colomon | "Move operating overloading to done section of ROADMAP now that the pre-comp | 11:20 | |
issues are dealt with. " | |||
moritz_ | oh | 11:21 | |
colomon | github.com/rakudo/rakudo/commit/234...8191719f55 | ||
jnthn | oh hai | ||
colomon | o/ | ||
jnthn | Yes, pre-comp *should* be fixed now. | ||
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)» | ||
moritz_ | rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say 5! | 11:23 | |
p6eval | rakudo d0df85: OUTPUT«120» | ||
moritz_ | rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say 3 yadayada 5 | ||
p6eval | rakudo d0df85: OUTPUT«3..5» | ||
colomon | right, this seems to be a more subtle problem | ||
moritz_ | rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say ¢5 | 11:24 | |
p6eval | rakudo d0df85: OUTPUT«5 cent» | ||
moritz_ | rakudo: BEGIN { @*INC.push: '/home/p6eval/pugs/t/spec/packages' }; use Exportops; say 3 notthere 5 # not exported, should fail | ||
p6eval | rakudo d0df85: OUTPUT«Could not find sub &infix:<notthere> in main program body at line 20:/tmp/g_Wzw_v3da» | ||
moritz_ | that's the wrong error message | 11:25 | |
jnthn | moritz_: Grammar tweaks aren't done as mix-ins just yet. | 11:26 | |
moritz_: So they'll be a bit leaky still. | |||
moritz_ | jnthn: wfm, I'll just write a ticket :-) | ||
jnthn | moritz_: Primarily the fix I did solves things like, any operators we wrote in the core setting would get lost | ||
Or at least, our ability to parse them would. | 11:27 | ||
moritz_ | std: 3 notthere 4 | 11:28 | |
p6eval | std 31724: OUTPUT«===SORRY!===Two terms in a row at /tmp/OqesRAJTeM line 1:------> 3 ⏏notthere 4 expecting any of: bracketed infix infix or meta-infix statement modifier loopParse failedFAILED 00:01 114m» | ||
moritz_ | jnthn: oh, I now see while imported-subs.t doesn't work | 11:30 | |
use Exportops; | |||
eval_lives_ok '5!', 'postfix:<!> was exported...'; | |||
fail | |||
eval_lives_ok executes in the context of Test.pm | |||
jnthn | Ah! | ||
Yes, that is a fail | |||
colomon: Where is Vector.pm so I can try and re-produce the error? | 11:31 | ||
colomon | github.com/colomon/Vector | 11:33 | |
run ufo and make and you'll get it. | 11:34 | ||
11:34
Sarten-X left
|
|||
pugssvn | r31725 | moritz++ | [t/spec] fix imported-subs.t | 11:34 | |
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 :-/ | ||
bbi10 | |||
colomon | the bug crops up making Nurbs.pm, the operator is imported from KnotVector.pm | ||
11:35
agentzh left
|
|||
dalek | kudo: 3576104 | (Solomon Foster)++ | t/spectest.data: Turn on S06-operator-overloading/imported-subs.t, moritz++. |
11:41 | |
kudo: 43f15a9 | pmichaud++ | src/ (2 files): Refactor phaser handling, add .loadinit to set mainline outer_ctx as early as |
|||
kudo: a95517f | pmichaud++ | t/spectest.data: Merge branch 'master' of github.com:rakudo/rakudo |
|||
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:46 | |
dalek | kudo: 2317396 | pmichaud++ | src/Perl6/Actions.pm: Eliminate obsolete %BEGINDONE. |
11:52 | |
pmichaud | jnthn: ping | 11:58 | |
11:59
Mowah left
|
|||
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:00 | |
jnthn | colomon: ah, think I may have realized part of what I've broken... | 12:01 | |
pmichaud: pong | |||
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 | ||
pmichaud | jnthn: just a status update | ||
I refactored add_phaser a bit tonight | |||
moritz_ | colomon: but if most PRNGs actually use an Int, I'd be OK with standardizing on Int too | ||
jnthn git pulls | |||
pmichaud | CHECK, INIT, END no longer go through !YOU_ARE_HERE | 12:02 | |
12:02
envi^home joined
|
|||
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? | ||
pmichaud | jnthn: they don't, and that's interesting. | ||
jnthn | argh! | ||
So you broke what I fixed yesterday. :-( | |||
pmichaud | well, all spectests passed. (more) | 12:03 | |
jnthn | Yes, because I'd not got to enabling any. | ||
For the fixes. | |||
pmichaud | more to the point, the problem we're having with setting is unrelated to BEGIN. | ||
or to the phasers. | |||
moritz_ | rakudo: INIT { say 4 } | ||
p6eval | rakudo d0df85: OUTPUT«4» | ||
pmichaud | well, obviously not completely unrelated, but not tied to BEGIN itself. | 12:04 | |
the other thing I added is that the mainline code gets an outer context immediately once it is loaded. | |||
so the fact that &say isn't being found is because that outer context isn't being set properly. | |||
12:06
azert0x joined,
azert0x left
|
|||
jnthn | pmichaud: The outer context of...what? | 12:06 | |
12:07
azert0x joined
|
|||
pmichaud | the mainline | 12:07 | |
in something like | |||
INIT { say 4 } | |||
the outer block of the init closure should be the mainline code | |||
and the outer block of the mainline code is the setting | |||
12:07
azert0x left
|
|||
jnthn | Right | 12:08 | |
But I think you'd just put something in to set the outer of the mainline to be the setting? | |||
pmichaud | I did that | ||
12:08
azert0x joined
|
|||
pmichaud | before tonight, we were setting the outer of the mainline at the point where it was executed | 12:08 | |
which is too late for BEGIN, CHECK, and INIT | |||
jnthn | Right. | ||
pmichaud | so, I added a loadinit that is setting the outer of the mainline at the point where it's loaded | 12:09 | |
and for some reason it's not taking effect (working on that now) | |||
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:09
azert0x left
12:10
azert0x joined
|
|||
pmichaud | true, but the INIT block should autoclose | 12:10 | |
jnthn | Yes, true | ||
pmichaud | which should at least get back to the setting. | ||
jnthn | Right. | ||
But it doesn't seem to work out? | |||
pmichaud | not yet. still working out why. | ||
also, is it supposed to be the case that the !class_init block takes place lexically inside of the bare block? | 12:13 | ||
i.e., in class C does Foo { ... }, the !class_init code has the class block as its outer | 12:14 | ||
jnthn | pmichaud: I think that's deliberate. I don't recall why right away. | 12:15 | |
pmichaud | okay. | ||
jnthn | pmichaud: looking at auto-close...hmm | ||
pmichaud | seemed weirdish when I was debugging the output. | ||
takadonet | morning all | ||
jnthn | It follows c->outer_ctx | ||
takadonet | wow! lots of commits | 12:16 | |
12:16
uniejo left
|
|||
pmichaud | something else is werid, too. | 12:16 | |
here's the code I'm currently looking at | |||
gist.github.com/478296 | |||
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 | |
pmichaud: I ain't convinced it's going to work in the case we have though. | |||
pmichaud | in general I'm not using set_outer | ||
normally we just use set_outer_ctx | |||
(which sets outer_ctx directly) | |||
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 | ||
_block64 is the mainline | 12:19 | ||
jnthn | Yes, that looks...odd indeed. | ||
pmichaud | _block76 is the CHECK block | ||
_block76 has _block64 as its :outer | |||
so.... where's the intermediate context coming from? | |||
jnthn | That's very odd. | 12:21 | |
12:21
JimmyZ joined
|
|||
jnthn | pmichaud: autoclose seems to look at the ->outer_sub pointer | 12:22 | |
pmichaud: As well as the outer_context one | |||
pmichaud | yes, I also tried setting outer_sub... didn't seem to help. | ||
although I'm curious.... (checking something) | |||
jnthn | pmichaud: I'm trying to work out if auto-close coulda stuck in the extra frame. | 12:23 | |
pmichaud: Of note, auto-close does this: | 12:24 | ||
outer_pmc = current_sub->outer_sub; | |||
if (PMC_IS_NULL(outer_pmc)) | |||
break; | |||
Meaning that if outer_ctx is set but outer_sub is not, it will stop auto-closing. | |||
pmichaud | well, outer_sub is set. | 12:25 | |
jnthn | The mainline's outer_sub is set? | ||
pmichaud | sure | ||
the mainline has an :outer -- it points to the wrapper block for the entire compilation unit | |||
jnthn | Right, so which block gets it's outer sub set to point to the setting? | 12:26 | |
The wrapper block? | |||
12:27
ruoso joined
|
|||
pmichaud | the outer_sub isn't likely the problem. | 12:27 | |
the likely problem is | |||
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? | ||
pmichaud | outer_c = outer_sub->ctx; | ||
although that could be related to the outer_sub, yes. | 12:28 | ||
so.... | |||
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
|
|||
pmichaud | oh, I might've had my "current_sub" from the wrong pointer | 12:30 | |
building now. | |||
12:30
Ross left
|
|||
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") | ||
it might segfault due to a recursive handler, I guess. | 12:33 | ||
jnthn | ah, true | ||
That sounds more likely | |||
...I hope! | |||
pmichaud | okay, changing UNIT_OUTER and YOU_ARE_HERE To force a 'set_outer' on the mainline doesn't seem to change anything. | 12:34 | |
jnthn | That check example still shows the outer_ctx of the mainline is null? | 12:35 | |
pmichaud | yes. | ||
12:35
azert0x left
|
|||
jnthn | And we're absolutely certain that the code that does the set_outer was run before the CHECK block? | 12:35 | |
(could be good to stick in a debugging print statement just to be really sure) | 12:36 | ||
pmichaud | any chance | ||
12:36
azert0x joined
|
|||
pmichaud | I can check that, yes. | 12:36 | |
any chance that something is coming in and undoing the set_outer that I'm doing at :load :init ? | 12:37 | ||
like, a fixup or something like that? | |||
jnthn | I can't think of anything that would. | 12:38 | |
I'm still lost on where the phantom block comes from. | |||
pmichaud | me too. | ||
I'm thinking there must be an autoclose bug here somewhere. | 12:39 | ||
when I ask the CHECK block for its outer sub, it correctly reports _block64 | 12:40 | ||
anyway, confirmed: UNIT_CHECK is calling !YOU_ARE_HERE prior to invoking the CHECK block. | 12:41 | ||
sorry, UNIT_OUTER | |||
jnthn | OK, good to know | ||
pmichaud | and !YOU_ARE_HERE is calling both set_outer and set_outer_ctx | 12:42 | |
jnthn | !UNIT_OUTER is too? | ||
pmichaud | well, in this case !UNIT_OUTER calls !YOU_ARE_HERE | 12:43 | |
jnthn | ah, oi | ||
*ok | |||
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 | ||
pmichaud: ...and has subid post29 | 12:45 | ||
pmichaud | oooh, subid | 12:46 | |
jnthn | Which is the thing that add_phaser's it | ||
However, its :outer(...) certainly does _not_ point to post29 | |||
pmichaud | the :load :init block? | ||
jnthn | Yes | ||
just add | 12:47 | ||
$S0 = $P1.'get_subid'() | |||
say $S0 | |||
After the line that prints the phantom sub | |||
pmichaud | come to think of it.... *why* does the CHECK block have the mainline as its outer in the first place anyway? | 12:48 | |
12:48
bluescreen joined
|
|||
pmichaud | I'd think it'd be the :load :init block, with the way the code is now. | 12:48 | |
12:48
bluescreen is now known as Guest19703
|
|||
pmichaud | a-ha | 12:49 | |
jnthn | pmichaud: I'm a tad confused what this is doing | ||
.const 'Sub' $P65 = "26_1279284348.25" | |||
.local pmc block | |||
set block, $P65 | |||
"!UNIT_OUTER"(block) | |||
(that's from the :load :init block) | 12:50 | ||
pmichaud | 26_ is the mainline | ||
jnthn | 26_1279284348.25 is the mainline | ||
pmichaud | "!UNIT_OUTER" is setting its outer context | ||
jnthn | Oh, wait, this is per-phaser code | ||
OK | |||
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! | ||
pmichaud | (and !YOU_ARE_HERE no longer executes the block it is passed -- it simply sets the outer context) | ||
jnthn | .const 'Sub' $P77 = "24_1279284348.25" | ||
capture_lex $P77 | |||
"!add_phaser"("CHECK", $P77) | |||
What is that capture_lex going to do? | |||
(it's being called from the :load :init block) | 12:52 | ||
pmichaud | oh, yes, that's likely the issue. | ||
anyway, that's also my "a-ha" above | |||
jnthn | Could it be causing the phantom frame? | ||
pmichaud | yes, likely | ||
12:52
tewk joined
|
|||
pmichaud | more to the point, I realize now why I didn't like the passing-of-a-string to !get_phaser_result | 12:52 | |
I want it to pass the block itself. | 12:53 | ||
because that way I can use a block reference for add_phaser, and let !get_phaser_result "own" the block itself. | |||
jnthn | That also works | ||
12:53
jferrero left
|
|||
pmichaud | let me put that in place and see if things get better. | 12:53 | |
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:54 | |
12:55
felliott joined
12:56
felliott_ joined,
felliott left,
felliott_ is now known as felliott
12:57
Guest19703 left
|
|||
pmichaud | ugh, that messes things up with operator overloading | 13:01 | |
[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:02 | |
jnthn | pmichaud: That's just treated like a BEGIN phaswer. | 13:03 | |
*phaser | |||
pmichaud | right | ||
except the result of the "make" isn't stored anywhere. | |||
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. | ||
Otherwise --target=prase breaks on custom ops. | |||
pmichaud | I think --target=parse already includes the actions. | 13:05 | |
otherwise a lot more would break. | |||
jnthn | Oh? | ||
I was under the impression it didn't. | |||
pmichaud | it didn't used to. | ||
yes, --target=parse now includes the actions. | 13:06 | ||
oh, maybe not | |||
checking | |||
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 | ||
(or anything else that requires BEGIN-time operations) | |||
13:07
JimmyZ left
|
|||
jnthn | pmichaud: Those are explicitly installed by the parser. | 13:07 | |
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. | ||
and relying on it being in the .loadinit isn't good. | 13:09 | ||
(because it gets the lexical scoping wrong) | |||
I suppose I can just push it into @BLOCK[0][0] | 13:10 | ||
jnthn | pmichaud: I figured add_phaser made sure of that? | ||
Oh, I guess not | |||
d'oh | |||
pmichaud | but pushing into @BLOCK[0][0] has the same problem of --target=parse not working right | ||
because @BLOCK[0][0] doesn't exist in that case. | 13:11 | ||
13:11
snarkyboojum left
13:12
masonkramer left
|
|||
jnthn | Ah yes | 13:12 | |
13:12
felliott left
|
|||
jnthn | Could the return of add_phaser be somehow stached so the action method can get it and emit it? | 13:13 | |
Like capture it somehow? | |||
[Coke] | pmichaud: aren't you up super late? =-) | 13:14 | |
pmichaud | [Coke]: yes, 3h15 here. | ||
I got started on fixing this and just didn't stop. | |||
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:15 | |
13:16
Sarten-X joined
|
|||
pmichaud | I'll try a slightly different approach. | 13:16 | |
okay | 13:19 | ||
that got rid of the phantom sub | 13:20 | ||
jnthn | Progress. :-) | 13:21 | |
13:21
baest left
|
|||
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» | ||
pmichaud | ohhhhhhhhh!!!!!!!!! | 13:24 | |
wait, nm. | |||
jnthn | aww! | 13:25 | |
pmichaud | okay | 13:28 | |
13:29
M_o_C joined
|
|||
pmichaud | well, I need some sleep, so I think I'll have to suspend here for a bit. | 13:29 | |
jnthn | pmichaud: OK | ||
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 | ||
No, me either. | |||
I'll let you know if I manage to track it down any further. | |||
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. | ||
Might try changing !UNIT_OUTER so that it only sets the outer sub, and not the outer ctx | 13:31 | ||
jnthn | *nod* | ||
Could be worth a try | |||
pmichaud | i.e., leave the outer_ctx null and see if autoclose gets it right | ||
should I go ahead and push my (untested) phaser change for operator declarations? | |||
(you can revert if it doesn't work out) | |||
jnthn | Yes | 13:32 | |
I'll see if it works. | |||
pmichaud | pushed | ||
13:32
lest_away is now known as lestrrat
|
|||
dalek | kudo: c7edce6 | pmichaud++ | src/Perl6/Actions.pm: Make sure a phaser is part of its lexical outer, not the loadinit. |
13:32 | |
pmichaud | I may not be able to look at this again until the plane ride in about 18 hours | 13:33 | |
depends on what other activities are taking place today :-) | |||
but I'm pretty sure the current factoring is closer to getting things rightish :-) | |||
jnthn | That's fine - enjoy activities. :-) | ||
pmichaud | anyway, sleep here -- bbl | ||
jnthn | sleep well o/ | 13:34 | |
13:35
tylercurtis joined
13:36
lestrrat is now known as lest_away
13:38
macdaddy joined
|
|||
mberends | 8 cores, 9-sect? | 13:39 | |
13:39
macdaddy is now known as Guest60794
|
|||
mberends | ooops :) | 13:39 | |
jnthn | Is that some geek version of 2 girls, 1-cup? | ||
13:41
ashleydev joined
|
|||
pmurias | ruoso: hi | 13:41 | |
ruoso | hi pmurias | 13:43 | |
pmurias | ruoso: all tests pass (not counting the p5 interop) | ||
ruoso: so properly packaging STD is the next thing? | 13:44 | ||
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:45 | |
pmurias | i don't think an agreement will be hard | 13:46 | |
ruoso | sure... it's just that our schedule is limited... and this is an important requisite | 13:47 | |
13:57
rgrau` joined
|
|||
pmurias | ruoso: in which directory should i put the plugin and how should i call it (Dist::Zilla::Plugin::STD)? | 13:57 | |
13:58
tadzik joined
14:03
rv2733 left
14:07
thebird left
14:10
thebird joined
|
|||
ruoso | pmurias, er... I don't have experience with Dist::Zilla, so I trust your judgement | 14:10 | |
14:12
ashleydev left
14:13
gbacon joined
14:19
ashleydev joined
14:23
Mowah joined,
Mowah left
14:26
Trashlord joined
|
|||
pugssvn | r31728 | pmurias++ | start hacking on Dist::Zilla::Plugin::STD | 14:27 | |
14:27
alester left
|
|||
pugssvn | r31729 | pmurias++ | [Dist-Zilla-Plugin-STD] copy over the handwritten files | 14:28 | |
14:28
cjk101010 left
14:31
alester joined
|
|||
pmurias | ruoso: what will be next after the STD dist? | 14:33 | |
14:34
thebird left
14:36
M_o_C left
|
|||
ruoso | I think we can release the first version to CPAN | 14:41 | |
then add p5 interop support and release the second version | |||
pugssvn | r31730 | pmurias++ | [Dist-Zilla-Plugin-STD] the same set of file as in STD-dist is copied over | 14:44 | |
r31730 | [STD] fix dist.ini | |||
14:46
felliott joined
14:57
ashleydev left
15:07
thebird joined
|
|||
pugssvn | r31731 | pmurias++ | [STD] port over the changes from STD-dist required for mildew to work | 15:07 | |
pmurias | ruoso: i think we could release that version of STD on CPAN | 15:08 | |
15:09
Chillance joined
|
|||
pmurias | ruoso: if some one is unhappy about it I can always release version 0.02 improved with the feedback | 15:10 | |
[Coke] | OOC, what's the module name? | 15:12 | |
(just STD, or something more verbose?) | 15:13 | ||
pmurias | STD | 15:14 | |
[Coke]: TimToady wants to take STD as namespace so more standard grammars can live there like STD::P5, STD::Python | 15:15 | ||
15:16
jedai_ joined
15:17
thebird left
15:18
thebird joined
15:21
patspam joined
|
|||
pmurias | ruoso: www.cpan.org/modules/by-authors/id/....01.tar.gz | 15:27 | |
ruoso | pmurias, coool | ||
pmurias | AST:: in mildew should be renamed to Mildew::AST? | 15:29 | |
pugssvn | r31732 | pmurias++ | [mildew] rename Emit::Yeast to Mildew::Emit::Yeast | 15:37 | |
15:43
dual left
15:44
arnsholt_ joined,
arnsholt_ left
15:48
jaldhar left
|
|||
cxreg | jnthn: i bisected to find out what broken zavolaj | 15:50 | |
it was able to narrow it down to llsig between 0cbf6dcec and 4d2e620ad, but then i ran into compile problems | 15:51 | ||
dalek | kudo: c513fbd | (Solomon Foster)++ | src/core/ (2 files): Make sure calling .rand on a Complex number doesn't cause an infinite recursion. |
15:52 | |
kudo: 9dae675 | (Solomon Foster)++ | src/core/ (3 files): Adjust rand and srand to conform more to our current way of doing things. |
|||
15:54
justatheory joined
15:59
am0c left
16:06
ive left
|
|||
moritz_ back | 16:10 | ||
16:11
PZt left
|
|||
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 | ||
moritz_ | even better: "Can not handle type $_.perl() in an ..." | ||
jnthn | Aye. Think that was NYI when Zavolaj was written. :-) | 16:23 | |
ruoso | pmurias, yes... I think everything in mildew needs to be in the Mildew:: namespace | 16:24 | |
16:25
PZt joined
16:28
pyrimidine joined
|
|||
tadzik | is rakudo.org down? | 16:30 | |
moritz_ | seems like | 16:31 | |
TimToady | web server, anyway | ||
does ping | |||
moritz_ | actually it pongs :-) | 16:32 | |
TimToady | :P | ||
:Pong | |||
pmurias | TimToady: i release STD to CPAN | 16:35 | |
* released | |||
TimToady | saw that; wondering how best to keep things in sync | 16:36 | |
pmurias | in sync? | ||
the distribution is generated by dzil build in src/perl6 | |||
STD-dist is dead | |||
TimToady | ah | ||
PerlJam | dzil++ | 16:37 | |
pugssvn | r31733 | pmurias++ | remove now useless STD-dist | 16:38 | |
16:39
ashleydev joined
16:44
dakkar left
16:47
vocal joined
16:51
ashleydev left
16:57
timbunce left,
timbunce joined
17:01
ashleydev joined
|
|||
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 | |
(the irc thingy on this channel) | |||
moritz_ | timbunce: hugme | ||
timbunce | moritz_: thanks | ||
moritz_ | timbunce: what are you blogging about? | 17:03 | |
Tene | hugme: hug timbunce | ||
hugme hugs timbunce | |||
moritz_ | hugme: show perl6-examples | ||
hugme | moritz_: the following people have power over 'perl6-examples': PerlJam, TimToady, [particle], colomon, jnthn, masak, moritz_, pmichaud. URL: github.com/perl6/perl6-examples/ | ||
timbunce | java2perl6 - it's a biggie | ||
member:hugme: show java2perl6 | |||
moritz_ | hugme: add moritz to java2perl | ||
hugme | moritz_: ERROR: Can't add moritz to java2perl: HTTP/1.1 401 Unauthorized | ||
moritz_ | still the same error | ||
timbunce | hugme: show java2perl6 | ||
hugme | timbunce: sorry, I don't know anything about 'java2perl6' | ||
moritz_ | I have no idea what the problem is :( | 17:04 | |
hugme: show java2perl | |||
hugme | moritz_: the following people have power over 'java2perl': PerlJam, TimToady, [particle], colomon, jnthn, masak, mberends, moritz_, pmichaud, timbunce. URL: github.com/timbunce/java2perl/ | ||
moritz_ | hugme: list projects | ||
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 | ||
timbunce | ah, so the 6 got lost. ho hum | ||
moritz_ | huh | ||
17:04
vocal left
|
|||
moritz_ | that would explain why it doesn't work :-) | 17:04 | |
hugme: reload | 17:05 | ||
hugme | moritz_: reloaded successfully | ||
moritz_ | hugme: add moritz to java2perl6 | ||
hugme hugs moritz. Welcome to java2perl6! | |||
moritz_ | now it works. Yay | ||
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 | ||
[Coke] | huge doesn't respond to privmsg? | 17:07 | |
*hugme | |||
hugme: hug me | |||
hugme hugs [Coke] | |||
17:08
radu joined
|
|||
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>/;"» | ||
radu | hrm | ||
am i doing something wrong? | |||
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") | ||
p6eval | rakudo c513fb: OUTPUT«test» | ||
radu | ok, but I just needed a boolean answer..To know if the string matches the rule, not to actually parse it | 17:11 | |
tylercurtis | rakudo: grammar Test1 { rule TOP { "test" } }; say Test1.parse("test").Bool | 17:12 | |
p6eval | rakudo c513fb: OUTPUT«1» | ||
radu | ok, thanks, that should work :) | ||
timbunce | Blog post: blog.timbunce.org/2010/07/16/java2p...d-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:16
justatheory left
|
|||
timbunce | any feedback on that blog post is most welcome! | 17:20 | |
17:20
cdarroch joined,
cdarroch left,
cdarroch joined,
thebird left
|
|||
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! :) | ||
tylercurtis: how about JDBC? ;-) | |||
17:21
szabgab joined
|
|||
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 | ||
tylercurtis | [particle]: actually, what I'm working on at the moment is updating the Squaak tutorial | ||
[particle] | tylercurtis++ | 17:27 | |
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 | ||
PerlJam | tadzik: I don't dislike much about Perl 5, but ... the regex syntax is clunky when you start using "advanced regex" | 17:35 | |
ashleydev | TimToady: what does "attached" mean? | 17:37 | |
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:41 | |
most of the globals, or the filehandles, or their attributes, for instance | 17:42 | ||
subroutines should be lexically scoped, not found in global packages | |||
and so on | |||
17:42
patspam left
|
|||
TimToady | commuting & | 17:43 | |
17:44
patspam joined
|
|||
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 | ||
TimToady sees all, even while commuting... | 17:46 | ||
17:46
Kodi joined
|
|||
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. | ||
moritz_ wonders what TimToady commutes with, and if that means we can measure him exactly | |||
17:49
radu left
|
|||
PerlJam invokes heisenberg | 17:49 | ||
[particle] | in perl 6, that's heisenberg() | ||
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 | |
.oO(or was it <- ?) |
|||
[particle] | <== ? feed operators? | ||
moritz_ | lue: you mean dereferencing stuff? | ||
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 :) | ||
lue | no, things that other languages use the . for. (like Dog.new in 6 is Dog<-new or something in P5) | ||
moritz_ | PerlJam: having to know too much about references leads to threads such as www.perlmonks.org/?node_id=849713 :-) | 17:52 | |
lue: that's simply -> instead of . | |||
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. | ||
Perl6 looked better :) | |||
pmichaud: hello o/ | |||
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) |
||
cxreg | i'm not saying it's a bad thing, just that you might be the first :) | ||
tylercurtis | cxreg: I know a little bit of Perl 5. By which I mean, I've read tutorials and done hello, world. | ||
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» | ||
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 :) | ||
tylercurtis | So, lue is not the only one. :) | ||
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 | |
As TimToady said, their OWTDI wasn't my OWTDI :) | |||
jnthn | pmichaud: morning | 17:59 | |
tylercurtis has tried to learn Python several times. | |||
PerlJam | lue: perl 5 didn't have a switch statement until relatively recently, so most perl 5 people don't have to imagine it :) | ||
cxreg | is using the MMD code to handle that logic meant to be efficient? what's the complexity? | ||
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 | ||
jnthn | cxreg: Yes. | ||
cxreg: Badly. | |||
cxreg | ok, i thought maybe so | ||
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 | |
18:01
dual joined
|
|||
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:01 | |
lue | jnthn: I only need hundreds :) | 18:02 | |
pmichaud | <- packing for departure from paradise and return to the infernos of north texas | ||
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? | ||
jnthn | lue: It's still not going to be very efficient to do it that way. | ||
pmichaud: Aww. | |||
hugme: hug pmichaud | |||
hugme hugs pmichaud; jnthn++ | |||
jnthn | ...I get karma for getting hugme to hug people now? | ||
colomon | pmichaud: safe home | ||
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? :-) | ||
cxreg | jnthn: so rather like how you'd do it in perl 5, then | ||
18:03
plainhao joined
|
|||
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. :-) | ||
p6eval | rakudo c513fb: OUTPUT«brk 53» | ||
cxreg | jnthn: heh. | ||
lue | \o/ | ||
18:04
PZt left
|
|||
cxreg | jnthn: yeah, but C isn't FuTuRisTic!! | 18:04 | |
lue | jnthn: it's gonna be 92F today :( | ||
cxreg jumps on a monorail | |||
jnthn | lue: It hit 31C here today apparently. | ||
lue: That's not too far off 92F. | 18:05 | ||
lue | I prefer Celsius myself, but idiot weathermen keep using Farenheight :( | ||
jnthn | And yes, it's hot. | ||
pmichaud | rakudo: say (101-32)/5*9 | ||
p6eval | rakudo c513fb: OUTPUT«124.2» | ||
pmichaud | er | ||
18:05
justatheory joined
|
|||
pmichaud | rakudo: say (101-32)/9*5 | 18:05 | |
p6eval | rakudo c513fb: OUTPUT«38.3333333333333» | ||
pmichaud | today's high in Dallas :-| | ||
PerlJam | 40 degrees just doesn't *sound* hot :) | ||
jnthn | pmichaud: omg | 18:06 | |
PerlJam: Heh, it does if you're European. :P | |||
lue | I have a thermometer in celsius, so I've been luckily conditioned to celsius. | ||
pmichaud | rakudo: say (86-32)/9*5 | ||
p6eval | rakudo c513fb: OUTPUT«30» | ||
lue | 40 = .oO(DO NOT GO OUTSIDE UNLESS YOU ARE A WORKING AIR CONDITIONER) | ||
pmichaud | today's high in Maui :-) | ||
lue | .oO(when it's warmer in !Hawaii...) |
18:08 | |
jnthn | pmichaud: Humid or not so? | 18:09 | |
pmichaud | not. 68% | ||
(maybe a bit more where I'm at, about 30m from the shoreline :-) | 18:10 | ||
tylercurtis | lue: my uint8 @opTable[0xFF]; sub noop () { say "noop"; }; @opTable[0] = &noop; @opTable[0]() # Probably NYI. | 18:11 | |
rakudo: my uint8 @opTable[0xFF]; sub noop () { say "noop"; }; @opTable[0] = &noop; @opTable[0]() # Probably NYI. | |||
p6eval | rakudo c513fb: OUTPUT«===SORRY!===Malformed my at line 20, near "uint8 @opT"» | ||
18:11
FardadJalili joined
|
|||
PerlJam | arrays are shapless still | 18:11 | |
lue | uint8 ~~ NYI | 18:12 | |
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; | ||
p6eval | rakudo c513fb: OUTPUT«Type check failed for assignment in '&infix:<=>' at line 1 in main program body at line 20:/tmp/br7Zi_pA9o» | ||
FardadJalili | isn't it supposed to cast it to Int itself? | ||
tylercurtis | FardadJalili: 10 / 120 is a Rat. | ||
FardadJalili | rakudo: my Int $a = 10; my Int $b = ($a / 120).Int; $b.say; | 18:14 | |
PerlJam | what does "cast" mean? truncate? round? what? | ||
tadzik | rakudo: <a b c>.fmt("%s, %s and %s") #what is wrong in here? | ||
jnthn | FardadJalili: Int specifies a constraint, not a coercion. | ||
p6eval | rakudo c513fb: OUTPUT«0» | ||
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» | |||
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 :) | ||
FardadJalili | PerlJam: hmm, I think I got what you say :D | 18:15 | |
18:15
meteorjay left
|
|||
FardadJalili | ok, thanks anyone. | 18:15 | |
lue considers a Perl6 compiler for GCC | 18:19 | ||
PerlJam | %!PHASERS is global, yes? | ||
tylercurtis | lue: elaborate? | ||
pugssvn | r31734 | kyle++ | [purge-empty-dirs.pl] Delete empty directories. | ||
PerlJam | so, to implement things like FIRST, LAST, ENTER, LEAVE, it would need to be per-block? | ||
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. | ||
tylercurtis | lue: I'm working on a very very very limited LLVM compiler for Perl 6. | ||
lue: It can do things like "say 42;" | |||
and "my $a = 42; say $a;" | |||
18:22
meteorjay joined
|
|||
pmichaud | PerlJam: I'm guessing they'll need to be properties on the block. | 18:22 | |
FIRST and LAST certainly want to act that way. | |||
ENTER could be compiled directly into the block | |||
LEAVE is... tricky in parrot. | |||
PerlJam | wait, why is LEAVE tricky? | ||
pmichaud | exceptions | 18:23 | |
TimToady | LEAVE should run during stack unwind, not during exceptions | 18:24 | |
pmichaud | what if an exception decides not to resume? | ||
(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." | ||
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 | ||
pmichaud | right | ||
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 | ||
if you do it with GC only | |||
pmichaud | afaik, Parrot doesn't even offer a "execute on callframe GC" | 18:27 | |
lue | tylercurtis: good luck to you! | 18:28 | |
18:29
seabird joined
|
|||
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 | ||
TimToady | but it would be better if parrot could separate exception handler searches from unwinding | 18:30 | |
tylercurtis | lue: 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:32 | |
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:35
FardadJalili left
18:36
seabird left
|
|||
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 | |
s/build/built/ | |||
pugssvn | r31735 | colomon++ | [spec] Say a bit about Numeric operators and Bridge. | 18:39 | |
pmichaud | PerlJam: what sort of thing are you looking for? | 18:40 | |
with <?DEBUG>, you'll know that actions methods are being called whenever a rule passes | |||
PerlJam | I want to inspect the structure of the AST | ||
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) | ||
TimToady | that seems unfriendly, if they don't want to have to know the precision of srand | ||
colomon | I admit that's a fuzzy one to me. | ||
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 | ||
colomon | I'm not quite sure how to bridge that gap. | ||
18:42
Trashlord left
|
|||
jnthn afk, walk | 18:42 | ||
colomon | but I'm very willing to take good suggestions. | 18:43 | |
18:43
PZt joined
|
|||
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:43 | |
18:44
Trashlord joined,
sbp left
18:45
sbp joined
|
|||
colomon | jnthn: I think the Numeric grant work is done. Unless one of us spontaneously thinks of something else to do for it. | 18:46 | |
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. | ||
pmichaud: no | |||
TimToady | then 0.12345 and any integer do the expected thing, and we can warn on a non-Int >= 1 | ||
colomon | pmichaud: I'm not sure what's involved there, thus pinging my grant manager. ;) | ||
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 | ||
colomon | afk # whirlwind house cleaning | ||
18:50
seabird joined
|
|||
ingy | greetings | 18:50 | |
18:51
seabird left
18:52
masak joined
|
|||
masak | ahoy, #perl6! | 18:53 | |
tylercurtis | 'ello, masak, ingy. | ||
masak | my latest blog post is attracting more comments than I thought it would. use.perl.org/~masak/journal/40447 | ||
most exhibit an endearing combination of wanting to help and not understanding the whole problem :) | 18:54 | ||
lue | 'ello masak o/ | ||
masak | \o | 18:55 | |
sorear | good * #perl6 | ||
18:55
envi^home left
|
|||
masak | time to do some unmitigated hacking. | 18:57 | |
18:59
rv2733 joined
|
|||
lue | hai sorear o/ | 19:00 | |
masak: how many EXP do I have? :) | |||
masak | lue: how many thousand lines of Perl 6 have you written? :) | 19:01 | |
lue | .oO(I have at least 100...) |
||
.oO(...from reading the spec) |
|||
masak | nono, the 100 was from consulting the spec before you decide to propose a brilliant, novel idea. | 19:02 | |
lue | darn! | ||
masak | and if you ever finish the spec, the mail archives, exigeses, and apocalypses are veritable gold mines of information. | 19:03 | |
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 :) ] | ||
ingy | masak: I had an idea for ufo I wanted to talk to you about | ||
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? | ||
masak | why do you find it annoying that pir gets built? | 19:06 | |
that's very desirable to me. | |||
ingy | tab completions fail | ||
masak | (because my test files would be very slow without the pir files) | ||
ingy | sure, just build them in blib | 19:07 | |
and path blib for make test | |||
like p5 does | |||
masak | ok, you just explained how you planned to do all this. | ||
you still haven't eplained why you find the pir building annoying. | |||
ingy | I did explain | ||
masak | I missed it. | 19:08 | |
tylercurtis | masak: tab completion. | ||
masak | ah. | ||
yes, that annoys me too :) | |||
and now I see what you mean. | |||
ingy | well then, \o/ | ||
masak | yes, maybe that's a good practice. | ||
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 :) | ||
ingy: I'll make an attempt. | |||
ingy | k | ||
masak | ufo and the ufo component of pls are drifting dangerously far apart. | 19:10 | |
this is the divine punishment for copy-pasting code. | |||
ingy | heh | ||
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. | ||
no need to keep proto around. | |||
19:15
clintongormley left
|
|||
masak | ingy: ah; doing the blib/ thing looks non-trivial :/ | 19:15 | |
ingy | masak: I can do it | ||
masak | please. I'll review your patch. | ||
jnthn back | 19:16 | ||
yayitsmasak! | |||
masak | yayitsjnthn! | ||
ingy | masak: so why not just make pls a repo now? | ||
masak | ingy: because it still needs some love. mostly testing. | ||
jnthn | And Win32fixing. | 19:17 | |
19:18
ab5tract joined
|
|||
masak | is it just me, or is chromatic all but mentioning Perl 6 in this post? www.modernperlbooks.com/mt/2010/07/...-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. | ||
masak | tylercurtis: cool; thanks. | ||
19:18
justatheory left
19:20
ruoso left
19:21
Guest60794 left
19:22
justatheory joined
|
|||
tylercurtis | masak: Or maybe he's secretly a Lisper. :) | 19:22 | |
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." | ||
I'm pretty sure Common Lisp fits that description. | 19:24 | ||
19:26
tomaw joined
|
|||
tylercurtis | Other than interpolation. But you can override the result of formatting, I think. | 19:26 | |
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 :-) | ||
Tene | I've never heard chromatic talk about using CL. | ||
19:32
nadim left
|
|||
tylercurtis | Tene: I did say secretly. :) | 19:33 | |
19:34
nadim joined
|
|||
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:35 | |
19:35
PZt left
|
|||
tylercurtis | I don't think CL could fit through a pore. Maybe Scheme. | 19:36 | |
19:36
patspam left
19:38
plainhao left
|
|||
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
Kodi left
|
|||
lue | afk | 19:44 | |
19:46
sawyer_ joined
|
|||
ingy | masak: I'm pretty sure I can rewrite ufo as just a static Makefile :) | 19:50 | |
moritz_ | platform indendently? | ||
ingy | moritz_: likely | ||
masak | ingy: that would be interesting to see. | 19:51 | |
ingy | I'll do it on a branch | ||
:) | |||
masak | ingy: would it still retain the dependency ordering that the aliens talk about? | ||
ingy | masak: why do you do that? | 19:52 | |
masak | ingy: waitwait, that's why I made ufo. | ||
if we're not clear on that point, we need to talk. :) | |||
oh, how quickly a project is adopted and then misunderstood :/ | |||
ingy: I do that because that's the fastest way to compile the .pm files. | 19:53 | ||
ingy | masak: I'll retain it then :) | ||
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 | ||
masak | sounds good. | 19:55 | |
pmurias: ping | 19:56 | ||
moritz_ | first success in my SEO quest: modules.perl6.org/ now comes up as third hit when search for "Perl 6 modules" with google | 19:59 | |
(used to be no. 4) | |||
masak | \o/ | 20:00 | |
20:00
M_o_C joined
20:01
jferrero joined
20:02
eternaleye joined,
patspam joined
|
|||
masak | rakudo: say +"foo" | 20:04 | |
p6eval | rakudo c513fb: OUTPUT«0» | 20:05 | |
masak | A03 suggests this give the result NaN. | ||
what's the rationale for giving the result 0? | |||
moritz_ | it's easier to do calculations with 0 than with NaN | 20:08 | |
20:08
takadonet left
|
|||
masak | sure, but "foo" isn't, and doesn't contain, a number. | 20:08 | |
tylercurtis | moritz_: is it desirable to do calculations with stuff that clearly wasn't intended to be calculated upon? | 20:09 | |
moritz_ | tylercurtis: that surely depends on what you want to do | 20:10 | |
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. | ||
moritz_ | instead of making your sum unusable by setting it to NaN | ||
if you parse financial data, it's probably the other way round | |||
20:12
payload joined,
payload left
|
|||
tylercurtis | Maybe there should be a :default() adverb for operators like + and ~, once adverbs work. | 20:13 | |
Or a pragma to turn numification of non-numerics into either a failure or an error. | 20:14 | ||
tadzik | rakudo.org/status -- in the progress graph, the thin dotted line is the number of spectests? | ||
bah, haven't read the below description, my bad | |||
20:17
rgrau` left
20:19
rv2733 left
|
|||
moritz_ | again I'm looking for ideas for next week's Perl 6 contribution | 20:20 | |
rakudo: say {a => 1, b => 3}.pick(20, :replace) | 20:21 | ||
p6eval | rakudo c513fb: OUTPUT«bbbbbbbbaabbbbbbbbaa» | ||
moritz_ | rakudo: say {a => 1, b => 3}.pick(20, :replace) | ||
p6eval | rakudo c513fb: OUTPUT«abbabbbabaabbbabbbba» | ||
20:23
rv2733 joined
|
|||
masak | someone points out on p6l that we cannot enforce well-ordering. that is correct and largely irrelevant. | 20:25 | |
20:27
patspam left
|
|||
moritz_ | like many p6l threads :-) | 20:27 | |
moritz_ considers showing resonance in his p6+physics talk | 20:28 | ||
probably a good idea, considering how fundamental it is | |||
for some physicists, particles are just resonances in some curves :-) | 20:29 | ||
TimToady | to others, particles are merely persistent accounting errors in the quantum foam | 20:31 | |
20:33
hanekomu_9 joined
|
|||
pmurias | masak: pong | 20:36 | |
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? | ||
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:39 | |
TimToady | the intent is that -n and -p merely be loops around YOU_ARE_HERE in your setting | 20:40 | |
masak | I understand that. | ||
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-some-arcane-well-ordering-that-is-not-even-known method. | ||
TimToady | but yes, you can't rewrite code you don't have | ||
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
|
|||
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. :) | ||
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... | ||
masak | :) | 20:44 | |
justatheory quarks | |||
Pardon me. | |||
TimToady | still think they should have been truth and beauty | ||
frettled | TimToady: So that we could do truth-up and beauty-down searches? | 20:45 | |
masak fondly remembers his last beauty-down search | |||
TimToady tries to figure out what a top-up or a bottom-down search would mean | 20:46 | ||
[particle] | is that when you found out beauty is truly more than skin-deep | 20:47 | |
justatheory remembers to fondle beauty | |||
[particle] | bottom down searching sounds like the ... op | ||
masak | TOP { up } # there's top-up search | 20:49 | |
20:51
lest_away is now known as lestrrat
|
|||
tadzik | hmm. github.com/rakudo/rakudo/blob/maste...at.pm#L105 When is this sub actually used? If both arguments are Int, where is the Rat here? | 21:01 | |
moritz_ | the rat is the return value | 21:02 | |
rakudo: say (1/5).WHAT | |||
p6eval | rakudo c513fb: OUTPUT«Rat()» | ||
tadzik | hmm. So Rat is the only class which has infix</>(Int, Int), and that's how Rakudo knows what sub to use? | 21:03 | |
moritz_ | yes... except that it's not defined in the Rat class | 21:04 | |
it's outside the class body | |||
it just happens to be in the same file | |||
tadzik | ah, right | ||
ingy | hi masak | 21:06 | |
masak | ingy: hi | ||
ingy | masak: I think you'll like the blib changes. | 21:08 | |
masak: I will work on adding tests to ufo | 21:09 | ||
masak | oh my. :) ok. | ||
ingy | blib ended up being a short patch | ||
I tried all the targets | |||
seems to work | |||
masak | ingy++ | 21:10 | |
ingy works with make more than with perl :D | |||
I recently wrote a Module::Install-esque Makefile build system for Python | 21:11 | ||
ingy <3 make | |||
frettled | yay :) | ||
frettled <3 make, too | |||
masak | ingy: jnthn informed me that the 'patsubst' line (added byh @uasi) isn't very platform-independent. | 21:12 | |
ingy: not sure if it will turn out to matter. | |||
jnthn | It will if ufo is meant to work on Windwos. :P | ||
ingy | masak: it's good until it breaks, I always say | ||
anyway, tests would be the next step in that direction | |||
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. | ||
masak | ingy: tests require modules, no? | ||
ingy | ? | 21:14 | |
masak | ingy: I'm not 100% sure I want ufo to have an external dependency. | ||
ingy | masak: this is to define tests for ufo _developers_ | ||
right now we have nothing | |||
to assert that we didn't break stuff | 21:15 | ||
masak | ingy: good point. | ||
ingy | I'll add it as `make devtest` | ||
or somesuch | |||
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 | ||
ingy | thanks for making ufo | ||
masak | ingy: you're welcome. we'll see where it lands. :) | ||
ingy | :D | ||
21:17
whiteknight joined
|
|||
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_» | ||
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 | |
21:25
timbunce left
|
|||
TimToady | so -n looks like: for $*ARGFILES.lines {YOU_ARE_HERE} | 21:25 | |
masak | is YOU_ARE_HERE a macro substitution rather than a function call? | 21:26 | |
TimToady | where the {} represent UNIT | ||
frettled | . o O ( I get to write perl6 -nawe? Yay? ) | ||
TimToady | more like macro | ||
masak | then it just might work. | 21:27 | |
TimToady | so the OUTER of the UNIT code is the for loop | ||
sort of a post-declared macro | |||
frettled | masak: «It's a million-to-one chance, but...»? | ||
TimToady | it's actually the {*} in proto that gave me the idea | ||
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 | ||
masak | the OUTER? that won't work... FIRST, NEXT and LAST need to be in the loop block, not one block in. | ||
TimToady | they are in the loop block | ||
frettled | {HERE_BOY} | ||
TimToady | the use's UNIT is the loop block | ||
*r | |||
I'm saying the {} are part of the macro | 21:29 | ||
masak | ah, ok. now I see what you meant. | ||
TimToady | as with {*} | ||
but syntactically you can poke it wherever a block is acceptable | |||
and it stands in for the implicit block scope around UNIT | |||
frettled | That's pretty neat. | 21:30 | |
21:30
bcubas left,
timbunce joined
|
|||
TimToady | so you can't think that foo(1); bar(2); {YOU_ARE_HERE}; is the same scope as foo | 21:30 | |
er, howeve ryou say it | |||
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
pjcj left
|
|||
TimToady | other than that teh startup code is probably going to only look for one of them? | 21:32 | |
masak | the startup code? that's the thing doing the macro substitution? | 21:33 | |
TimToady | "hey, Mr SETTING, tell me your YOU_ARE_HERE." | ||
it's not really a macro sub | |||
21:33
tadzik left
|
|||
TimToady | it's just telling the UNIT its OUTER | 21:33 | |
before it starts to compile | 21:34 | ||
masak | ah. | ||
last-minute lexical block stiching :) | |||
TimToady | and you can't have two immediate OUTERS | ||
jnthn | .oO( $block.OUTER = all(...) ) |
||
masak | two {YOU_ARE_HERE} thingies wouldn't imply two immediate OUTERs. it'd imply two stiched-in blocks with the same OUTER. | 21:35 | |
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 :) | ||
cognominal | Is there a bug report about error reporting in rakudo? reporting at the granularity of block(oid) is too coarse. | ||
masak | TimToady: :) just exploring its edges. | ||
TimToady | cognominal: are you referring to parse errors? | 21:37 | |
it's a known problem, with a known solution :) | |||
cognominal | yup | 21:38 | |
jnthn | cognominal: Not sure if there's a ticket. It's a known TODO though. | ||
cognominal | ok, thx for the answer | ||
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 | ||
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 | ||
*too | |||
masak | how does the LTM engine react to mixing | and || ? | ||
TimToady | tylercurtis: got it in one :) | ||
LTM only pays attention to the first leg of || | |||
cognominal | I got tripped again by using the old arithmetic if. | 21:40 | |
masak | ok. makes sense. | ||
TimToady | usually you've already committed to an LTM before you hit a || though | ||
masak | colomon: what's an arithmetic if? | ||
cognominal | ?? :: | ||
TimToady | anyway, works out quite well in STD, which does have real LTM | ||
cognominal | oops | 21:41 | |
21:41
pyrimidine left
|
|||
cognominal | ?? !! | 21:41 | |
dalek | ok: 8ac231b | chromatic++ | src/multi-dispatch.pod: Added editorial note. |
||
masak | cognominal: usually referred to as the "trinary operator". | ||
TimToady | arithmentic if is something else in Fortran | ||
it's a three-way branch on neg,0,pos | |||
cognominal | indeed, en.wikipedia.org/wiki/Arithmetic_IF | 21:42 | |
masak | works great in conjunction with strcmp :P | ||
21:42
gbacon left
|
|||
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 | ||
masak | cognominal: it's not a very good name. there's nothing arithmetic about it. | 21:44 | |
21:44
rgrau` left
|
|||
TimToady | in Perl 5: goto ['neg','zero','pos'][($a cmp $b)+1] | 21:44 | |
er, make the first [] () | 21:45 | ||
though maybe that works | |||
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] | ||
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] | ||
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. | ||
buubot | TimToady: ERROR: syntax error at (eval 39) line 1, near "][" | ||
TimToady | buubot: eval ['neg','zero','pos']->[1] | ||
buubot | TimToady: zero | ||
dalek | ok: dc0b883 | chromatic++ | src/preface.pod: Edited preface. |
||
cognominal | in Perl 6, almost everything gives a value anyway. | ||
TimToady | yes, Fortran had an implicit * <=> 0 there | 21:48 | |
+ 2, since Fortran arrays are 1-based :) | |||
21:48
rgrau_ joined
|
|||
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:49 | |
jnthn | TimToady: say &nosuch::sub.WHAT # what should this be? | 21:54 | |
TimToady: Failure object? Any()? | |||
jnthn would prefer to fix the Null PMC Access we get at the moment to the correct thing :-) | 21:55 | ||
21:57
hanekomu_9 left
|
|||
masak | supernovus++ # renaming Temporal into DateTime | 21:57 | |
22:04
ashleydev left
|
|||
masak | ingy: blib patch looks good. | 22:05 | |
ingy: I'll have to try it a bit in practice too, but I like how the patch looks. :) | |||
22:06
rv2733 left
|
|||
masak | hm. not getting anything constructive done. thinking of going to bed. | 22:09 | |
'night, #perl6. | |||
jnthn | o/ | ||
22:10
masak left
|
|||
pugssvn | r31736 | lwall++ | [Numeric] fix typo and a technicality pointed out by Minimiscience++ | 22:10 | |
22:21
pjcj joined
22:22
alester left
|
|||
TimToady | jnthn: Code() I'd think | 22:22 | |
jnthn | TimToady: ok | ||
jnthn tries a spectest with that | 22:26 | ||
pugssvn | r31737 | lwall++ | [S02,S06] change YOU_ARE_HERE to {YOU_ARE_HERE} to better represent the UNIT block | 22:41 | |
22:42
pmurias left,
timbunce left
22:50
pmurias joined,
pmurias left
22:53
PZt joined
22:56
gbacon joined
|
|||
pugssvn | r31738 | lwall++ | [STD] change YOU_ARE_HERE to {YOU_ARE_HERE} | 23:02 | |
r31738 | [tryfile] find the spec dir even if .t file is from command line | |||
jnthn | rakudo: say defined("a" => 3).WHAT; say (defined("a" => 3)).WHAT | 23:07 | |
p6eval | rakudo c513fb: OUTPUT«0Int()» | ||
jnthn | oh hmm | ||
token prefix:sym<defined> { <sym> » <O('%named_unary')> } | |||
STD don't have that. | 23:08 | ||
23:09
meppl left
|
|||
dalek | kudo: 13dc51c | jonathan++ | src/builtins/Signature.pir: Make sure we never end up with a a null string in a Parameter object. |
23:09 | |
kudo: a63b5c5 | jonathan++ | src/core/Signature.pm: Remove a workaround and some other tweaks to avoid a meta-error in reporting |
|||
kudo: dd8d5d7 | jonathan++ | src/Perl6/Actions.pm: Make sure &no::such doesn't give back a Null PMC. |
|||
ingy refactors ufo, FTW! | 23:18 | ||
23:24
snarkyboojum joined
23:38
jferrero left
23:42
whiteknight left
23:47
M_o_C left
|
|||
ingy | moritz_: hi | 23:47 | |
moritz_: fyi... PREFIX=some/path make -e install | 23:48 | ||
moritz_: works now... | |||
moritz_: and ufo is much smaller in the process! | |||
ingy does a little Makefile dance | 23:49 | ||
make ingy dance | |||
[Coke] | no rule to make target ingy. | 23:55 | |
23:55
snarkyboojum left,
gbacon left,
justatheory left,
mberends left,
dalek left,
buubot left,
simcop2387 left,
buu left
23:56
Psyche^ joined
23:59
snarkyboojum joined,
gbacon joined,
justatheory joined,
mberends joined,
PacoLinux joined,
dalek joined,
buubot joined,
simcop2387 joined,
buu joined,
Khisanth joined,
thepler joined,
sjohnson joined,
yahooooo joined,
knewt2 joined,
card.freenode.net sets mode: +ovv mberends dalek buubot
|