»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | 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 lichtkind on 5 March 2010.
00:00 ash__ joined
masonkramer I'm not quite following. The module that requested what? The module that requested the registration of a CANDO, or the module that asked $foo whether it 'bars'? 00:01
pugssvn r31371 | sorear++ | [viv] Allow arguments to be passed to emitters. Use this to start assembling the viv --psq declaration system.
sorear masonkramer: the latter 00:02
our import system is designed to stop action at a distance... even the good kind
masonkramer What other module would need to know that $foo.bars? 00:04
00:06 ash__ left, supernovus joined
masonkramer Wait. So if I'm in package Foo; I can't do this: $foo.baz.bars, if Baz::bars() is a CANDO multi? 00:08
or $self.baz.bars more likely 00:09
sorear That's not what I mean
If you're in package Foo, you can do Bar::x
If you're in package Baz, you can do Bar::x, BUT IT CALLS CANDO AGAIN EVEN IF CANDO INSTALLED A SYMBOL!
because the symbol tables are not shared between different importations of the same module 00:10
this is harmful if you're using CANDO for, uh, automatic loading
if you're using it for something else it's not so bad
masonkramer OHHhhhhh. 00:11
That's bad!
but couldn't they be installed via the metaclass at runtime? 00:12
something like... multi CANDO { ... blah blah ... $self->meta->add_method sub { ... }} 00:13
sorear that only works if CANDO is in a class 00:14
masonkramer Gah. 00:18
00:20 snarkyboojum joined 00:22 supernovus left 00:32 fridim_ joined 00:36 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42, christine left 00:40 masonkramer_ joined, masonkramer left, masonkramer_ is now known as masonkramer
TimToady well, there are various ways of making CANDO work on functions, some of which off more opportunity for pessimalization than others 00:41
00:42 christine joined
TimToady one possibility that is fairly innocuous is to register one or more packages as failovers if a function isn't found in in the standard lexical search. 00:42
this preserves the efficiency of everything coming out of CORE, at the expense of not allowing you to shadow any existing lexical names
or one could call functions directly out of the CANDO'd package using a specific notation, if you want to bypass any lexical names 00:43
00:44 meppl left
TimToady but importing a CANDO doesn't even necessarily have to involve a named package, just register the package to fail over to, which could be anonymous 00:44
Wolfman2000 ...anyone know when masak is planning on coming back? I want to show him a non perl project I've been improving in case my web development skills are still needed for a Perl 6 project 00:45
TimToady and then the CANDO can presumably install names into said package to cache callables; presumably the package's names would be examined before CANDO, or it won't help 00:46
Wolfman2000: he is likely to be sleeping right now, given his timezone 00:48
Wolfman2000 ...right. worldwide channel, I never remember which time zone is which
00:51 fridim_ left, Rincewind left, sorear left 00:52 sorear joined
TimToady sorear: re binding to dynamic vars, it seems like it would be permissible from the standpoint of knowing where the variable name is stored, since lookup of necessity must find the lexpad in question (in the absence of caching) 00:53
however, we need to make some promises to the optimizer here, at least for readonly variables
if a dynamic variable is initialized with ::=, I think this implies that such variables are only for conveying values downward, much like env vars are mere string values 00:54
for other dynamic variables, the variable itself is the "value" being passed down, so that it can be an lvalue, and perhaps also a bvalue 00:55
00:56 JimmyZ joined
TimToady if there's some good reason for restricting dynavars to lvalues and disallow bvalues, I'd be okay with that, I think 00:56
so ::= vars can cache values lower in the call tree, while other's can only cache the location to avoid chasing up the callframes at least 00:57
00:59 Schwern left
TimToady so I could be persuaded that we need an 'is bindable' on a dynamic variable to keep it "soft" 01:00
01:07 JimmyZ left 01:11 TiMBuS joined
k23z__ so what's up ? 01:14
01:16 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
Tene TimToady: any examples of lists degenerating to single values? 01:20
TimToady sure, just a sec 01:21
here's one from earlier today 01:22
rakudo: my %h; %h.push: { a => 1, b => 2, c => 1}.invert; say %h.perl
p6eval rakudo 92e914: OUTPUT«{"2" => "b", "1" => ["c", "a"]}␤»
TimToady the value might or might not be an array, but you can iterate any of the values
Tene Thanks. :) 01:23
TimToady jnthn, pmichaud: take must decontainerize by default just as return from a non-rw function does 01:27
in fact, since rw-ness is an attribute of the function, not the return statement, I'd be tempted to do similarly for gather 01:28
and say that rw-ness is an option on the gather, not on the take
gather-rw { ... take $x ... } or some such 01:29
k23z__ what's up with Perl6 recently ?
01:29 xabbu42 left
k23z__ is CGI working yet ? 01:29
01:29 xabbu42 joined
k23z__ how 'bout any web stuff ? how 'bout sockets ? 01:29
how 'bout pipes/fifos ?
TimToady yes, but most of the people who are familiar with that are asleep right now
k23z__ hmm , would that be masak ? 01:30
snarkyboojum k23z__: web/sockets/CGI stuff is working
k23z__ snarkyboojum: last time I been here and asked that(1-2 months ago) it was broke, it's nice to know it's working now
snarkyboojum: have you played with that part ?
snarkyboojum k23z__: I've played with sockets and http::client etc, not so much CGI or web 01:31
k23z__: just wrote a little identi.ca command line client using http::client with basic auth etc :)
k23z__ snarkyboojum: can I haz some looks ? 01:32
snarkyboojum: have you gots them githubz ?
snarkyboojum uses github.com/snarkyboojum/denter, github.com/snarkyboojum/http-client, github.com/snarkyboojum/Perl6-MIME-Base64
that http-client is a forked version of carlins original to do basic auth 01:33
k23z__: jnthn recently put together a demo using perl 6 and CGI from perl 5 (using blizkozt) for the kiev hackathon (I think) - I'll see if I can find that post 01:35
k23z__: also supernovus has just put up his SCGI library on proto
k23z__: and then there's masak's web etc ;) (not sure if that's running on master atm) 01:36
k23z__ stuff seems to be getting together 01:37
snarkyboojum k23z__: "stuff" is definitely getting quite useable :) 01:38
01:39 ajs1 joined
snarkyboojum k23z__: re Perl 6/FakeDBI/JSON::Tiny/CGI/blizkost -> pivo.jnthn.net/ 01:39
01:41 ajs2 joined 01:42 ajs left 01:43 ajs1 left 01:48 eternaleye joined
snarkyboojum you'll notice Fat Yak from Sydney :P very nice beer for hot summer days :) 01:50
Wolfman2000 masak is the expert on the Perl 6 web activities. I myself know only...1/200th as much really. 01:53
k23z__: ^^
01:57 patspam left
snarkyboojum k23z__: just tried web and doesn't look like it's running on master yet 01:58
k23z__: but tene or masak could tell you more about that :) 02:04
02:04 ajs2 is now known as ajs 02:05 whiteknight left 02:09 gfx joined
snarkyboojum would be awesome to have proto linking off to another page giving an indicator if test suites for modules pass on current rakudo and/or general working status 02:11
02:18 fridim_ joined, xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
pugssvn r31372 | lwall++ | [S06] spec processing of rw vs de-containerized return values 02:24
pmichaud TimToady: (decontainerize) noted 02:25
didn't know that had to happen for non-rw functions too, but that's certainly doable
02:25 plobsing joined
TimToady I think uniformly defaulting to value returns is sane 02:26
02:26 ab5tract left
TimToady rakudo: my $x = 1; sub foo () { $x }; foo() = 2; say $x 02:27
p6eval rakudo 92e914: OUTPUT«2␤»
TimToady this should not allow assignment
02:28 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
TimToady rakudo: my $x = 1; sub foo () { 1 }; foo() = 2; say $x 02:28
p6eval rakudo 92e914: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/vcLYLM87An␤»
TimToady should act more like that
except we can probably carp at compile time 02:29
02:29 Visitor99 joined
sorear TimToady: What I'm thinking of is that, if contextuals are bvalues, "my $x ::= 1" can still be changed in called methods 02:29
Which seems to defeat much of the purpose 02:30
TimToady that would also have to be special cased where the optimizer hasn't already "valueized" it
basically, anywhere we say the optimizer is allowed to assume such-and-so, we should not let people get away with it when it doesn't 02:31
(if possible)
or it should be officially specced as erroneous
sorear Do we expect the number of "The optimizer is allowed to assume such-and-so" to increase much? 02:32
I find that quite a few intuitively obvious such things don't seem to be mentioned anywhere
02:35 Schwern joined
TimToady expects that the specs will continue to be filled out with stuff that is "intuitively obvious but needs to be documented anyway" 02:36
feel free to make a list 02:37
02:40 Visitor99 left, Visitor99 joined
sorear thanks, I'll start keeping one 02:47
on a completely unrelated note
when a block is entered, how does Perl 6 know what to clone
?
pugssvn r31373 | lwall++ | [S03] explain more about the relationship of hypers with lazy infinitude 02:55
02:56 justatheory left
TimToady in the absence of eval, the compilation already knows what external lexicals have been referenced 02:57
and I speculated about evals earlier today
std: my $x; {{{{ $x; my $x }}}} # middle $x creates alias in inner pad 02:58
p6eval std 31372: OUTPUT«===SORRY!===␤Lexical symbol '$x' is already bound to an outer symbol (see line 1);␤ the implicit outer binding at line 1 must be rewritten as OUTER::OUTER::OUTER::OUTER::<$x>␤ before you can unambiguously declare a new '$x' in this scope at /tmp/ioYAVnzP4M line
..…
sorear right 03:06
colomon TimToady: just looking at the hyper / lazy change. Is that actually workable?
sorear normally, I imagine closure cloning as being something that happens when the closure expression is evaluated
colomon It's not clear to me how to figure out how to DWIM without knowing the length of the lists in advance.
sorear but that doesn't work in Perl 6, because the closure expression is evaluated at BEGIN time and the result installed into the protolexpad, for "sub"
so I'm back to not really knowing what should happen 03:07
TimToady colomon: as it says, it depends on the data structure 03:08
colomon hmmm... okay, I've worked out how to handle the dwimmy cases with lazy lists for input. I guess the non-dwimmy case is obvious, though it really sits in my craw that doing it this way, we can only report an error after doing all the calculations. 03:15
03:21 ciphertext joined 03:23 Schwern left
sorear rakudo: my &foo; say &foo.WHAT; 03:27
p6eval rakudo 92e914: OUTPUT«Any()␤»
sorear rakudo: my &foo; say VAR(&foo).WHAT; 03:28
p6eval rakudo 92e914: OUTPUT«Could not find sub &VAR␤ in main program body at line 11:/tmp/HyAEvgXOha␤»
sorear rakudo: my &foo; say &foo.VAR.WHAT;
p6eval rakudo 92e914: OUTPUT«Method 'VAR' not found for invocant of class ''␤ in main program body at line 11:/tmp/WeuPSvdg9C␤»
pugssvn r31374 | sorear++ | [viv-psq] Translate declarations of $@& variables 03:44
03:45 agentzh joined 04:05 envi^home joined 04:17 diakopter sets mode: +o sorear 04:22 porco joined, agentzh left
diakopter sorear: WOW 04:25
r31374. excellent
04:25 redicaps joined
diakopter Dictionary[str,$type] 04:25
super-cool
04:27 porco left
diakopter experiences yet another Chrome (dev channel) fail 04:27
sorear WOW? that was a tiny step 04:29
right now I'm trying to do subs 04:30
the hard part /here/ is that, in order to correctly call a sub (STD uses named and optional params), I need to know its signature
so I need to hack Actions to save the name -> definition mapping 04:31
and you, how goes grammars?
04:32 tedv left 04:40 [mark] joined, fridim_ left
diakopter no progress other than while sleeping. I have the whole weekend, though. 04:46
r31374 is WOW b/c it's exactly as I imagined it. ;) 04:50
(effectively, I mean) 04:51
hrm, it seems perlesque evalbot is still broken
04:59 Guest23195 joined 05:01 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 05:12 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 05:32 macdaddy left
sorear ugh. this is not being very easy 05:34
05:37 orafu left, orafu joined
sorear TimToady: a little help here? How could I go about adding a position -> $*CURPAD mapping to Actions output? 05:45
05:55 Rincewind joined 05:57 Schwern joined 06:00 fridim_ joined 06:04 redicaps left, redicaps joined 06:11 ciphertext left
TimToady well, the <.newpad> is called at about the start, and at the end is typically something like <.checkyada> or <.getsig> or <.getdecl> 06:12
06:13 Schwern left 06:16 Visitor99 left 06:20 redicaps left, xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 06:28 Schwern joined
sorear TimToady: how would I translate that into data structures? 06:35
06:37 ejs joined, Schwern left 06:50 gfx left
pmichaud phenny: tell jnthn draft blog post at www.pmichaud.com/sandbox/blog-1.html . Comments welcomed, I'll review in the morning (about 12h00 utc) and post sometime after that. 07:01
phenny pmichaud: I'll pass that on when jnthn is around.
pmichaud phenny: tell moritz_ draft blog post at www.pmichaud.com/sandbox/blog-1.html . Comments welcomed, I'll review in the morning (about 12h00 utc) and post sometime after that.
phenny pmichaud: I'll pass that on when moritz_ is around.
pmichaud (others are welcome to comment also :) 07:02
off to sleep
07:04 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 07:17 Schwern joined, M_o_C joined 07:25 Schwern left 07:32 molaf joined 07:35 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
sorear tries something 07:44
07:46 tadzik joined 07:50 Su-Shee joined, ciphertext joined 07:52 eternaleye left 07:53 PZt left 07:54 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 08:01 PZt joined 08:04 Schwern joined 08:12 plobsing left, jedai joined 08:16 ejs left
mberends good morning 08:17
sorear hello 08:20
pugssvn r31375 | sorear++ | [STD] A first wild cut at attaching pads to the syntax tree 08:21
r31375 | [viv] Include full symbol tables in store files
08:23 bbkr left, bbkr joined 08:28 Rincewind is now known as Ross, Ross left, Ross joined 08:33 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 08:42 Schwern left 08:44 azert0x joined, azert0x left, azert0x joined 08:45 am0c__ is now known as am0c 08:55 xabbu42 left
jnthn morning, #perl6 09:14
phenny jnthn: 07:01Z <pmichaud> tell jnthn draft blog post at www.pmichaud.com/sandbox/blog-1.html . Comments welcomed, I'll review in the morning (about 12h00 utc) and post sometime after that.
09:17 ciphertext left 09:24 TiMBuS left
jnthn TimToady: (decontainerize) that sounds pretty sane 09:28
TimToady: Less sure on the new bunch of -rw variants of things, but maybe that's OK too. 09:30
09:34 fridim_ left 09:37 redicaps joined 09:40 Mowah left 09:43 am0c left
moritz_ good morning 09:45
phenny moritz_: 07:01Z <pmichaud> tell moritz_ draft blog post at www.pmichaud.com/sandbox/blog-1.html . Comments welcomed, I'll review in the morning (about 12h00 utc) and post sometime after that.
moritz_ thanks phenny
09:45 Mowah joined
moritz_ phenny: tell pmichaud +1 to the blog post 09:47
phenny moritz_: I'll pass that on when pmichaud is around.
moritz_ rakudo: say (*-3).signature.perl 10:02
p6eval rakudo 92e914: OUTPUT«:(;; Mu $x)␤»
moritz_ rakudo: say (*-3).signature.arity
p6eval rakudo 92e914: OUTPUT«Method 'arity' not found for invocant of class 'Signature'␤ in main program body at line 11:/tmp/3lnhooWaUi␤»
10:09 azert0x left
moritz_ rakudo: class A { multi method b($x where { 0 } ) { } }; A.new.b(4) 10:11
p6eval rakudo 92e914: OUTPUT«No candidates found to invoke␤ in main program body at line 11:/tmp/jdOpy6exrT␤»
moritz_ submits rakudobug about LTA error message 10:13
10:19 meppl joined 10:41 azert0x joined 10:48 azert0x left 10:53 azert0x joined 10:55 Trashlord left 10:57 TiMBuS joined 11:01 whiteknight joined 11:03 pjcj left, pjcj joined 11:10 Trashlord joined 11:17 clintongormley joined 11:19 pmurias joined 11:21 tadzik left
colomon alpha: say 1 == 1 + 0i 11:33
p6eval alpha 30e0ed: OUTPUT«1␤»
colomon rakudo: say 1 == 1 + 0i 11:34
p6eval rakudo 92e914: OUTPUT«0␤»
colomon doh!
11:36 tadzik joined
jnthn pmichaud: For when you has an awake: 11:38
our sub foo() { return ['a'], ['b'], ['c']; }
my (@a, @b, @c) = foo(); say @a; say @b; say @c;
a b c
Rather than a, b and c on lines of their own. Is this correct - it's not what I expected?
11:38 ab5tract joined
jnthn ah, more succinct 11:40
rakudo: my @a = 1,2; my @b = 3,4; (@a, @b) = (@b, @a); say @a; say @b;
p6eval rakudo 92e914: OUTPUT«3 4 1 2␤␤»
TiMBuS rakudo: my @a = 1,2; my @b = 3,4; (@a, @b) = (@b, @a); say @a; 11:43
p6eval rakudo 92e914: OUTPUT«3 4 1 2␤»
TiMBuS er
jnthn TiMBuS: Yes, surprised me too.
colomon actually, that's what I'd expect. 11:44
jnthn It's what I'd expect in Perl *5*.
TiMBuS oh i get it now
jnthn I thought that was changed in Perl 6.
redicaps Hello Perl6 11:47
woosley@woosley-laptop:~$ ./rakudo/perl6
Null PMC access in find_method('new_class')
current instr.: '' pc -1 ((unknown file):-1) (:5876)
Segmentation fault
why this is happening? 11:48
jnthn redicaps: Did you make install? 11:50
You need to do that before calling Rakudo from another directory.
redicaps no
Oh, I see
rakudo: my ($a,$b) = "test".split("d"); say $a; $b.split(" "); 11:54
p6eval rakudo 92e914: OUTPUT«test␤Method 'split' not found for invocant of class 'Failure'␤ in main program body at line 11:/tmp/GrJUDg3j5s␤»
redicaps The error message looks so strange. 11:55
jnthn I'm not sure that's quite right... 12:04
rakudo: say Failure ~~ Cool
p6eval rakudo 92e914: OUTPUT«0␤»
jnthn rakudo: say Failure ~~ Any 12:05
p6eval rakudo 92e914: OUTPUT«1␤»
jnthn Maybe Failure should be Cool.
12:05 tomaw left 12:06 arthur-- left 12:07 tomaw joined
redicaps It is quit confusing for a beginner to debug what is wrong with the code. 12:07
12:19 mmcleric joined, arthur-- joined
jnthn redicaps: Well, I half suspect you shouldn't have had anything to debug (e.g. Rakudo should have treated it as an empty string). 12:19
12:21 k23z__ left 12:24 M_o_C left
redicaps jnthn: I do think it should be undefined or something more explicit. It is really hard the understand what is class Failure or Cool 12:26
12:26 redicaps left 12:29 redicaps joined
jnthn A Failure object is undefined. There's no single "undef" in Perl 6 as in Perl 5, though. 12:36
12:40 masonkramer left, masonkramer joined
pmichaud good morning, #perl6 12:40
phenny pmichaud: 09:47Z <moritz_> tell pmichaud +1 to the blog post
jnthn morning, pmichaud 12:41
pmichaud my (@a, @b, @c) = foo(); say @a; say @b; say @c;
puts everything into @a
jnthn pmichaud: :-( 12:42
pmichaud it's still a list assignment, and the array container slurps the entire list.
jnthn So (@a, @b) = (@b, @a) cannot be used to swap around two arrays?
pmichaud not as far as I know
jnthn I'm sure that was spec once. 12:43
But maybe not now.
pmichaud yes, I remember that also.
jnthn Ah, OK.
TiMBuS what about :=
jnthn my (@a, @b, @c) := foo(); # does of course work ;-)
TiMBuS: I tested it. It does the right thing.
pmichaud is :(@a, @b) := (@b, @a) still valid? 12:44
jnthn pmichaud: mberends++ has a couple of comments on the blog post, but is afk for 5-10 mins or so
pmichaud okay, reading backlog
jnthn pmichaud: Yes but it does nothing without a declarator, iirc.
pmichaud: ah, he didn't write them on channel I think
pmichaud: More wanted to discuss
If you can hold on for 5-10 mins he'll be back :-) 12:45
pmichaud jnthn: right, I'm reading backlog to pass the time while waiting for mberends++ comments :)
jnthn Ah, OK :-)
pmichaud (sorry, I wasn't clear on that. your statement was clear :)
jnthn tries to fix postcircumfix in Role to deal with just expecting one argument that may be a Parcel 12:46
(postcircumfix:<[ ]>, that is)
pmichaud Parcel or Positional? 12:47
(the argument, that is) 12:48
what use case are you looking at?
jnthn pmichaud: Actually it's...ugly. :-(
Hmm
role Foo[$x, $y] { ... }
Foo[4, 5].new
I wonder if we should really be parsing that as a bog standard postcircumfix. 12:49
jnthn checks STD
Ah no 12:50
oh
STD is inconsistent 12:51
module_name parses
[ <?before '['> :dba('generic role') '[' ~ ']' <arglist> ]?
pmichaud that looks right to me 12:52
jnthn but in typename
# parametric type?
<.unsp>? [ <?before '['> <param=.postcircumfix> ]?
it parses postcircumfix there
pmichaud hmmm.
jnthn It should be one way or the other 12:53
Not different.
And I think it should be <arglist>
Because they're really arguments to go into a multiple dispatch.
pmichaud if it actls more like a signature bind, then <arglist>
jnthn To select which role to do.
Yeah, quite
But
std: role Foo[::T] { }; 12:54
p6eval std 31375: OUTPUT«ok 00:01 112m␤»
jnthn std: role Foo[::T] { }; Foo of Int
p6eval std 31375: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/VMOAqZBLuK line 1:␤------> role Foo[::T] { }; Foo ⏏of Int␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 112m␤»
jnthn We currently don't parse a typename as a term
Meaning that Foo[Int] won't get parsed by the typename rule
But as a standard postcircumfix on Foo
pmichaud checking 12:55
I'm surprised typename isn't parsed as a term. What is it parsed as?
jnthn (where we === both Rakudo and STD, afaict)
We parse typename in various places
pmichaud as in, my $a = Int ?
that seems to me to have to be a term *somehow*
jnthn That parses by term:name 12:56
Ah
term:name does have some extras we don't have in Rakudo though
:dba('type parameter')
<.unsp>? [ <?before '['> <postcircumfix> ]?
pmichaud right 12:57
there ya go :)
jnthn Again, postcircumfix that wants to be arglist
I guess being able to write
Crate of Beer.new
And have that mean like (Crate of Beer).new
Is visually odd.
And thus why we don't just have typename as a term.
pmichaud right -- terms tend to not want spaces 12:58
(unless made into a pill somehow)
jnthn C# allows such a thing and I always find it really odd looking.
var foo = new Blah().some_method();
Which is 12:59
var foo = (new Blah()).some_method();
But it groups wrong visually.
perl6++ for not doing that one :-)
pmichaud I mean, some terms can have spaces -- like declarators -- but if you want to perform an operation on them you generally have to paren them
jnthn *nod*
pmichaud anyway, if Role[<mumble>] is meant to act like a signature bind, then I'd say it should indeed be arglist 13:00
jnthn OK, thank 13:01
Changing it to be that in Rakudo
pmichaud there could be an argument that postcircumfix:<[ ]> should act like a signature bind.
jnthn Then hopefully we can have roles with multiple parameters working again. :-)
pmichaud (as we had it before this last refactor)
jnthn I could argue that RoleName[...] should never call postcircumfix:<[ ]>
pmichaud it just seemed much simpler with a single argument.
jnthn But is actually just syntax for a parametric type 13:02
colomon errr... is there a problem with sleep.t?
jnthn I slept fine.
pmichaud the question is whether my $x = role ... ; $x[3, 4] should work
jnthn pmichaud: Yeah
pmichaud if yes, then it's not syntactic
jnthn pmichaud: Perhaps
pmichaud: But then 13:03
pmichaud: eeeewwww
pmichaud: 'cus that's going to pass one arg. :-/
Oh, I know
I'll translate the forms that parse an arglist to the "real" method that does the finding of the correct role
And then have postcircumfix:<[ ]> accept one arg and flatten it out as needed. 13:04
pmichaud just to be clear, I'm not really opposed to switching postcircumfix:<[ ]> back to acting like a multi-arg sig
jnthn I'm agnostic on that.
pmichaud maybe we should ask TimToady++ how he thinks of it
jnthn Remember that postcircumfix:<( )> is defined as taking one arg.
So actually one arg is consistent. 13:05
pmichaud oh, if postcircumfix:<( )> takes a single arg, that answers it.
jnthn Well
I had it as many and ruoso really wanted it as one (a Capture), which I came around to agree with after a while. :-)
Especially after realizing that unpacking syntax meant that actually getting the args was an extra set of parens away. 13:06
pmichaud my reasons for wanting postcircumfix:<[ ]> to be single arg somewhat went away after I add .at_pos and .at_key
*added
jnthn imo, let's keep them 1. I'll make an arity-1 postcircumfix for non-syntactic usages of roles.
And I'll treat the ones we parse syntactically as signatures and work them slightly differently. 13:07
er, as arglists
pmichaud okay. it shouldn't be hard to switch if we need to do so.
jnthn Quite.
pmichaud: A heads up - we seem to have a growing population of RT tickets about parsing issues involving "keywords". 13:08
pmichaud jnthn: okay, excellent. I still want to do an RT review -- planned to do that thu and/or yesterday but got very sidetracked :-|
jnthn The latest one is the all too odd
has Str $.method is rw;
rakudo: class C { has Str $.method is rw; } 13:09
p6eval rakudo 92e914: ( no output )
jnthn oh
it's not the decl
rakudo: class C { has Str $.method is rw; }; C.new( method => 'GET' );
p6eval rakudo 92e914: OUTPUT«===SORRY!===␤Malformed method at line 11, near "=> 'GET' )"␤»
jnthn That one.
Seems we may sometimes over-commit.
pmichaud std: class C { has Str $.method is rw; }; C.new( method => 'GET' ); 13:10
p6eval std 31375: OUTPUT«ok 00:01 112m␤»
pmichaud yes -- STD gets it right by LTM.
at least I think that's how it does it.
jnthn Ah, OK
pmichaud looks.
jnthn I was wondering if it wasn't a manifestation of that backtracking bug we also currently have.
pmichaud shouldn't be 13:11
jnthn OK
pmichaud the backtracking bug comes into play when you have a single rule where you need multiple successes of the rule before you can find the success of the match
let me track that down to make sure, though.
because I'm not sure it's LTM at work here. 13:12
jnthn pmichaud: We have other such issues too
rakudo: sub Quack { say "ok" }; Quack()
p6eval rakudo 92e914: OUTPUT«ok␤»
jnthn rakudo: sub Quack { say "ok" }; Quack
p6eval rakudo 92e914: OUTPUT«===SORRY!===␤Confused at line 11, near "Quack"␤»
pmichaud that one definitely feels more like backtracking bug. 13:13
jnthn Which again looks to me suspiciously like over-commital.
moritz_ that's what prevented me from implementing adverbs on s///
jnthn Well, method could be too
pmichaud right
so perhaps that is what is happening.
mberends hi pmichaud, there were just two words in the blog that looked LTA to me from a PR perspective: vaporware and shame. I'd suggest disappointment for the latter, not too sure about the former. "incomplete" doesn't quite do it, maybe the sentence needs re-structuring to eliminate the evidence or the status word. Other than that, the post looks spot on.
pmichaud mberends: working 13:16
"disappointment" isn't quite right either 13:17
I agree with avoiding "shame"
13:17 rv2733 joined
pmichaud I changed the previous part to read: 13:17
and that some will undoubtedly cite this delay as yet more "evidence"
that we'll never see a release of Perl 6.
reworded that again just now 13:18
mberends ok. s/shame/harm/ ?
pmichaud harm is definitely closer
mberends setback
pmichaud how about this...
"But given the 13:19
circumstances, I think we feel that we do less damage by missing
the target by a month than we do by releasing something less than
our vision.
...still not quite right.
mberends damage is too svere
pmichaud agreed.
aha 13:20
moritz_ that we do a better job by...
pmichaud "But given the
circumstances, I think we feel that serve the cause better by
missing our target by a month than we would by releasing something
less than our vision.
...that's closer. 13:21
mberends +1 to that, and to moritz_++
jnthn We're true believers in The Cause!
pmichaud changed "the cause" to "our cause"
mberends the cause is a bit cult-y
jnthn :-)
moritz_ "something considerably less than our vision"
pmichaud I could go either way on considerably
moritz_ too 13:22
pmichaud I don't want it to sound too much like we'll have to work super-hard to make a July release.
jnthn considerably may suggest that we have still too much to do
er, still have
:-)
pmichaud instead of "our cause", perhaps "the future" or "Perl 6" ? 13:23
mberends +1 the latter
pmichaud aha
yes
now changed
"But given the
circumstances, I think we feel that we promote Perl 6 better by
missing our target by a month than we would by releasing something
less than our vision.
and maybe even get rid of the 6. 13:24
mberends and s/missing our target/reaching our target delayed/ 13:25
pmichaud delaying our target
mberends ok
pmichaud delaying the release
moving the release target 13:26
mberends release date
pmichaud +1
mberends wfm
pmichaud excellent, thank you. 13:27
any other comments?
(from anyone?)
can the post wait another couple of hours?
mberends likes, anyway. sure :)
pmichaud (I have to run some important errands soon, would rather wait a bit more for additional comments than post now)
jnthn Aye, can wait a little longer 13:28
pmichaud I plan to post this to use.perl and rakudo.org ... seem reasonable? does it need to go anywhere else? p6c?
jnthn Gives more people time to think of anything.
pmichaud: I assume your use.perl.org journal is aggregated on Planet Perl 6?
pmichaud jnthn: it is. 13:29
jnthn OK, then sounds good.
Could also twit it.
pmichaud oh, that's a really good idea.
jnthn er, tweet
moritz_ :-)
pmichaud we'll do that then also.
jnthn
.oO( you should see how I write the past tense! )
pmichaud okay, I need to run off for a bit, hope to be back short-ish
jnthn It may be walk and noms time here in a little bit too :-) 13:31
13:35 rv2733 left 13:41 foodoo joined
moritz_ SVG::Plot now has support for simple xy (point) plots 13:49
13:52 tri1 joined
colomon \o/ 13:56
moritz_ work on xy (lines) now 13:58
colomon wow, just had my second hang in the test suite this morning. 14:02
My simple anti-patch must have really borked things up. 14:03
moritz_ knows anti-pasti, but not anti-patches :-) 14:04
xy lines plot "work"
moritz.faui2k3.org/tmp/circle.svg 14:05
parametric plot x = sin(t), y1 = cos(t), y2 = 2 cos(t) 14:06
colomon nice 14:07
14:11 tri1 left 14:12 Trashlord left 14:14 Trashlord joined 14:18 foodoo left 14:22 redicaps left
moritz_ time to integrate and plot a linear model... let's hope it works 14:31
if it does, I'll have something nice to blog about
14:33 mmcleric left
moritz_ /o\ doesn't work 14:34
\o/ works 14:41
it's glacial 14:42
14:42 snarkyboojum left 14:44 mmcleric joined 14:45 mmcleric left, snarkyboojum joined 14:46 mmcleric joined
moritz_ a minute to integrate a simple model with two variables from 0 to 5 seconds 14:47
arnsholt Is the syntax for accessing a var $bar in package Foo like Perl 5: $Foo::bar? 14:49
moritz_ yes 14:50
arnsholt Goodie
pmichaud good re-morning, #perl6 14:51
jnthn re-good morning, pm 14:52
moritz_ re-good re-morning, pm :-) 14:53
jnthn spectests the parametric role type name cleanups/fixes and heads for noms with mberends++ 14:57
mmcleric hi jnthn and everyone, do you have more challenging tasks for me? :)
pmichaud mmcleric: finish the Rakudo implementation. By Monday. :)
mmcleric if you don't remember my nick, i'm the guy from hackaton in Kiev from last week :)
moritz_ is glad he isn't the only one being asked for challenges :-)
jnthn Привет, mmcleric :-) 14:58
mmcleric привет :)
jnthn Yes, I remember. :-)
mmcleric it's too late for my patch for series operator, colomon fixed it already
colomon sorry about that.
mmcleric :D 14:59
14:59 kensanata joined
jnthn mmcleric: Depends how challenging you fancy. ;-) 14:59
mmcleric: I can point you at something though.
mmcleric: At the moment we can do things like:
mmcleric i don't mind doing some research, even it'll be too hard for me, at least i'll get used to codebase 15:00
jnthn rakudo: my $x = * + 1; say $x.WHAT
p6eval rakudo 92e914: OUTPUT«Block()␤»
jnthn You'll see it's made a closure
rakudo: my $x = * + 1; say $x(2)
p6eval rakudo 92e914: OUTPUT«3␤»
jnthn And you get arity 2 closures from
rakudo: my $x = * + *; say $x(2,40)
p6eval rakudo 92e914: OUTPUT«42␤»
moritz_ \o/ the answer
jnthn That all works nicely. It's a compile time transform 15:01
mmcleric yeah, i remember this from your talk
jnthn See whatever_curry in Actions.pm
OK
Trouble is
my $x = * + * + *; say $x.WHAT
rakudo: my $x = * + * + *; say $x.WHAT
p6eval rakudo 92e914: OUTPUT«Block()␤»
jnthn ..
15:01 am0c joined
moritz_ rakudo: my $x = * + * + *; say $(1, 2, 3) 15:01
p6eval rakudo 92e914: OUTPUT«123␤»
moritz_ rakudo: my $x = * + * + *; say $x(1, 2, 3)
p6eval rakudo 92e914: OUTPUT«Too many positional parameters passed; got 3 but expected 1␤ in <anon> at line 1:/tmp/R8nc9ffvy0␤ in main program body at line 11:/tmp/R8nc9ffvy0␤»
jnthn Right, it's broken. :-) 15:02
moritz_ something's very wrong with it
jnthn moritz_: it's just nyi
colomon it's perfectly sensibly wrong.
moritz_ yes, that's what's wrong with it
jnthn mmcleric: Anyway, we need to handle the case where you have
colomon you'll find it's { $^a + $^b } + $_
jnthn (already curried thing) op thing
colomon or something like that.
jnthn colomon: Right 15:03
moritz_ also
rakudo: say (1 + * + 2).(39)
p6eval rakudo 92e914: OUTPUT«Method 'Num' not found for invocant of class 'Block'␤ in 'Cool::Numeric' at line 1550:CORE.setting␤ in 'Cool::Numeric' at line 1551:CORE.setting␤ in 'infix:<+>' at line 5822:CORE.setting␤ in main program body at line 11:/tmp/R3wRMi3Uvl␤»
jnthn moritz_: Ah, that's what I was trying to trigger before.
moritz_ it makes { 1 + $^a } + 2
jnthn Anyway, same underlying cause.
mmcleric ok, i see
is there RT ticket(s)? 15:04
jnthn At the moment we tag with .returns('Whatever')
15:04 whiteknight left
jnthn mmcleric: I'm not sure, but there are fudged tests. 15:04
S02-builtin_data_types/whatever.t
mmcleric: What I suggest is that we tag the things we make inside whatever_curry as :returns('WhateverCode') 15:05
And then add cases that look for those and "deal with them"
It's fine if the transform * + * + * actually comes out as the equivalent to
({ $^a + $^b}($^a, $^b) + $^c } 15:06
That is, you make a block that's arity 3
And invokes the nested whatever block with two of them
Though of course it may only have been arity 1
Anyway, once done it should be able to go as many levels deep as needed
It's a bit fiddly 15:07
colomon it's a great task. :)
moritz_ indeed
jnthn But perl6 --target=past will be a huge help in seeing what ASTs you are building.
Off hand, I don't know what the cleanest way is.
But it's fairly self-contained and would be lovely to get done. :-)
mmcleric ok, i guess i understand the problem 15:08
jnthn (should be able to do it all with changes in whatever_curry)
moritz_ discovered that he had the setups of his derivatives backwards in Math::Model :/
jnthn :-)
mmcleric++
mmcleric --target=past don't work for me 15:09
--target=pir does
moritz_ mmcleric: it doesn't work with -e
mmcleric: it should work with a file, or interactively
mmcleric oh, ok
moritz_ echo '1+2' | ./perl6 --target=past 15:10
mmcleric wow, that's a lot of code :)
moritz_ much of it is initialization, which you can ignore 15:11
jnthn OK, afk for a bit 15:12
(and mberends too :-))
15:12 justatheory joined 15:18 skids joined, justatheory left 15:19 \shade\ left 15:25 Mowah left, shade__ joined 15:40 gfldex left 15:41 gfldex joined 15:43 snarkyboojum left
cosimo FakeDBI's fetchrow_arrayref() and fetchrow_hashref() work! 15:52
is there something resembling '$|' in rakudo? 15:55
unbuffer output in some way?
15:56 snarkyboojum joined
TimToady $*OUT.autoflush = 1, but I don't know if it's implemented 15:57
TimToady has restarted his brane and it is slowly warming up to operating temperature
15:58 Mowah joined
moritz_ rakudo: class A { has %.h; method e($x) { %.h.exists($x) } }; say A.new(:h{ b => c}).e 16:00
p6eval rakudo 92e914: OUTPUT«Could not find sub &c␤ in main program body at line 11:/tmp/S_nmbXgxIl␤»
moritz_ rakudo: class A { has %.h; method e($x) { %.h.exists($x) } }; say A.new(:h{ b => 3}).e
p6eval rakudo 92e914: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'A::e' at line 11:/tmp/TX9J54eU5T␤ in main program body at line 11:/tmp/TX9J54eU5T␤»
moritz_ rakudo: class A { has %.h; method e($x) { %!h.exists($x) } }; say A.new(:h{ b => 3}).e 16:01
p6eval rakudo 92e914: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'A::e' at line 11:/tmp/0TX_NTemMV␤ in main program body at line 11:/tmp/0TX_NTemMV␤»
moritz_ rakudo: class A { has %.h; method e($x) { %!h.exists($x) } }; say A.new(:h{ b => 3}).e('b')
p6eval rakudo 92e914: OUTPUT«1␤»
moritz_ should really read the error message
rakudo: class A { has %.h; method e($x) { %.h.exists($x) } }; say A.new(:h{ b => 3}).e('b')
p6eval rakudo 92e914: OUTPUT«1␤»
moritz_ a closure inside a method should have access to attributes, right? 16:02
TimToady rakudo: $*OUT.autoflush = 1; print "Okay so far..."; exit(0) 16:03
p6eval rakudo 92e914: OUTPUT«Method 'autoflush' not found for invocant of class 'IO'␤ in main program body at line 11:/tmp/aTwf0NvAet␤»
cosimo TimToady: mmh...
TimToady that might be LHF for someone, and it's certainly going to stay regardless of any spec rewrite 16:04
moritz_ not so LHF if you consider that rakudo doesn't have proper lvalue routines yet
hm, maybe still LHF :-)
TimToady well, more like it doesn't have proper rvalue routines yet, hence the recent spec tweak 16:06
moritz_ erm, yes
rakudo: class A { has %!h; method bug { say ({ $_ => %!h{$_} }).WHAT } }; A.new.bug 16:11
p6eval rakudo 92e914: OUTPUT«Hash()␤»
16:15 arthur-- left
TimToady yes, presumably the closure closes over self 16:15
moritz_ \o/ sanity 16:16
I have a weird mixture of methods and closures (to be used as callbacks) here
16:17 arthur-- joined
moritz_ rakudo: say [].WHICH 16:18
p6eval rakudo 92e914: OUTPUT«60308592␤»
TimToady alternately, self is always really $*SELF internally...hmm... 16:19
nah
moritz_ that sounds crazy
more than usual :-)
TimToady brane is still not all the warmed up, so still in free association mode :)
I *am* crazier than usual this time of day 16:20
but you know, the only way to fake omniscience is to explore as many distinct hypothetical realities as possible 16:21
moritz_ ... which sometimes leads you into dark corners. Understood. 16:22
TimToady I got there by speculating on what the actual name of 'self' is in the lexpad 16:23
we don't just want 'self', since that would seem to make it a subroutine 16:24
moritz_ 'self', maybe?
TimToady or a type, or something constantish
16:25 [mark] left
TimToady so I was speculatin' about alternate twigils 16:25
$?SELF is wrong because it's not compile time
I suppose $!SELF is the most obvious name, though it would have to be special-cased not to be sent to the Responder Interface 16:28
or something too ugly to use, like $__INVOCANT__ 16:29
but maybe 'self' is okay, the fact that it's not a function is really only a parser issue 16:30
moritz_ if it were a function, it would have the & sigil in the lexpad 16:31
TimToady yes, more like a type or a constant name
and parsed the same as those
self is more like a temporary constant, which we've been calling readonly 16:32
maybe we should have a better way to declare those 16:33
16:35 lue joined
TimToady my readonly self = $?CURPAD.slot(0); 16:35
though come to think of it, $?CURPAD isn't compile-time constant either
lue o hello o/
TimToady since CURPAD needs to know its current clone
I guess that's really MY::
moritz_ the good news is that refactoring Math::Model to make it more correct made it about twice as fast 16:37
TimToady and $?CURPAD is the static name hash
moritz_ the bad news is that it gives wrong results now :(
moritz_ waits for TimToady to invoke MJD 16:38
TimToady heh, I was just looking it up :)
but yes, you know which one
but arguably, all these blazing fast YACCish parsers are in the same danger :P 16:40
where "the wrong answer" is defined as "This is your brain on Xtran. No more questions." 16:42
lue
.oO(I don't get it. My blazing-fast P6 interpreter say 2+2 is 5)
rakudo: say (2 + 2) ~~ 5 16:43
p6eval rakudo 92e914: OUTPUT«0␤»
moritz_ cosimo: $*OUT.autoflush implemented... I'm curious if it makes any difference for you, because it seems to be the default on my box anyway 16:45
TimToady you're not confusing it with line-buffering, are you? 16:46
16:47 ashleydev joined
moritz_ I am, I fear 16:47
TimToady rakudo: print "Okay so far..."; exit(0)
p6eval rakudo 92e914: OUTPUT«Okay so far...»
TimToady ooh, it does seem to be the default
or wait
rakudo: print "Okay so far..."; die "oops"
p6eval rakudo 92e914: OUTPUT«Okay so far...oops␤ in main program body at line 11:/tmp/kS58YBYNQr␤»
TimToady hmm, any way to kill my process without getting POSIX exit? 16:48
anyone have any coredump bugs handy?
ah, I know 16:49
moritz_ rakudo: print "Okay so far"; %();
p6eval rakudo 92e914: OUTPUT«Okay so far»
TimToady rakudo: print "Okay so far..."; sleep 9999
dalek kudo: f236549 | moritz++ | src/core/IO.pm:
IO.autoflush
p6eval rakudo 92e914: OUTPUT«Okay so far...»
TimToady maybe print is autoflushing by default
16:51 kensanata left
moritz_ the parrot documentation doesn't mention it 16:52
TimToady parrot only has it in t/configure 16:54
(and t/postconfigure)
pmichaud good almost-afternoon, #perl6 16:55
TimToady and rakudo only mentions it in the <obs('$|') message
pmichaud any last-minute comments on my blog announcement before I post?
16:56 Ross left
TimToady where is it? 16:56
16:57 Ross joined
pmichaud pmichaud.com/sandbox/blog-1.html 16:57
16:59 hercynium left
TimToady looks fine to me 17:00
pmichaud excellent. time to post, then :)
17:03 ashleydev left 17:04 Trashlord left
pmichaud use.perl.org/~pmichaud/journal/40407 17:04
17:05 Trashlord joined
TimToady when rakudo does mixins, does it check to see if the role is already mixed in, and not bother to make a new anonymous class? 17:06
pmichaud yes, I belive so.
*believe
TimToady (I'm thinking of this in relation to mixing in constraints to parameter containers)
so if you bind, and don't change the constraints, you don't have to indirect, but if the constraints change, the container you get is derived by mixin-ish-ness 17:07
assuming here that the container is in the active lexpad (whatever you call it), and can be of different type than the same parameter in other lexpads 17:09
how were you calling the static vs dynamic lexpads again?
pmichaud in Parrot, the static lexpad is a LexInfo, and a dynamic lexpad is a LexPad 17:10
TimToady 'k
pmichaud LexInfo is the compile-time scheme of what goes into the lexpad, and LexPad is the thing that maps symbols to the call-frame registers 17:11
TimToady works for me, though of course STD is calling all the Infos 'pads'
pmichaud as far as binding and constraints, I had already planned that we would derive new container constraints
(and avoid doing so when we could detect that they weren't needed) 17:12
I don't remember if it occurred to me to try mixin roles for this, but that seems to fit well
the current chain-of-indirects is more "get something to work" than "make it efficient" :) 17:13
at least for constraints, one simple approach was to create an all() junction of the container's constraints and the constraints of whatever is being bound 17:14
and then hope that the junction constructor would be smart enough to remove duplications
(and testing a constraint remains a smart match against the junction)
(blog also posted to rakudo.org)
afk for a bit, ph call 17:16
17:16 Mowah left 17:17 Mowah joined
lue afk 17:28
TimToady sorear: I want to ban the word "pad" from the compiler, and reserve it for the active pads (and maybe protopad) only 17:35
so CURPAD -> CURLEX or some such
pmichaud +2
TimToady let me know when it's not going to step on your work
or you can do it yourself 17:36
note, I'll be flying to OH overnight, so if I disappear in mid afternoon, you'll know why 17:37
pmichaud I'll be flying tomorrow
TimToady when are you getting in? 17:40
ish
(taken private) 17:43
17:43 Schwern joined 17:44 Trashlord left 17:52 dukeleto joined
pmichaud I'm arriving 15h10 17:54
(unless I get delayed somewhere) 17:55
pugssvn r31376 | lwall++ | [S10] define how CANDO works with respect to lexically-scoped function name searches 18:04
TimToady oops s/b OUR::($somefunc)() 18:07
IllvilJa Wooo! Our princess got married today! Let's call the next release of Rakudo 'Love' to celebrate that :-). 18:09
(oops, I'm probably a closet royalist ;-) )
pugssvn r31377 | lwall++ | [S10] fix thinkos and bad writing 18:11
18:13 Visitor99 joined 18:15 Trashlord joined 18:23 Schwern left 18:28 Schwern joined 18:38 itz joined 18:41 eternaleye joined
moritz_ TeX-infected. Just tried to use % as a comment character in Perl 6 18:42
18:42 molaf left
tadzik :) 18:43
moritz_ \o/ I've fixed Math::Model *and* retained most of the speed benefit 18:47
Tene perl6: say 'lazy junctions?' if 9 ~~ any(1,3 ... *);
p6eval rakudo f23654: ( no output ) 18:48
..elf 31377: OUTPUT«Parse error in: /tmp/nMfGpGFhee␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say 'lazy junctions?' if 9 ~~ ␤WHERE:/\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in `scan_unitstopper'␤ STD_red/std.rb:224:in `comp_unit'␤
..STD_red…
..pugs: OUTPUT«*** ␤ Unexpected ";"␤ at /tmp/lv8EnK2CLJ line 1, column 45␤»
Tene perl6: say 'lazy junctions?' if 9 ~~ any(1,3 ... 15);
p6eval rakudo f23654: OUTPUT«lazy junctions?␤»
..pugs: OUTPUT«*** ␤ Unexpected "15"␤ expecting operator, ":" or ")"␤ at /tmp/olDDus7Eu2 line 1, column 43␤»
..elf 31377: OUTPUT«Parse error in: /tmp/Yx1bgGf7jk␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say 'lazy junctions?' if 9 ~~ ␤WHERE:/\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in `scan_unitstopper'␤ STD_red/std.rb:224:in `comp_unit'␤
..STD_red…
TimToady nobody but rakudo is going to have any clue about ...
18:52 dakkar joined
lue hello 19:01
19:04 cono left 19:06 cono joined
lue pmichaud: how's variable refactor going? 19:07
I'd like to help, it just sounds… big.
19:08 tadzik is now known as yoda, yoda is now known as tadzik 19:10 PacoLinux left
sorear TimToady: It won't step on anything now 19:13
19:16 patrickas left, patrickas joined
sorear TimToady: consider sub foo { my $x; sub bar { $x }; } 19:19
at BEGIN time, a Sub object is created and bound to &bar in foo's protopad
I get that
when foo is entered, how does Perl 6 know that &bar needs to be cloned? 19:20
19:20 jaldhar left 19:23 gabiruh left
sorear contrast: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &note).pick } } 19:26
now, to clone &bar and bind its OUTER:: to foo's pad would be wrong
how does the cloner distinguish these cases?
19:41 plobsing joined
lue error: Entry 'src/Perl6/Grammar.pm' not uptodate. Cannot merge. 19:41
what git command can I use to resolve this?
tadzik git pull? 19:42
I guess
but, what situation?
lue I git pulled, and that happened. 19:43
moritz_ lue: git checkout src/Perl6/Grammar.pm # will throw away local changes
lue OK. [I only changed one little thing that made custom circumfix ops not parsefail, but still fail] 19:44
moritz_ if you want to keep it, commit it before pulling 19:45
lue I don't, because it doesn't get much closer, only prevents the ===SORRY!=== from happening.
19:48 lue left, lue joined 19:49 patrickas left 19:50 patrickas joined
TimToady snaptesting the pad->lex brainwash... 19:50
19:52 hercynium joined 19:53 Visitor99 left
TimToady sorear: in the latter case, cloning is obviated by the fact that neither &say nor &note can reference $x lexically, I suspect 19:54
and a closure that references no external lexvars is just an anonymous function 19:55
19:55 ashleydev joined
TimToady or maybe one just notices that any lexvars are from a different scope 19:56
it would be interesting to see what pugs makes of it.
pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &note).pick } }
p6eval pugs: OUTPUT«*** ␤ Unexpected ")."␤ expecting "::" or signature value␤ Variable "&note" requires predeclaration or explicit package name␤ at /tmp/3JN656YetV line 1, column 55␤»
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick } } 19:57
p6eval pugs: ( no output )
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick } }; bar("foo")
p6eval pugs: OUTPUT«*** No such subroutine: "&bar"␤ at /tmp/kNIxtgr7lw line 1, column 68 - line 2, column 1␤»
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick }; bar("foo") };
p6eval pugs: ( no output )
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick } }; my $b = foo(); $b("foo") 19:58
p6eval pugs: OUTPUT«foo␤»
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick } }; my $b = foo(); $b("foo")
p6eval pugs: OUTPUT«foo␤»
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).pick } }; my $b = foo(); $b("foo")
p6eval pugs: OUTPUT«foo␤»
cosimo moritz_: I'm trying autoflush
TimToady pugs: sub foo { my $x; my &bar; BEGIN { &bar := (&say, &print).[1] } }; my $b = foo(); $b("foo")
p6eval pugs: OUTPUT«foo»
TimToady sorear: however pugs is doing this is likely to be very close to correct 19:59
fsdo correct
19:59 envi^home left, kensanata joined
pugssvn r31378 | lwall++ | [STDeco] banish the word "pad" when referring to static lex info 20:01
20:05 Psyche^ joined
pugssvn r31379 | jnthn++ | [t/spec] Fudge two tests that Rakudo was passing bogusly. 20:05
TimToady there should be a mark that says "don't autounfudge"... 20:06
jnthn TimToady: It's OK, I'm about to commit a patch that makes them fail. ;-) 20:08
20:08 Patterner left, Psyche^ is now known as Patterner
dalek kudo: dd6bda0 | jonathan++ | src/ (3 files):
Some updates to parametric role parameter handling, bringing us in line with

types to bring us more in line with STD and fixing at least one RT ticket along the way.
20:10
pugssvn r31380 | jnthn++ | [t/spec] Add a test for RT#75822 and correct another test so we can un-todo it. 20:13
cosimo moritz_: it doesn't seem to make any difference for me too 20:15
moritz_: autoflush, that is
sorear TimToady: What if I do sub foo { my &bar; my $x; BEGIN { &bar := [ [ [ sub () { $x } ] ] ]; }; } 20:20
Does Perl 6 have to deeply scan all graphs referenced from the protopad?
s/&bar/$bar/
cosimo myself: interesting. FakeDBI startup cost is pretty huge, but after that it's fast 20:21
like 10s for 'use FakeDBI'
jnthn cosimo: I suspect that comes down drastically once we [can]? pre-compile it. 20:22
sorear the Rakudo parser/compiler is currently *very* slow
about 10 lines per second 20:23
how long is FakeDBI.pm?
tadzik literally?
jnthn I don't think it's as bad as 10 lines per second.
At least, it sure ain't here...
It sure wants to be much faster though. 20:24
sorear core.pm is 4000 lines, it takes about 400 seconds to get through that compile step here
it might be a non-linear thing
lue pmichaud: ping 20:27
tadzik oh, by the way. I was talking to a fellow Perlist some time ago, I told him about rakudo and Perl 6, and his was curious about GC. He said GC in Perl 5 sucks, for circular references will never be freed, and he was curious how it looks in Perl 6. I guess that's not really an issue as everything is a reference, but how does it look like now?
sorear perl 6 does not spec a GC, but it doesn't spec the lack of one, either 20:28
rakudo has a real GC
not a fake GC that can be tricked with cycles
Mildew/SMOP has a fake GC, but that's because transparent integration with Perl 5.x was a major design goal 20:29
tadzik I see. Is Rakudo's work, or Parrot itself?
sorear Parrot
I don't know about the memory management strategies of the others
mberends Su-Shee: ping 20:30
zavolaj now has a new working examples/postgresqlclient.p6 20:31
dalek kudo: 406d85f | jonathan++ | (2 files):
Apply patch from cognominal++ to implement Capture.perl.
20:33
moritz_ rakudo: say sign(-3) 20:48
p6eval rakudo 406d85: OUTPUT«-1␤»
diakopter moritz_: any clue what broke the p6eval target?
perlesque target 20:49
moritz_ diakopter: does it need any additional perl modules?
diakopter it's not perl
moritz_ diakopter: I switched to a perl 5.12.1 because STD.pm needs that
diakopter it doesn't use perl
moritz_ then i have no idea
diakopter oh, you killed the one in my screen 20:50
moritz_ yes, couldn't get at the error message otherwise :(
I can terminate mine if you want
diakopter no
well
let's have it tee somewhere
then it can run in either :) 20:51
moritz_ ok
20:51 p6eval left
diakopter but first 20:51
add this to its $PATH
oh
moritz_ which path? 20:52
diakopter is /usr/local/bin not in its $PATH ?
the evalbot's
(it's where mono's installed)
moritz_ I've removed it, because that's where the new, confusing perl was
but I think it's OK to add at the end
doing that now...
diakopter oh good :)
20:52 p6eval joined
moritz_ it's now tee'ing to ~/evalbot.log 20:52
diakopter cool
moritz_ I've put it into run.sh 20:53
diakopter yay; it works'
perlesque: say('hi')
p6eval perlesque: OUTPUT«hi␤»
moritz_ \o/
diakopter thanks
moritz_ sorry for breaking your stuff
diakopter now if only it would log what ircname sent which comand
20:54 arthur-- left
moritz_ shouldn't be hard to do 20:54
diakopter pesky malicious ircfolks have frozen it b4
and snooped
moritz_ it's in $e->who 20:55
diakopter WARNING: ALL P6EVAL INTERACTIONS ARE LOGGED. ANY ILLEGAL ACTIVIES WILL BE PROSECUTED TO THE FULLEST EXTENT OF THE APPLICABLE LAW
heh
moritz_ OFFENDERS WILL BE SHOT AFTER TRIAL 20:56
jnthn rakudo : $bank.rob();
lue rakudo 406d85: OUTPUT«===SORRY!===␤Amount to rob not specified.» 20:58
pugssvn r31381 | moritz++ | [evalbot] try to log who was speaking 21:00
21:01 p6eval left, p6eval joined
lue
.oO(trial may be avoided under the Impatience Act of 2010.)
21:01
moritz_ rakudo: say 'test'
21:01 diakopter is now known as imadoofus
p6eval rakudo 406d85: OUTPUT«test␤» 21:01
21:01 imadoofus is now known as diakopter 21:02 Schwern left, M_o_C joined
moritz_ not that easy, of course :( 21:03
21:04 tadzik left 21:05 p6eval left, p6eval joined
pugssvn r31382 | moritz++ | [evalbot] log channel 21:05
lue Is this log publicly accessible, by any chance?
moritz_ nope 21:06
except that part that's accssible via the public IRC logs
21:06 shade__ is now known as \shade\ 21:07 p6eval left, p6eval joined
lue
.oO(chmod 773 p6eval) # hope that's right
21:07
pugssvn r31383 | moritz++ | [evalbot] it might help not to use the same lexical name twice 21:08
moritz_ rakudo: say 'another test'
p6eval rakudo 406d85: OUTPUT«another test␤»
moritz_ diakopter: there you go
diakopter thanks :D
moritz_ Math::Model is progressing nicely, but it would profit from a faster compiler :-) 21:09
diakopter does it use features unique to Perl 6 (other than syntax sugar)? 21:10
moritz_ not really
the only thing where Perl 6 makes it *really* nicer than perl 5 is named arguments and signature introspection 21:11
you can say things like
math => { $:volume * $:density }
and Math::Model introspects the signature of that block, and thus finds on which other variables it depends on
the first prototype was in perl 5 years ago, but back then I had only rough ideas how the code should look like 21:15
21:17 proller left
lue Just out of curiousity, how far along is P6 for web applications? 21:18
21:18 proller joined
moritz_ there's Web.pm 21:18
but last time I looked it only worked on alpha, not on rakudo master
21:20 mmcleric left
lue Alright, I came across Wolfram Alpha, and then I got thinking about something like it, but FOSS and in P6 :) 21:20
moritz_ the web part is the easiest if you want to re-invent wolfram alpha 21:23
the computer algebra system behind it is a bit harder 21:24
sorear moritz_: is Math::Model some kind of reactive programming system?
lue I've had the idea for a while for this meta-search type thing, and label it The Hitchhiker's Guide or some such :) 21:25
moritz_ sorear: I'm not sure what you mean with "reactive", but it's not interactive
21:26 mmcleric joined
moritz_ sorear: it lets you write a system of ordinary differential equations in a rather natural way, and re-writes it for you to fit into Math::RungeKutta 21:26
then it integrates it, and generates a graph from it (with SVG::Plot)
I plan to blog about it soonish 21:27
github.com/moritz/Math-Model/blob/m...scratch.pl is an example of such a model
it describes a spring with air drag 21:28
anyway, bed 21:31
21:33 Su-Shee left
lue afk 21:33
21:36 synth joined 21:38 proller left, proller joined 21:41 clintongormley left 21:47 PacoLinux joined
sorear moritz_: Ah, I see 22:08
22:14 skangas joined 22:19 xenoterracide joined
xenoterracide perlbot book 22:19
!book
hmm
sorear there isn't one.
try git://github.com/perl6/book.git
xenoterracide that's what I was looking for 22:20
22:20 Guest23195 left
jnthn sorearbot++ 22:20
xenoterracide find it odd that you have to have perl5 to build the perl6 book 22:21
oh well
sorear why?
perl5 is a fine language, and quite a bit more polished than rakudo
xenoterracide right
just saying
anyways I'm gonna add the repo to stackoverflow.com/questions/194812/...ming-books
is the name of the book actually going to be perl 6? 22:23
22:25 xenoterracide left 22:30 ash__ joined 22:37 rv2733 joined 22:47 arthur-_ joined 22:49 mmcleric left, Ross left
dalek meta: r336 | diakopter++ | trunk/Sprixel/t/grammar2.t:
[perlesque] adding another (empty-ish) test, prepping for more grammar work.
22:52
22:53 dakkar left 22:55 arthur-_ left
lue ohai 22:58
22:58 pmurias left
jnthn hellue! 23:03
23:03 M_o_C left 23:09 Sarten-X left 23:15 Schwern joined 23:17 Sarten-X joined
lue is attempting to learn Octave 23:17
23:24 ash__ left
pugssvn r31384 | jnthn++ | [t/spec] Fudge S12-attribute/delegation.t for Rakudo master. 23:28
diakopter TimToady: I need some CHECK time guidance 23:38
TimToady have to leave soon, but if it's quick... 23:39
diakopter likely not quick. :) only large architecture challenges 23:40
trying to figure out where to wedge CHECK time
and scarily suspecting this has something to do with the circularity saw 23:41
TimToady CHECK is at the end of every compilation unit, including BEGIN and eval, but when I say CHECK time I mean the special time at the end of the main comp unit
and every setting has its own CHECK too 23:42
23:42 kensanata left
diakopter sudden flash of insight/recall of my previous insight 23:43
TimToady but I suspect that every CHECK except the main one knows it's not the time to do app-wide optimization
it's similar to the decision of whether to call MAIN
23:44 mberends left
TimToady except that's at the end of first main execution, instead of end of main compilation 23:44
minor checks are for things like undefined subs 23:45
std: BEGIN { foo() }; sub foo {}
p6eval std 31378: OUTPUT«Can't locate object method "load_pad" via package "STD::P6" at STD.pm line 62221.␤FAILED 00:00 97m␤»
TimToady er, oops
diakopter I need to remember that I need to treat the whole program (incl compiler) like it's all one big interpreter-interpreter(-interpreter), and any compiled forms are just serialized/thawable states of that interpreter.
remember==keep in mind
TimToady I suspect something wasn't cleanly rebuilt
diakopter the rebuild has `make clean`
TimToady nothing should be calling load_pad anymore 23:46
should be calling load_lex
diakopter hm 23:47
TimToady maybe needs a make reboot
except stage0 seems consistent in calling and supplying load_pad
diakopter hee
TimToady so there's some kind of crossover
diakopter I thought clean was stronger than reboot 23:48
sorear: summon 23:49
someone needs to invent Configure scripts
23:50 dual left
pugssvn r31385 | jnthn++ | [t/spec] Reviewed S14-role/parameterized-mixin.t. We got away with mixing into the type object in alpha, but not so in master - that's probably just not right since it'd affect all copies of it. So assigned a value that we'll mix in to. Re-fudged a bit. Added a comment about some 23:53
..tests that are probably wrong.
23:54 dual joined
dalek kudo: edb8be9 | jonathan++ | (2 files):
Apply first cut of handles method generator. Patch courtesy of maard++.
23:55
kudo: 478bde3 | jonathan++ | src/ (4 files):
Get handles wired up and working. Patch mostly by maard++ with a few tweaks from
kudo: 884561f | jonathan++ | src/glue/handles.pm:
Fix a thinko and whitespace.
kudo: aa427c4 | jonathan++ | t/spectest.data:
Turn on S12-attributes/delegation.t.
pugssvn r31386 | jnthn++ | [t/spec] Unfudge a use of handles in the advent tests. 23:56
r31387 | lwall++ | [stage0] reboot, add NULL.lex 23:58
diakopter ok. 23:59