»ö« | 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:03 astrojp joined
sorear Is the spec considered to be essentially complete on setting stuff, or is it expected to grow considerably before Perl 6.0? 00:05
TimToady it is asymptotically approaching stable, which means the answer to your question depends entirely on which scale you choose :) 00:08
jnthn I doubt it'll grow considerably, I do expect it'll need to get tweaked in some areas on the way to Perl 6.0 as we try to implement parts of it and hit weaknesses, or we implement them as per spec and users hit weaknesses. 00:09
TimToady std: $foo
p6eval std 30078: OUTPUT«ok 00:01 107m␤»
TimToady yowie, std is busticated
jnthn oh noes!
quietfanatic (non-auto-busticating) 00:10
00:10 supernovus joined 00:13 jhuni joined
TimToady ah, found it 00:14
pugssvn r30079 | lwall++ | [STD] fixed broken variable existence check 00:17
00:20 jaldhar left, arthur-_ left
TimToady interestingly it still would catch: my @foo; "$foo[]", I think... 00:20
std: my @foo; "$foo[]"
p6eval std 30078: OUTPUT«===SORRY!===␤Variable $foo is not predeclared (did you mean @foo?) at /tmp/hdNR3xew6z line 1:␤------> my @foo; "$foo[]⏏"␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
jnthn Heh. :-) 00:21
sorear If a S32-settings-library/*.pod is unwritten, does that mean nobody has specified it, or is there a higher level document that is slowly trickling down?
TimToady got fancy, and broke the plain stuff :)
probably unwritten, but with hints scattered about 00:22
a lot of which is take under "like p5 unless otherwise specced"
*taken
sorear the settings stuff looks a lot cooler than p5 generally though 00:23
sorear observes that there is a very simple test for p6ness - look for # vim: ft=perl6 in the first and last 5 lines 00:24
00:25 arthur-_ joined
jnthn Those little bits of markup do seem to be proliferating themselves all over. 00:25
sorear yeah
it reminds me of TimToady's EXTEND comment
:/
jnthn Only trouble is if everyone's favorite editor starts adding them. :-) 00:26
But I think most editors don't have any need of that. :-) 00:27
00:28 snarkyboojum left 00:35 rgrau left
jnthn -> sleep o/ 00:37
TimToady \o
00:39 jferrero left, lestrrat is now known as lest_away 00:40 snarkyboojum joined
sorear Why is Rakudo's IO a _class_? 00:43
TimToady because the IO spec is a total mess right now, probably
00:43 lichtkind joined
sorear So, then, I shouldn't try to implement any more of it than I need. 00:44
TimToady it all needs to be simplified so it's not a massive type hierarchy 00:45
but IO is probably a role
so yeah, don't take what is there too seriously yet 00:46
00:47 yinyin joined
TimToady std: $foo 00:50
p6eval std 30079: OUTPUT«===SORRY!===␤Variable $foo is not predeclared at /tmp/9burCsmzVQ line 1:␤------> $foo⏏<EOL>␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 107m␤»
TimToady std: "@foo[]
p6eval std 30079: OUTPUT«===SORRY!===␤Variable @foo is not predeclared at /tmp/FiUDFz6w4p line 1:␤------> "@foo[]⏏<EOL>␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
00:53 alester left, yinyin left 00:54 yinyin joined
spinclad std: my @foo; "@foo[] 01:08
p6eval std 30079: OUTPUT«===SORRY!===␤(Possible runaway string from line 1)␤Bogus statement at /tmp/V5AF5HZjdc line 1 (EOF):␤------> my @foo; "@foo[]⏏<EOL>␤ expecting escape␤FAILED 00:01 109m␤»
spinclad std: my @foo; "@foo[]"
p6eval std 30079: OUTPUT«ok 00:01 106m␤»
TimToady std: my @foo; "@foo[""]" 01:09
p6eval std 30079: OUTPUT«ok 00:02 106m␤»
spinclad std: my @foo; "@foo["$foo"]"
p6eval std 30079: OUTPUT«===SORRY!===␤Variable $foo is not predeclared (did you mean @foo?) at /tmp/76SVDM7sQY line 1:␤------> my @foo; "@foo["$foo⏏"]"␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
TimToady gotcha
spinclad i presume that's indexing @foo with a string 01:10
which should fail to dispatch
TimToady oops, now I broke @_, sigh 01:11
yes, but semantic problem, not syntactic
spinclad runtime dispatch
or if compiletime, still type-inference, not syntax (so not in STD now) 01:13
01:14 lest_away is now known as lestrrat 01:17 hudnix left
pugssvn r30080 | lwall++ | [STD] make @_ and %_ okay again, sigh 01:17
01:18 hudnix joined 01:21 Chillance left 01:22 astrojp left 01:23 astrojp joined
sorear Perl has type inference now? 01:36
TimToady it's assumed that we will have some amount of it, to the extent it doesn't require the user to be genious 01:37
*genius
but many type inference systems seem to require the user to simulate all that mentally to figure out what the compiler is doing 01:38
but that's one of the reasons that all multimethods are lexically scoped, to give the compiler more info to work with eventually 01:39
and to the extent that the type inferencer can cut down the number of multi candidates, it's a feedback loop
it's one of the reasons I'm not overly concerned with parrot's (non)performance yet 01:40
01:41 vamped left
TimToady std: @_ 01:41
p6eval std 30080: OUTPUT«===SORRY!===␤Placeholder variable @_ cannot be used in this kind of block at /tmp/6wjc1wG1Ni line 1:␤------> @_⏏<EOL>␤ expecting any of:␤ POST␤ postfix␤ postfix_prefix_meta_operator␤FAILED 00:01 107m␤»
TimToady std: { $^a + @_ } 01:42
p6eval std 30080: OUTPUT«ok 00:01 106m␤»
astrojp I'd like to read more about Perl 6. Is this a good starting place? cloud.github.com/downloads/perl6/bo...009-11.pdf 01:46
sorear I's a good place. 01:47
There isn't really such a thing as a good starting point for Perl 6, unfortunately
TimToady mostly, you want to follow links from perl6.org right now 01:48
sorear look at the various books (none more than 25% done), look at blog posts, read the Synopses and the first couple Apocalpyses
astrojp ok, thanks. :)
01:51 meppl left 01:58 wknight8111 left 02:04 snarkyboojum left 02:05 jaldhar joined, Infinoid left
sorear I wonder if it would make sense to write a (Parrot) pseudo HLL "C" which just delegates imports to the NCI 02:09
in order to implement S21
02:11 rv2733 left 02:13 mssm left 02:15 ned joined 02:56 snarkyboojum joined
snarkyboojum astrojp: I found this a good intro to perl 6 if you come from a perl 5 background - perlgeek.de/blog-en/perl-5-to-6/00-intro.html 03:06
colomon rakudo: say 4 !== 5
p6eval rakudo e704ef: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16872 (src/builtins/Junction.pir:373)␤»
snarkyboojum quite a lot of info there (note the "Posts in this category" left hand menu)
03:06 supernovus left
colomon std: say 4 !== 5 03:07
p6eval std 30080: OUTPUT«ok 00:01 107m␤»
03:08 jaldhar left 03:09 jaldhar joined
astrojp snarkyboojum: I have zero Perl 5 knowledge (I am actually coming from Python) but that's definitely a site I would like to bookmark. Thanks. 03:13
snarkyboojum astrojp: oh ok cool. worth subscribing to that blog in any event :)
astrojp: oh and recently (Dec last year), the Perl 6 advent calendar kicks butt :) perl6advent.wordpress.com/2009/12/0...-calendar/ 03:17
03:17 leedo joined, leedo left
pugssvn r30081 | colomon++ | [t/spec] Additional test for so. New test file for !op metaop. Move several tests from arith.t to this new file. 03:22
03:30 lichtkind_ joined 03:31 lichtkind left, lichtkind_ is now known as lichtkind, lichtkind left 03:35 alester joined 03:38 snarkyboojum left 03:40 wolf2k_ubuntu joined, meteorjay joined 03:44 rv2733 joined
dalek kudo: c29d389 | (Solomon Foster)++ | t/spectest.data:
Add S03-operators/not-metaop.t test.
03:46
03:59 snarkyboojum joined 04:17 drbean joined 04:45 thowe joined 05:21 alester left
diakopter someone who has a working rakudo, what does yours do with: my $a = ($a, $a) = 6; say $a 05:25
m6locks nada 05:26
diakopter nothing?
m6locks rakudo: my $a = ($a, $a) = 6; say $a
aye, nothing is printed out
diakopter :| yes, I realize the p6eval machine is slow
(currently)
p6eval rakudo c29d38: ( no output )
diakopter it's trying to rebuild STD, rakudo, and rakudo-alpha all at once
m6locks: are you trying it locally? 05:27
m6locks yes i did it locally too
diakopter how long did it take to return nothing locally
m6locks not that long
lue I'll do it locally, just need to compile...
m6locks quite fast actually 05:28
diakopter oh, sigh.
building rakudo and rakudo-alpha take quite a crudton of memory these days
lue good thing I'm ssh-ing to a remote server then :P 05:29
m6locks yes, i remember moritz_ saying that he had some memory errors while building
lue It usually hangs on this old computer :/
diakopter funny, the p6eval "server" has only 1 GB of RAM, while my notebook has 8
lue :O 05:30
sorear diakopter: lue said I could bum an account off you for building rakudo
m6locks btw, does using nice make all the subthreads that spawned from the command also low priority? you could use nice to lower the priority so that it wouldn't use up so much resources
sorear yes
nice values are inherited
diakopter sorear: not me... maybe you can use feather 05:31
lue I think I meant bkeeler, sorear
diakopter m6locks: cpu isn't the problem; it's the memory
m6locks aye
lue diakopter: will this feather actually help me, or will it just jam up my fan and cause everything to overheat? [ :) ]
diakopter feather is a set of VMs on a computer below someone's desk in the Netherlands 05:32
m6locks diakopter: what system are you building it on?
diakopter host03.appflux.net
one of my VPSes 05:33
m6locks ok
diakopter a 1GB VPS
lue I'd go after feather, but I already have something to ssh to :)
diakopter rakudo: (my $a, $a) = 6; say $a 05:34
p6eval rakudo c29d38: ( no output )
diakopter rakudo: (my $a) = 6; say $a
p6eval rakudo c29d38: OUTPUT«6␤»
lue diakopter: your code above does nothing for me :/
diakopter yeah, me neither
the expression vs. statement vs. statement list vs. declaration vs. assignment semantics in Perl 6 make about 0 sense to me 05:35
lue your statement makes 0 sense to me :D 05:36
m6locks :D
diakopter I mean, it's not just the "corner cases" rakudo can't make sense of...
lue: what in my statement don't you understand? 05:37
(obviously you got the part about me not comprehending something)
lue e v. s v. sl v. d v. as (that should clear things up >:) ) 05:38
I can read what you're saying, but I'm not making any real effort to understand it right now :P
m6locks you just woke up too?-D
good morning, btw 05:39
lue No, the exact opposite. About to go to bed :)
diakopter (eye roll). imo, it's rude to ask (implicitly) for explanation on something one didn't even bother trying to understand. not that I've never been guilty of that, tho.
lue I can see it has to with variables and how their various parts are handled, but I don't feel like researching that in more detail. 05:41
I get the gist of it, but I don't know it in as much detail as you do :)
diakopter I find it disconcerting that I [would] have to ask for explanation on what a particular "Perl 6" input is supposed to "do"
, for nearly every input I come up with. 05:42
(if it parses, but is semantically invalid, when does it error (but more importantly, why does it error at that time)? and what error does it say?) 05:43
I just can't seem to wrap my head around a list of "rules" or semantic components that I can use to know that the code I [might] write is valid. 05:44
m6locks not all errors come about because it's not all implemented
but i see what you mean
i'd rather have a std interpreter too 05:45
diakopter than what?
(instead of what)
m6locks than unclear error messages
i mean doesn't that std do syntax checking 05:46
std: my $a = ($a, $a) = 6; say $a
p6eval std 30081: OUTPUT«ok 00:01 108m␤»
m6locks it's supposed to be ok :) 05:47
diakopter std is Larry's implementation of a parse-time-extensible/mutable parser
in Perl 5, effectively
sorear my $a = ($a, $a) = 6 is parsable to me 05:48
diakopter what does that mean to you?
sorear the perl 5 equivalent is my $a; $a = ($a, $a) = 6;
my $x = y in p6 is my $x; $x = y in p5
this is to make recursion easier 05:49
$a = ($a, $a) = 6 is, because = is right associative, $a = (($a, $a) = 6)
diakopter ok, but what does this mean: my $a; ($a, $a) = 6;
m6locks that's supposed to make $a an array of 2 elements of value 6?
sorear ($a, $a) = 6 is a list assignment
it is also a semantic error because no variable should appear more than once in a target list 05:50
05:50 synth joined
sorear but std doesn't check for most semantic errors 05:50
diakopter I didn't think Perl 6 list assignment worked that way
pugs: my $a; ($a, $a) = 6; say $a 05:51
p6eval pugs: OUTPUT«␤»
diakopter rakudo: my $a; ($a, $a) = 6; say $a
p6eval rakudo c29d38: ( no output )
lue ENOSLEEP (try sleeping)
diakopter alpha: my $a; ($a, $a) = 6; say $a
p6eval alpha 30e0ed: OUTPUT«␤␤»
diakopter elf: my $a; ($a, $a) = 6; say $a
p6eval elf 30081: OUTPUT«␤»
diakopter sorear: what makes you think ($a, $a) = 6 is a "list assignment"? 05:52
rakudo: my $a; ($a, $a) = 6, 8; say $a 05:53
p6eval rakudo c29d38: OUTPUT«8␤»
diakopter ok, :| 05:54
m6locks heh 05:55
sorear because it worked that way in perl5 and I saw nothing to the effect of "going away" in the synopses
diakopter rakudo: my $a; ($a, $a; $a) = $a, $a, 8; say $a 05:56
p6eval rakudo c29d38: OUTPUT«Any() Any() 8␤»
diakopter oh
sorear I don't have any idea what ; does though
rakudo: my $a = ($a, $a) = 6; say $a; # I expect 2 05:57
p6eval rakudo c29d38: ( no output )
sorear ok, that much has changed
I guess assignments always return the rhs now
diakopter I guess it means the last "statement" in the () (the one after the last ';') is the target of the assignment
rakudo: my $a; ($a, $a; $a, $a) = 6, 8; say $a 05:59
p6eval rakudo c29d38: OUTPUT«8␤»
diakopter rakudo: my $a; (5, 7; $a, $a) = 6, 8; say $a
p6eval rakudo c29d38: OUTPUT«8␤»
diakopter rakudo: my $a; (5, 7; (($a, ($a)))) = 6, 8; say $a 06:00
p6eval rakudo c29d38: OUTPUT«8␤»
diakopter afk
snarkyboojum rakudo: my $a; ($a; $a, $a) = 2, 8, 4; say $a; 06:01
p6eval rakudo c29d38: OUTPUT«8␤»
snarkyboojum rakudo: my $a; ($a; $a, $a) = Whatever, 6; say $a; 06:03
p6eval rakudo c29d38: OUTPUT«Whatever()␤»
snarkyboojum rakudo: my $a; ($a; $a, $a) = 2, 6; say $a;
p6eval rakudo c29d38: OUTPUT«6␤»
snarkyboojum doesn't even know if he's making sense ;)
rakudo: my $b = Whatever; say $b; 06:04
p6eval rakudo c29d38: OUTPUT«Whatever()␤»
snarkyboojum not sure why one would take the Whatever if it's first, but the last num if the first is a num 06:06
rakudo: my $a; ($a; $a, $a) = Whatever; say $a; say $a.WHAT; 06:10
p6eval rakudo c29d38: OUTPUT«Whatever()␤Whatever()␤»
snarkyboojum rakudo: my $a; ($a; $a) = Whatever; say $a; say $a.WHAT;
p6eval rakudo c29d38: OUTPUT«Whatever()␤Whatever()␤»
snarkyboojum rakudo: my $a = Whatever; say $a.WHAT 06:11
p6eval rakudo c29d38: OUTPUT«Whatever()␤»
snarkyboojum my rakudo is out of date :|
06:19 Trashlord joined 06:36 justatheory left 06:43 kaare joined
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say "a: $a, b: $b, c: $c" 06:43
p6eval rakudo c29d38: OUTPUT«Undefined value shifted from empty array␤current instr.: 'perl6;Perl6Exception;throw' pc 14489 (src/builtins/Seq.pir:77)␤»
06:43 kaare is now known as Guest29407
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say $a; say $b; say $c 06:44
p6eval rakudo c29d38: OUTPUT«6␤»
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say 'a: ', $a; say 'b: ', $b; say 'c: ', $c
p6eval rakudo c29d38: OUTPUT«a: b: 6␤c: » 06:45
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say 'a: ', $a.WHAT; say 'b: ', $b.WHAT; say 'c: ', $c.WHAT
p6eval rakudo c29d38: OUTPUT«a: Seq()␤b: Int()␤c: Failure()␤»
06:46 c1sung left
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say 'a: ', $a.perl; say 'b: ', $b.perl; say 'c: ', $c.perl 06:46
p6eval rakudo c29d38: OUTPUT«a: Seq.new()␤b: 6␤c: undef␤»
06:46 c1sung joined
spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say 'a: ', $a; say 'b: ', $b; say 'c: ', $c 06:47
p6eval rakudo c29d38: OUTPUT«a: b: 6␤c: »
spinclad this one's particularly odd: the $a and $c values (a Seq and a Failure) kill off the final newline of their say. 06:48
rakudo: my $a = ($a, $a) = 6; say $a.perl 06:51
p6eval rakudo c29d38: OUTPUT«Seq.new()␤»
spinclad rakudo: my $a = (($a, $a) = 6); say $a.perl 06:52
p6eval rakudo c29d38: OUTPUT«Seq.new()␤»
spinclad rakudo: my $a; say (($a, $a) = 6).perl
p6eval rakudo c29d38: OUTPUT«(undef, undef)␤»
spinclad rakudo: my $a; say (($a, $a) = 6).WHAT
p6eval rakudo c29d38: OUTPUT«Parcel()␤»
spinclad rakudo: my $a; say (($a, $a)).WHAT 06:53
p6eval rakudo c29d38: OUTPUT«Parcel()␤»
spinclad rakudo: my $a; say (($a, $a)).perl
p6eval rakudo c29d38: OUTPUT«(Any, Any)␤»
spinclad rakudo: my ($a, $b); say (($a, $b) = 6).perl 06:54
p6eval rakudo c29d38: OUTPUT«(6, undef)␤»
spinclad -> bed & 06:56
07:06 JimmyZ joined 07:11 Su-Shee joined 07:27 am0c joined 07:28 iblechbot joined 07:31 thowe left
sorear hmm, so if I want to do IO to a file descriptor, I'll need to use the NCI? 07:33
07:33 rv2733 left
mberends surely not. that should be Parrot's job 07:33
sorear the synopses say sysread is being discarded in favor of IO objects 07:34
however, there's no fdopen (and even if there were, I'd be very wary of using it, unless it absolutely guarantees to do no read-ahead or otherwise mangle my requests) 07:35
mberends the implementation is probably confused. Rakudo currently assumes every file is UTF-8 encoded, for example 07:36
sorear I'm reading pugs:docs/Perl6/Spec 07:37
not rakudo
mberends there has been a history of top-down specification idealism and bottom-up implementation frustration, with a considerable gap between the two. 07:38
so most implementations have been presented with huge disclaimers up front 07:39
sorear specification idealism, as in, nobody could ever want to use sysread?
mberends no, other spec bits
I also want to use sysread etc 07:40
I'm no implementation expert, just a hopeful user, but the IO side of Perl 6 looks to me as if too many cooks have spoiled the broth. Mostly with cute layers of abstraction (perhaps from cute Perl 5 modules) that make some things easier, but ignore the fact that other things then become harder. 07:43
sorear it looks like Parrot itself doesn't support uncooked file descriptor IO 07:44
however, this doesn't really bother me, because of NCI and pir::
(if you're going to design a language, the single smartest thing you can do is give people who disagree with you a backdoor) 07:45
mberends ugh. well I hope you don't feel compelled to reach into NCI just to circumvent such a shortcoming.
sorear well, there's no other way at the moment 07:46
mberends workarounds are neat, but this language is still in the design phase. raw file IO should be designed in properly.
sorear workarounds are temporary things 07:47
mberends oh, there goes another potential bikeshed discussion... ;)
sorear since I lack: Rakudo/Parrot hacking knowledge, a Rakudo/Parrot commit bit, a computer powerful enough to build Rakudo in less than overnight
07:49 synth left
sorear sure, it's great to just change the language and keep going 07:49
mberends yeah, if you've gotta deliver a certain result pronto, temporary workarounds are ok. I like the idea of sending design feedback to the top-down guys to get the specs improved. 07:50
sorear not just deadlines
if Larry et al had to wait for me to hit snags, and I had to wait for Larry et al to fix snags, then at any given time one of us would be idle
workarounds allow me to *keep going* and keeps both of us with things to do 07:51
mberends the concept of deadlines is quite alien in #perl6, unfortunately. Idealism rules here :/
sorear (of course I'm oversimplifying quite a bit by reducing Perl 6 design and Perl 6 use to one person each)
mberends it's still like that with more people too 07:52
sorear hmm... I think I'll write a memory profiler for Parrot. 07:53
mberends are you serious? that would be awesome!
sorear I tried writing one for Perl 5, but failed 07:54
Perl 5 just doesn't keep enough metadata for it to work sanely
I'm not sure but it seems vaguely doable in Parrot 07:55
and yes I'm serious 07:56
mberends Parrot probably has more metadata, but watching how the Parrot developers grapple with the codebase is not fun. 07:57
sorear ?
mberends several generations of original inventors are no longer around, leaving the others to struggle and wonder what it all means. lots of trial and error work. 07:58
07:59 kfo_ joined
mberends hopefully talk later, commuting to $work & 07:59
08:01 JimmyZ_ joined
mberends ( I do not mean to imply that nobody knows how Parrot works. Just that most current developers stick to subsystems that they understand well, and very few understand most of it ) 08:02
08:02 mberends left, kfo left, kfo_ is now known as kfo, JimmyZ left 08:03 JimmyZ_ is now known as JimmyZ 08:10 iblechbot left
mathw Morning 08:18
08:19 mssm joined 08:29 JimmyZ left 08:52 M_o_C joined 09:10 dakkar joined 09:15 masak joined
masak oh hai, #perl6. 09:15
hejki oh hai, masakbot. 09:16
09:16 Trashlord left 09:18 iblechbot joined
masak alpha: my $a = 42; my $b := $a; $a = my $a; say $a 09:19
p6eval alpha 30e0ed: OUTPUT«Redeclaration of variable $a␤42␤»
masak TimToady: in a situation such as this, I expect $b to be 42 at the end. but should $a really be 42? 09:20
it all comes down to whether the re-'initialization' of $a is done before or after the RHS value of $a is fetched in '$a = my $a;'. 09:21
snarkyboojum: ping 09:22
09:23 Trashlord joined
mathw masak! 09:27
masak mathw: hi there, old chap. 09:28
Trashlord hey dudes 09:29
masak Trashlord! 09:31
Trashlord masak!
mathw Trashlord! 09:34
Trashlord mathw!
09:43 M_o_C left
jnthn lol morning 09:44
masak jnthn: lol! whoz op with the cold?
jnthn masak: Min nose is block op! 09:45
masak :/ 09:46
jnthn Though not quite as bad as during the weekend.
How's yours?
masak I can breathe today. I consider that an improvement.
09:47 agentzh joined
mathw definitely 09:47
09:49 M_o_C joined
jnthn Rakudo monthly release week! 09:54
masak hopes to be able to land named enums before Thursday 09:55
jnthn \o/
jnthn hopes to get some more of S12-* passing
09:58 yinyin left 10:01 jferrero joined
masak I usually get to do all necessary destruction myself. this time I'd like to ask for people's help. :) 10:10
github.com/masak/tardis/blob/2be13f...-prototype
the above is an extremely simple compiler that I wrote last week.
I'd like for people to try it and get it to misbehave. 10:11
it's a very open problem -- just get it to do something that seems wrong.
thanks. :)
jnthn lol...tempting! 10:13
masak: Where's the bug tracker? :D :D
masak submitting to the tardis project on github would be fine.
alerting me here on #perl6 or in privmsg works too :)
I'll probably write up this experiment as a blog post today. 10:14
10:18 rv2733 joined, M_o_C left 10:20 M_o_C joined 10:26 agentzh left 10:29 payload left, jhuni left 10:39 M_o_C left
snarkyboojum masak: Hej! 10:42
masak snarkyboojum: \o 10:43
snarkyboojum masak: o/ :)
masak snarkyboojum: if you have time, please check out and try the yapsi-prototype I mention above.
snarkyboojum reads backscroll
I like the "kinds of programs recognised" comment ;) 10:45
will check it out
10:46 M_o_C joined
masak \o/ 10:47
10:49 M_o_C left 10:51 payload joined 10:52 payload left, payload joined, M_o_C joined 10:53 M_o_C left 10:54 lestrrat is now known as lest_away
colomon morning! 10:55
10:56 M_o_C joined
masak colomon! 10:56
colomon masak!
masak welcome to our humble Monday.
colomon Nice day you've got here. 10:57
Maybe I'll be awake enough to properly appreciate it in a few minutes.
masak :)
szbalint enjoys his public holiday 11:04
snarkyboojum enjoyed his 14 hour working day :P 11:05
colomon figures he needs to work about 16 hours today... 11:08
snarkyboojum :|
colomon It's making hay while the sun shines.
Or, you know, getting work done while my wife and son are on vacation. 11:09
Would not be surprised if the next two days are the best chance I have to work for the next month. And I have a lot to do.
snarkyboojum considers the dangers of cloning Perl 6 programmers :P 11:11
jnthn I suspect if you cloned me, my clone and I would be like "oh hey, we could go to the pub", and then we'd just spend all day drinking beer and get *nothing* done. 11:19
That or we'd just argue all the time about the Right Way To Do Stuff. :-)
11:20 mssm left, UjinT34 joined
colomon I was thinking that if there were four of me, we'd probably just play bassoon quartets... 11:20
masak I don't worry about not getting more done. I *do* worry about chain of command. :/ 11:21
we'd probably have to settle for a less efficient but more democratic way of distributing work. 11:22
also, there'd be more mouths to feed, so we'd need to do more $work as well.
11:25 z3ndrag0n left
snarkyboojum masak: yapsi looks beautifully ambitious :) 11:25
arnsholt colomon: But a bassoon quartet would be mega win =D
masak snarkyboojum: I was quite happy about what a self-contained experiment it was. I don't think I'll need to work much more on the prototype -- time for the real thing :) 11:26
snarkyboojum masak: it's certainly fun to play with :)
masak snarkyboojum: I'm gald to hear that. :)
snarkyboojum: it ought to be quite easy to build a runtime to execute those instructions as well, I think. 11:27
it can all be done in under a day, now that we have the prototype.
snarkyboojum heh 11:28
masak jnthn: if I do 'my $a = 42; $a = my $a', what value will $a end up having?
snarkyboojum you mean the instructions that yapsi can currently generate?
masak snarkyboojum: yes.
snarkyboojum masak: ah - ok - I thought you were saying something else :)
masak jnthn: or, in general terms, when is the second '$a' container initialized? before or after getting the value of the rhs? 11:29
arnsholt masak: It should be undefined
(IMO)
masak arnsholt: Rakudo alpha disagrees. 11:30
alpha: my $a = 42; $a = my $a; say $a
p6eval alpha 30e0ed: OUTPUT«Redeclaration of variable $a␤42␤»
arnsholt Just like `open my $fh, '<', $filename' in P5
masak arnsholt: I fail to see the connection.
jnthn masak: I'm not convinced you'd make it to runtime.
snarkyboojum rakudo: my $a = 42; $a = my $a; say $a 11:31
p6eval rakudo c29d38: OUTPUT«Redeclaration of symbol $a at line 11, near "; say $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
masak jnthn: why not? STD.pm likes it.
jnthn std: my $a = 42; $a = my $a; say $a
p6eval std 30081: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (see line 1) at /tmp/t0zuUgSqYa line 1:␤------> my $a = 42; $a = my $a⏏; say $a␤ok 00:01 108m␤»
masak it's just "potential difficulties" :)
nothing to worry about...
jnthn masak: Hmm. We consider that an error in Rakudo.
szbalint masak: so cloning has SMP problems in it? who would have thought :)
masak no, you don't.
szbalint: :)
jnthn masak: Huh? It's fatal, isn't it? 11:32
(in Rakudo atm)
masak rakudo: my $a = 42; $a = my $a; say $a
p6eval rakudo c29d38: OUTPUT«Redeclaration of symbol $a at line 11, near "; say $a"␤current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)␤»
masak seems it is.
jnthn Right. :-)
masak why would redeclarations be fatal?
snarkyboojum :)
jnthn They're allowed if you use proto in the initial one or multi in all of them (though that's NYI) 11:33
masak anyway, I'm not asking about strange new ng bugs. I'm asking about the proper semantics.
jnthn Anyway, if you did that I expect Rakudo will just disregard the second declaration.
Rather than do any re-initialization.
masak disregard?
that's even stranger.
jnthn So it'd be the same as saying $a = $a
masak so I won't get a new container? 11:34
jnthn No.
masak that's news to me.
does the spec say that somewhere?
jnthn You're re-declaring the same thing.
Not declaring a new thing.
masak I do get a new container if I'm in an inner block, don't I?
jnthn Yes, but then you're declaring a new thing.
masak right. 11:35
jnthn But in the same block, well, there's only one $a slot in the lexpad. :-)
masak goes hunting for spec clarification about re-declaration of a variable in the same block
jnthn fwiw, I think it should be an error without the multi/proto.
Re-declaring a routine or a class is an error. 11:36
Seems odd that variables should be different.
11:36 am0c left
masak well, this sure simplifies things. 11:37
I think I can do away with the 'init' opcode I had to invent for SIC.
(it explicitly gives a variable a new container)
S04:136: "If you declare a lexical twice in the same scope, it is the same lexical" 11:38
jnthn \o/
masak and then the exact example we've been talking about.
and then a note about 'my proto $x' :)
jnthn Well, in a sense what probably really needs to happen (though we fail it in Rakudo at the moment) is that you kinda built a "proto-lexpad" 11:39
masak whuzzat?
jnthn And use a clone of that for all your frames.
It's nothing user-space visible, just an implementation detail really
But essentially, traits should only really be applied once, ever.
Including to variables. 11:40
11:40 payload left
masak nod. 11:40
snarkyboojum running that example on alpha with --target=pir or past makes it not spit out the pir or past 11:46
masak sorry to hear that. 11:47
there are a couple known problems with combining --target and -e, I think.
try putting it in a file.
jnthn has been combinding them on master without any ill effects, fwiw. 11:48
snarkyboojum this was in the repl
same thing in a file - oh well :)
masak ok, I just pused a new version of yapsi-prototype without the 'init' opcode. 11:51
I might add a 'redeclaration' warning later, too.
11:56 meppl joined 12:06 stepnem left 12:09 stepnem joined
dalek kudo: 3bc40d3 | (Solomon Foster)++ | src/ (3 files):
Revert "Change !op to generate an explicit call to an infix_prefix_meta_operator function." This goes back to the first implementation of !op, which now works and is probably a bit more efficient than the second implementation.

Conflicts: src/core/operators.pm
12:09
kudo: ef3cd20 | (Solomon Foster)++ | (3 files):
Move !op implementation functions from assign.pir to new metaops.pir.
12:16 arthur-_ left 12:19 arthur-_ joined 12:26 M_o_C left
masak colomon++ 12:29
colomon Just getting warmed up... ;) 12:32
masak likes the sound of that 12:33
colomon unfortunately, I'll need to spend most of the day doing $work, I think.
masak well, we all have to put food on our family somehow. 12:36
colomon indeed.
std: say 4 R< 5 12:37
p6eval std 30081: OUTPUT«ok 00:01 107m␤»
pugssvn r30082 | colomon++ | [t/spec] Some basic tests for Rop. 12:41
12:52 ignacio_ joined
masak this might interest some people on here smitten by the metamodel bug: news.ycombinator.com/item?id=1192791 13:03
13:04 lest_away is now known as lestrrat
masak (I'm linking to the HN page as a kind of future-proofing. at the time of writing it contains no discussion.) 13:04
13:05 meppl left
colomon "Cos relies on the programmable capabilities of the C programming language" 13:05
I find that somewhat mystifying. 13:06
dalek kudo: 01c8cc2 | (Solomon Foster)++ | src/ (3 files):
Quick implementation of reverse metaop.
kudo: f6de386 | (Solomon Foster)++ | t/spectest.data:
Add S03-operators/r-metaop.t to tests.
mathw colomon: does that mean it's implemented in C? 13:12
13:12 synth joined
colomon mathw: I'm not really sure what they're trying to say. Not terribly impressed by the first bits of the paper, either. 13:13
may just be that working with Perl 6 has spoiled me. :) 13:14
13:14 synth left 13:15 synth joined
colomon std: say 4 !R% 64 13:15
p6eval std 30082: OUTPUT«ok 00:01 107m␤»
13:15 Tywyn joined 13:16 Tywyn left 13:17 synth left, synth joined 13:24 envi^home joined
masak I now pushed a patch to the yapsi-prototype so that it warns about variable redeclarations in the same scope. 13:46
working on this fills me with a warm kind of joy.
colomon masak++ 13:47
13:47 synth left, synth joined
masak it's basically a really, really pared-down Perl 6 compiler. 13:47
13:47 alester joined
jnthn
.oO( Rakudo used to be one of those :-) )
13:50
masak: I do remember the "so many primitive things to do" feeling too. 13:51
masak: It's kinda fun. It's why I look forward to doing another backend for Rakudo.
masak :)
colomon alpha: say say 4 !R% 64
p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "!R% 64"␤in Main (file <unknown>, line <unknown>)␤»
colomon alpha: say 64 !% 4 13:52
p6eval alpha 30e0ed: OUTPUT«1␤»
colomon alpha: say 4 R!% 64
jnthn colomon: I'm pretty sure alpha didn't do metametaoperators. :-)
p6eval alpha 30e0ed: OUTPUT«1␤»
colomon alpha: say 4 !R% 64
p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "!R% 64"␤in Main (file <unknown>, line <unknown>)␤»
colomon or just did them poorly. :)
jnthn Dare you to do them better in master!
:_0 13:53
masak (that's not metameta)
jnthn No, it's more like 2*meta
masak aye.
jnthn Well
Maybe
Depends
[R-] # metameta?
In a sense, if they're "just" higher order function calls... 13:54
masak no, [R-] is not metameta either. 13:55
in my book, a metametaoperator would have to be an operator which acts on a metaoperator.
we don't have those, AFAIK.
[] doesn't act on a metaoperator, it acts on R-, which is just a regular operator created by R acting on -. 13:56
jnthn But R- is a meta operator
masak no.
jnthn So it *is* a meta-opertoar acting on a meta-operator.
masak I disagree. but I'm not sure it matters much.
jnthn R is a meta-operator on -
masak ...which produces an operator. 13:57
jnthn ?
:-/
masak I'm not sure I can state it clearer than I did above. 13:58
maybe I could try to give an example of what I'd consider to be a metametaoperator.
jnthn prefix_circumfix_meta_operator<[ ]>(&infix_prefix_meta_operator<%>.assuming(&infix:<->), @list) # what I kinda expect [R-] may compile down to
masak no argument there. 13:59
jnthn er, s/%/R/
masak right.
infix_circumfix_postfix:<*> would be a metaoperator. 14:01
it would look like this: [+]*
maybe it tells the [] to do things backwards.
s/metaoperator/metametaoperator/
colomon is suddenly struck with the idea of R[$index], which allows reversing indexing on an array... probably wouldn't parse sensibly, though. 14:05
masak would have to be @foo\R[$index] 14:06
jnthn Don't know that STD has a hooker for postcircumfix_prefix_meta_operator...yet. :-) 14:07
colomon rakudo: say 4 R- 5 14:08
p6eval rakudo f6de38: OUTPUT«1␤»
masak hopes 'hooker' isn't the technical term
hanekomu fits with the 'STD' theme
jnthn masak: No, just couldn't think of the right word. 14:09
I guess to fit the pattern there'd have to be a postcircumfixish
But "there isn't an ish for..." sounded weirder. :-)
masak likes that 14:10
jnthn hehe
masak "Suffering from general ishlessness..."
jnthn "STD needs to be ishier!"
masak "not ishy enough..."
jnthn "There's something ishy about Perl 6 parsing."
Yeah, OK, so now it sounds normal rather than weird. 14:11
:-)
colomon > say 4 R!% 64
1
> say 4 !R% 64
1
masak \o/
jnthn \o/
colomon++
colomon need to spectest and make sure I didn't break something with that change. 14:12
but it was delightfully straightforward.
14:12 ruoso joined
masak Anytime compiler implementation is described as 'delightfully straightforward', you know you're on the right track. :) 14:13
14:13 nihiliad joined
colomon I need to go exercise now, if someone would like to beat me to the punch by creating a stacked-metaop.t test file, that would be cool... ;) 14:14
14:17 payload joined
colomon jnthn: will you be around most of the day? I need to figure out if there is a way to add new subs from Perl 6 code. (ie the equivalent of 14:17
.const 'Sub' metasub = '!reverse_metaop'
$P0 = newclosure metasub
set_global metaname, $P0
but in pure perl 6...) 14:18
afk for now...
jnthn colomon: I'm about. Plenty to do, but I can stop @other to look at that with you in a bit. 14:19
We're maybe missing the bits we need to do it in pure Perl 6 (e.g. using the curernt package as a hash). 14:20
14:20 wolf2k_ubuntu left 14:25 payload left 14:30 lestrrat is now known as lest_away 14:34 payload joined
Tene Okay, after some hectic days, I'm kinda alive again, I guess. WAY too much scrollback to try to read, though. :( 14:43
jnthn You had a period of unalive?
w/b, anyways
:-)
masak welcome back, Tene.
14:44 payload1 joined
Tene jnthn: for the purposes of Perl 6 development, yes. 14:44
Just very busy.
jnthn Such is life sometimes. 14:45
Tene I'm surprisingly awake this morning. I'll make some tea and start working on interop stuff after this next lecture.
m6locks lol @ infix_circumfix_postfix 14:46
Tene I'm teaching a class with very light lectures and long labs, so I'll have some time this week. :)
14:47 payload left, Guest29407 left, am0c joined
jnthn Tene++ 14:50
14:54 iblechbot left 14:55 justatheory joined 15:03 UjinT34 left, PacoLinux joined 15:06 Psyche^ joined
masak I am now thinking about how much of signature binding semantics one can/should implement in SIC code... 15:07
seems there will always be some amount of slight magic in the interface between different blocks.
jnthn At least you can just look at and steal an existing binding algorithm. :-) 15:09
15:09 rgrau joined
masak yeah. :) 15:09
jnthn And a multi-dispatch one, for that matter. :-)
15:10 Patterner left, Psyche^ is now known as Patterner
masak I thought I'd start with single dispatch. 15:10
and even before that, try to get if-block semantics right :)
jnthn oh, for sure. 15:12
You probably don't want the full binding algorithm to start off with etiher. 15:13
*either
Though if you follow the pattern you know you can fill it out with the rest later on.
Just make sure it's re-enterant.
dalek kudo: eff4bd3 | (Solomon Foster)++ | src/Perl6/ (2 files):
Switch the grammar to look for an infixish rather than an infix after infix_prefix_meta_operator so that you can stack metaops.
masak I know PIR makes one subroutine per block. I'm pondering whether to do the same in SIC. 15:14
...per Perl 6 block, that is.
colomon > say 4 RRRRRRR- 5
1
> say 4 RRRRRRRR- 5
-1
jnthn Well, PIR sub === lexical scope.
colomon :)
masak :)
jnthn: right.
jnthn colomon: wow! :-)
masak jnthn: it has the advantage of doing implicit lexicals handing right. 15:15
colomon not sure if it's legal Perl 6, but it works. :)
masak sur it is.
colomon std: say 4 RRRRRRRR- 5
jnthn
.oO( pirate Perl 6 also an infix_prefix_meta_operator A )
masak s/sur/sure/
p6eval std 30082: OUTPUT«ok 00:01 108m␤»
masak colomon++
15:15 lest_away is now known as lestrrat 15:21 am0c left
masak I remember being thoroughly confused by p6l emails when I was less involved in Perl 6. 15:22
I wonder how many semi-interested people are in the same state right now. 15:23
arnsholt Some of the talk in here has the same effect on me =) 15:24
masak the current thread 'numerics, roles and naming' is very little about what I consider to be Perl 6, and very much about mathematical definitions for various things.
jnthn I'm struggling to follow that thread. 15:25
masak arnsholt: aye -- not saying people in here aren't frightening :)
jnthn arnsholt: BOO!
.oO( there, I've done my frightening for the day )
masak: It seems there's a desire to break the current bunch of roles up into loads more. 15:26
masak: To describe a whole range of mathematical properties.
masak something like that.
jnthn I'm not sure your everyday developer will really care though. :-) 15:27
masak I've yet to see... why.
colomon which should be strictly ignored, IMO. :)
jnthn Which means "nice, put it in a module"
colomon masak: My theory is it is an attempt to make sure Perl 6 never happens. ;)
jnthn lol!
colomon "If we can just get them to add twenty new types every couple of months..." 15:28
masak jnthn: aye. I'm all for making things nice enough in Perl 6 so that high-level math is possible. but I don't want to throw in Gaussian numbers, for example.
colomon masak: As far as I know, when Complex matches the current spec that will already be possible.
spinclad i'm actually happy that Perl 6 isn't trying to build n-category theory into its core 15:29
masak me too.
colomon or at least, you'll be able to create Complex numbers which have Int real and imaginary parts....
masak subset Gaussian of Complex where { .re & .im ~~ Int } 15:30
maybe I should email that to the thread.
colomon I think their Gaussian discussion is based on the false belief that Int !~~ Real. 15:31
masak oh.
now that's frightening, a mathematician with a false belief... 15:32
colomon Which may come about because of an omission in S02.
Tene masak: a while after the last Time discussion, I saw mention online that someone had made a limited series of watches for people in a space research program that ran on mars time.
15:32 payload1 left
masak Tene: neat! 15:33
Tene: 24 extra minutes every day, mmm... :)
Tene Personally, what I think Perl 6 *really* needs is currency types in core.
spinclad for your concurrent financial positions
jnthn Using currency symbols to denote such types. 15:34
masak Tene: postfix:<USD>($num) { ... }
colomon Tene: do you mean some sort of fixed precision number for dealing with money?
masak sorry, seems to be 37 minutes extra each day. 15:35
spinclad is your currency fixed, or floating?
Tene colomon: no, I mean to joke.
colomon Tene: :)
jnthn Tene: Dares you to joke about it on p6l! ;-)
jnthn can only imagine the thread... :-) 15:36
Tene jnthn: I don't have enough exposure to SERIOUS BUSINESS financial people to pull off an impression well.
masak jnthn: whoa! set_signature_elem takes ten arguments! o.O sure you didn't miss one there?
jnthn masak: I did when it only had nine. 15:37
masak Tene: do it! do it!
jnthn: :D
jnthn masak: For your own sanity, use named arguments.
I guess epic performance isn't on your hit list.
Tene jnthn: we have introspectable signatures yet so you can add an extra arg at runtime if you discover you need it?
jnthn Tene: Erm, well...we have introspectable signatures...but not diddlable ones. :-) 15:38
masak jnthn: you mean it's on Parrot's? :P
jnthn masak: Erm, it's part of my attempt to run Perl 6 as fast I can on top of Parrot... :-/
masak ah.
jnthn ...which still means "not very". :-(
We need Rakudo on another backend to know if Parrot is slow or Rakudo's current design makes it slow I guess. 15:39
Tene AFK continue lecture.
masak no, speed is not the prime objective with Yapsi. it's more something like (1) correctness, (2) try not to gobble memory, (3) wouldn't hurt if it finished running this week 15:47
jnthn :-)
Part of why I wanted signature construction fast is because at one point we did them all at startup 15:48
So it had a big influence on our startup time.
15:48 renormalist joined
jnthn Now, however, that's changed. 15:48
masak right. now we cache them?
jnthn Now we build them lazily.
masak niiice.
jnthn sub foo($x, $y) { ... }; say 42; # never builds the signature object for foo 15:49
masak \o/
jnthn Yeah, pmichaud++ for suggestiong I explore that route.
TimToady however, as soon as your optimizer gets involved with sigs, lazy is the wrong direction to go 15:50
it's one of them "workarounds" 15:51
the fundamental problem is that parrot can't unfreeze a large set of objects and run with it quickly 15:52
jnthn TimToady: Only if our runtime signature objects and our compile time representation of a signature are the same thing. They aren't. :-)
masak am I right in assuming that an opaque &eval call is an optimizer's worst enemy?
TimToady jnthn: and I'm saying that's the fundamental problem
15:52 charsbar left
jnthn TimToady: :-/ 15:52
15:52 charsbar joined
jnthn Hadn't planned on unifying the two particularly. 15:53
TimToady the more they're unified, the more work can be done in the compiler
jnthn I fully agree that not being able to unfreeze a large set of objects quickly is a big problem for startup time though.
masak the communication between compile time and runtime seems to be a recurring issue.
jnthn On the Parrot side, it's a big hairy issue that nobody really wants to touch, I fear. 15:54
TimToady masak: I read "my $a = 42; my $b := $a; $a = my $a; say $a" exactly as if the second "my" weren't there
masak TimToady: yeah. I've subsequently realized that, thanks to jnthn++ 15:55
TimToady okay, just started bling
masak it's even in S04 :)
TimToady std: my $a = 42; my $b := $a; $a = my $a; say $a
p6eval std 30082: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $a (see line 1) at /tmp/v9rIAkpxMV line 1:␤------> my $a = 42; my $b := $a; $a = my $a⏏; say $a␤ok 00:01 108m␤»
masak 'Useless redeclaration'. Nice. I'll steal that for Yapsi.
TimToady std: my @array; @array.grep { $_ % 2 } 15:57
p6eval std 30082: OUTPUT«===SORRY!===␤Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/l5BAmcA45o line 1:␤------> my @array; @array.grep ⏏{ $_ % 2 }␤ expecting any of:␤ bracketed infix␤ infix or
..meta-infix␤FAILED 00:01 …
TimToady STD now memoizes the end of a bare method call in case it causes an error 15:59
std: my @array; @array.grep Int 16:00
p6eval std 30082: OUTPUT«===SORRY!===␤Two terms in a row (method call requires colon or parens to take arguments) at /tmp/J1o0MccV1w line 1:␤------> my @array; @array.grep ⏏Int␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier
..loop␤FAILED 0…
colomon rakudo: my @a = 1, 4, 4.1, 4.2e0, 5; say @a.grep: Int 16:01
p6eval rakudo eff4bd: OUTPUT«145␤»
TimToady rakudo++ 16:02
well, really, smartmatch++ :) 16:03
colomon exactly. :)
masak Perl++
16:03 payload joined
TimToady lol 16:03
Tene (++)++ 16:04
16:04 M_o_C joined
masak (Tene: (++)++)++ 16:04
TimToady std: (Tene: (++)++)++ 16:05
p6eval std 30082: OUTPUT«===SORRY!===␤Prefix requires an argument at /tmp/3fNXmacWT6 line 1:␤------> (Tene: (++⏏)++)++␤ expecting any of:␤ prefix or meta-prefix␤ prefix_postfix_meta_operator␤ term␤FAILED 00:01 106m␤»
[particle] ...further discussion in #meta...
masak ...which completes the circle.
if we're not careful, we'll just go on like this all day. :)
TimToady we don't require an argument 16:06
TimToady wants to work on viv but probably ought to work on IO 16:08
16:11 uniejo joined
TimToady should finish backlogging before he makes the wrong decision :) 16:12
16:12 pyrimidine joined, synth left 16:17 cdarroch joined, cdarroch left, cdarroch joined
colomon Hmmm... where is infix:<X> defined in STD.pm? 16:19
std: say 3, 4 X 4, 5 16:22
p6eval std 30082: OUTPUT«ok 00:01 106m␤»
colomon ahh, the X metaoperator doesn't have to have something following it. hmmm.... 16:23
TimToady I think it's parsing it as a null op on the meta X
colomon yes.
that's my impression.
TimToady std: 1 R 2
p6eval std 30082: OUTPUT«===SORRY!===␤Confused at /tmp/l4gkFD19ze line 1:␤------> 1 R⏏ 2␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤FAILED 00:01 106m␤»
colomon It's a special case in X 16:24
TimToady ? on the infixish
considering it is basically the metaop's semantics, probably makes sense
16:24 meppl joined
TimToady could do the same for Z if we make it a zipwith metaop 16:25
masak only if there's a compelling use case, methinks.
colomon nooooooooooooooo....... 16:27
masak hm, it would turn 'map { $^a + $^b }, @a Z @b' into '@a Z+ @b', no? I think I might learn to like that... :)
but don't listen to me. :) leave it as it is.
colomon you guys are not allowed to think up new metaoperators faster than we can implement the old ones.
masak I agree. leave it for Perl 6.1.0. :) 16:28
or a module.
colomon wishes pmichaud were around to help get the grammar right for these things...
16:31 [particle] left
TimToady I think Z probably oughta be a metaop just like X 16:31
colomon is /o\ hands covering ears?
TimToady and default to Z, just as X defaults to X,
Z[,] and X[,] to be clearer
masak *sigh*
yes, I agree. it must be so.
colomon: sorry. :/ 16:32
TimToady it's all just functions that take functions as arguments
masak the case for consistence between X and Z is stronger than the case for simplicity for just one of them.
TimToady and Z+ might be one of those things that people are going to say "How did I live without that?" :) 16:33
colomon > say (4, 5 X 3, 4).batch(10).perl
((4, 3), (4, 4), (5, 3), (5, 4))
TimToady nice parcels there
colomon I think there may be some flattening issues here.
masak sqrt([+] @coords Z* @coords)
colomon errr... 16:34
sqrt([+] @coords >>*<< @coords)
16:34 M_o_C left, M_o_C joined
masak hm. 16:34
colomon wait, can Z* be lazy?
TimToady sqrt [+] @coords»**»2 16:35
of course it can
masak :)
colomon If Z* can be lazy, that's a super-compelling use case IMO.
TimToady so can map
but not hyper
masak I think we'll see a "How did I live without Z+ ?" blog post in about 2015... 16:36
TimToady but yes, @a Z* @a is a lazy squarer
masak ok, so same goal point, different road.
TimToady along with about a hundred posts saying "What the @$#($ is Z+?" 16:37
masak oh, we've been seeing those since 2004 :)
maybe not for Z+, but for other things. 16:38
the "Perl 6 is too complicated" meme is so old it should be deprecated.
also, we're clearly missing a Y metaoperator. 16:44
we have X and Z, but not Y.
Trashlord I think Perl 6 is clean, and straight forward 16:45
and I'm not even that good of a Perl coder, heh 16:46
masak STD.pm, by its very existence, does a lot in convincing me of the cleanness of Perl 6.
16:48 envi^home left
masak hm, even 'if 42 -> $a { say $a }' involves signature binding... 16:50
moritz_ good morning 16:52
masak lolitsmoritz 16:53
TimToady colomon: otoh, the user must be able to name &infix:<X>
colomon TimToady: nod. In fact, that's how I'm implementing stuff at the moment. I don't understand enough of what is needed to translate STD.pm to Grammar.pm to make the default X, work. 17:01
pugssvn r30083 | moritz++ | [t/spec] correct some test descriptions: ::= is now binding plus making ro, not compile-time binding
r30084 | moritz++ | [t/spec] tests for readonly binding ith ::=
colomon post-shower, I still think Zop is brill.
pugssvn r30085 | moritz++ | [t/spec] bring Whatever tests up to date with current spec, and add some more
r30086 | moritz++ | [t/spec] fix some smartlinks, and a broken test in autothreading.t
r30087 | moritz++ | [t/spec] fix more smartlinks 17:02
r30088 | moritz++ | [t/spec] fix S12-enums/basic.t (track spec changes)
colomon It will make a lot of math stuff that was ugly before work elegantly.
pugssvn r30089 | moritz++ | [t/spec] delete some outdated tests in S12-enums/thorough.t and fix smartlinks
r30090 | moritz++ | [t/spec] fix rest of smartlinks in enum tests
dalek kudo: b12fd89 | moritz++ | src/cheats/parrot/Protoobject.pir:
don't warn on boolification of type objects.

Also include a wee bit more information in the warnings when using a type object as a value (in the vtable methods in cheats/parrot/Protoobject.pir)
pugssvn r30091 | moritz++ | [t/spec] more smartlink fixes
masak swimming & 17:14
17:14 masak left 17:16 payload left 17:17 synth joined 17:19 [particle] joined 17:20 abra joined 17:21 fda314925 left
Tene spinclad: you were remembering polyglotbot that supported perl6-parse: and friends. polyglotbot is sadly dead. 17:24
dalek kudo: 79085cd | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Add Zop to the grammar. (Actual implementation not yet there.)
17:31
kudo: bc08aa4 | (Solomon Foster)++ | src/ (2 files):
Implement infix:<X>.
kudo: e3b5d7b | (Solomon Foster)++ | src/Perl6/Grammar.pm:
Add Sop and Xop to the grammar, without actually implementing them.
17:31 Jedai joined 17:33 Clearwolf joined
pugssvn r30092 | lwall++ | [S03] add Z to go with X metaop 17:40
r30092 | note that X and Z desugar to higher-order methods, crosswith and zipwith
r30092 | speculate about how to zip/cross dwimmily with non-identical ops
r30092 | possibly creating a real use case for surreal precedence :)
colomon TimToady: It seems to me that zipwith will do the right thing with non-identical ops. It just has to be processed pairwise according to the base ops' precedence, right? Then laziness should take over and make things work the way we'd like. 17:42
colomon so wishes he could work on that instead of $work at the moment...
TimToady yes, that's what I'm talking about with subprecedence 17:43
I'm assuming crosswith and zipwith will compose properly
colomon sorry, haven't read the changes, just the summary there. :)
TimToady subprecedence means that Z~ is looser than Z+, but both are at the list infix level of precedence 17:44
precedence levels compose for metaops, in other words
at least for these two metaops
that's the speculation 17:45
it feels clean, and may actually be dwimmy
in that hard-to-explain but makes intuitive sense sense 17:46
in that hard-to-explain but makes-intuitive-sense sense
colomon I just want something like @a Z+ @b Z* @c to mean take the three arrays and do $a + $b * $c on each triple, lazily. Which I take it is where you are going... :)
17:47 payload joined
TimToady if Z is composable, then @a Z+ (@b Z* @c) works 17:47
and that means we don't have to deal with hetero-operator reduces 17:48
17:48 Clearwolf left
TimToady if we solve it with subprecedence 17:48
it maps to the as-if-you'd-written-it-this-way meme nicely 17:49
17:50 takadonet left
Tene How is Zip different from doing that with hypers? 17:52
TimToady it means that we take the list infix precedence of f=, compose it with the precedences of additive t= or multiplicative u=, and end up with ft= or fu=, or some such
hypers are eager
colomon Tene: Zip is lazy
Tene ah
colomon TimToady and I discussed that maybe S>>+<< would be lazy, but Z+ is much nicer, IMO. 17:53
TimToady I guess a bare X or Z would actually compose with comma subprecedence, maybe 17:54
since Z is really short for Z[,]
but have to look at bare list infix ops too, and see how they relate 17:55
jnthn Hypers also imply potential parallemism, whereas I guess Z perhaps doesn't.
17:56 payload left
colomon how do you get standard input again? 17:56
TimToady $*IN
colomon danke. 17:57
TimToady didn't get to either viv or IO...didn't even finish backlogging yet...
colomon but you added a new metaop, and that's a good day's work. :)
jnthn TimToady: When you get to IO, can it please be purple?
:-)
TimToady well, green is my favorite color, though I like purple better. 17:58
colomon I won't use a language with purple IO. Period.
17:59 payload joined
TimToady
.oO(nothing is solved by violets)
17:59
18:01 takadonet joined, iblechbot joined, ash_ joined
TimToady I guess we need a name for operators derived from other operators via a metaoperator 18:01
higher order operator => HOO :)
colomon HOO! 18:02
TimToady except that'd be the metaop
since it's the metaop that is higher-order
ash_ Hoo makes me think of christmas... Hoo Hoo Hoo
TimToady derived op
deop
18:03 dakkar left
TimToady reordered operator :) 18:03
call 'em ernestines, maybe :)
ash_ you can augement a role, right? Like if i wanted to extend the perl 6 grammar, I'd use augement grammar Perl6::Grammar ? 18:06
oops, s/role/grammar/
TimToady um, that would be antisocial 18:07
just derive a new grammar
std: augment grammar STD {...} 18:08
p6eval std 30092: OUTPUT«===SORRY!===␤Can't augment grammar STD without MONKEY_TYPING at /tmp/aGfkfyibEv line 1:␤------> augment grammar STD⏏ {...}␤Other potential difficulties:␤ Can't augment grammar STD because it doesn't exist at /tmp/aGfkfyibEv line 1:␤------>
..[32…
ash_ what do you mean antisocial? I am a bit confused
TimToady augment grammar would be changing the grammar out from under other people 18:09
magical action at a distance; hence monkey typing 18:10
ash_ I was just going to try playing with list ops, the [*] 1, 2, 3; kind, those don't seem to be (IMO) normal prefix ops
colomon rakudo
stupid fingers
TimToady [*] is parsed like 'print'
colomon rakudo: given "hello" { when "hello" { say "done!" } } 18:11
p6eval rakudo b12fd8: OUTPUT«done!␤»
ash_ ah, i thought it was a special part of the grammar
TimToady well, the inside of it is special
18:12 M_o_C left
ash_ prefix:<[*]> (@args) { ... } would work? 18:12
TimToady you're not supposed to define individual derived ops 18:13
18:13 Psyche^ joined
TimToady that doesn't scale 18:13
ash_ yeah, thats kind what I was thinking, is there a way to put a placeholder in the < > part? 18:14
18:15 M_o_C joined
TimToady in STD see regex prefix_circumfix_meta_operator:reduce { 18:16
ash_ k, thanks
quietfanatic Are you allowed to override individual derived ops for performance?
18:17 Patterner left, Psyche^ is now known as Patterner
TimToady well, LTM will do the right thing there, but it's inadvisable, since it no longer lets [*] defer to the current definition of *, which can be context sensitive 18:19
suppose you've added my multi infix:<*>(Foo $x, Foo $y) {...} 18:20
your hardwired version likely won't see it
18:20 gfldex left, gfldex joined
TimToady would be better for a hotspot optimizer to optimize this 18:21
ash_ how bad is it to do something like: prefix:<[*]> (@arg of Int) { ... } (i think thats the right syntax, i mean where @arg only contains Int) 18:22
TimToady that's what quietfanatic just asked, and I answered at length
ash_ ah, sorry, i thought he meant something different, my bad 18:23
TimToady now, the optimizer should be able to know that * hasn't been overridden, and substitute a faster [*] if it has one, but that's not something a user should be concerned with 18:25
overriding metaops will generally be considered bad style, indicative of premature optmization, I expect 18:26
kinda like throwing a goto into the middle of a well-structured piece of code
you can make LTM subvert all kinds of things, but that doesn't mean you want to 18:27
you can put a token in that parses 'say 42 when Thursday' if you like 18:28
I fully expect people to get into all kinds of trouble with derived grammars 18:29
ash_ that gives a whole new meaning to programs that only work on a single day of the week 18:30
18:30 bkeeler_ left
TimToady All expedients are not expedient. 18:33
18:33 SmokeMachine joined
quietfanatic That makes sense. 18:34
18:34 alester left 18:36 cj joined 18:37 payload left, abra left, payload joined 18:39 alester joined, payload left 18:41 payload joined 18:46 bkeeler_ joined 18:52 takadonet left, mberends joined 18:56 astrojp left, astrojp joined 19:01 payload left 19:06 hercynium left, TiMBuS joined
spinclad Tene: polyglotbot dead: :,( *snf* let me lift a cup of ... well, tea ... to its memory. i'll miss that feature, rarely used tho it was. 19:09
but yes, it's better /methinks to get a parsetree at home and paste all or excerpts at ones own discretion. 19:12
19:13 Chillance joined
spinclad i guess. 19:13
19:17 uniejo left 19:22 lichtkind joined, ShaneC joined 19:24 wasy left, wasy joined 19:29 hercynium joined 19:53 masak joined
masak is not .crosswith the latest spec change 19:56
19:58 gfldex left, gfldex joined
jnthn masak: <groan> 20:01
20:05 hercynium left
diakopter masak: oha 20:19
masak diakopter: hi. just leaving for dinner. :)
diakopter masak: a couple of maybe-bugs from 18 hours ago 20:20
thereabouts
masak diakopter: thanks. will check them out.
in time.
diakopter what about in space? 20:21
masak sure, after I've had dinner :)
20:21 masak left 20:22 SmokeMachine left
lichtkind mberends: ping 20:38
20:39 iblechbot left 20:44 Salada345 joined 20:45 ignacio_ left 20:49 IllvilJa left 20:57 ignacio_ joined 20:58 ignacio_ left 20:59 ignacio_ joined, payload joined
ash_ is STD.pm run against the spec? just wondering 21:00
Tene ash_: against the spec tests, you mean?
ash_ yeah, the spec tests 21:01
21:02 cosimo joined, cosimo left, ignacio_ left
Tene No, not that I know of. 21:03
ash_ i assume they'd parse fine, just wondering, kinda a who tests the tests kinda thought 21:04
Tene ash_: it's a great idea. I don't know of anyone doing it now, but it's certainly doable, and would be valuable. 21:05
jnthn I think there may be something like that set up, since TimToady++ was able to very quickly identify what tests needed tweaking as a result of the recent MONKEY_TYPING change in STD.
Either that or it was just done with grep. ;-)
21:06 jferrero left 21:08 Sarten-X2 left
quietfanatic TimToady runs STD.pm against the spec tests quite frequently. 21:09
ash_ cool, thats useful to know 21:10
21:12 Sarten-X joined 21:14 kcwu left 21:17 cotto left 21:19 wknight8111 joined 21:22 IllvilJa joined, jhuni joined
mberends lichtkind: pong 21:23
lichtkind mberends: too late :)
mberends :)
I do run 'make test' on STD.pm quite regularly, almost daily. TimToady++ probably does it far more often. 21:25
21:26 hercynium joined 21:27 Salada345 left
ash_ ah, i didn't know there was a 'make test' for STD.pm 21:29
lichtkind mberends: im writing perl 6 article :)
mberends: just want to say thanks for latest changes 21:30
mberends lichtkind: it was not too late for that :)
lichtkind hoho
mberends There is still more to document about STD.pm and viv, but it's not yet completely clear to me 21:31
(which also means the talks in Arnhem and Copenhagen were slightly misinformed) :( 21:32
21:33 pyrimidine left
jnthn rakudo: class Foo { has $.a; has $.b; has $.c = $.a + $.b; } 21:44
p6eval rakudo 79085c: OUTPUT«Symbol '$.a' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (compilers/pct/src/PCT/HLLCompiler.pir:101)␤» 21:45
colomon jnthn: what would that mean?
jnthn That we haz a fail.
mberends jnthn: don't torture yourself!
snarkyboojum good moaning Perl 6 hacker types
mathw good evening snarkyboojum
jnthn hi snarkyboojum
mberends: Heh. It's meant to work. 21:46
colomon jnthn: no, I meant has $.c = $.a + $.b;
jnthn colomon: Foo.new(a => 1, b => 2).c.say # should be 3
colomon jnthn: funky. 21:47
jnthn colomon: It does work in alpha, I'm trying to work out the reason(s) it's broken in master.
at least, I think it does...
alpha: class Foo { has $.a; has $.b; has $.c = $.a + $.b; }; Foo.new(a => 1, b => 2).c.say 21:48
p6eval alpha 30e0ed: OUTPUT«3␤»
snarkyboojum that Z+ discussion looks funky :) 21:49
Perl 6 just keeps looking cooler
jnthn oh... 21:50
colomon snarkyboojum: I'm totally geeked about it.
jnthn I think it's a mis-handling of $*IN_DECL
snarkyboojum colomon: :) 21:51
21:54 ruoso left 21:55 xomas joined, xomas left, xomas joined
dalek kudo: 8826895 | (David Romano)++ | (10 files):
Merge remote branch 'upstream'
22:05
22:09 M_o_C left 22:11 meppl left 22:18 Su-Shee left
colomon rakudo: say 6 % 2.3 22:29
p6eval rakudo 79085c: OUTPUT«1.4␤»
colomon oooo....
pugssvn r30093 | lwall++ | [whatever.t] fix parsefails 22:30
22:32 nihiliad left 22:34 rv2733 left 22:37 masak joined 22:38 pjcj joined 22:39 quietfanatic left
ash_ colomon: is that wrong? for % 22:41
colomon as far as I know it's right. I just didn't know it could do that.
m6locks omg that parrot-nqp process is quite a memory hog 22:42
i'm not surprised people run out of memory while building 22:43
22:43 synth left
snarkyboojum m6locks; perhaps that's why rakudo doesn't build on my 256MB linux slice.. 22:44
m6locks ;P
snarkyboojum :)
I was being serious heh
m6locks :) 22:45
masak why are you people trying to squeeze a Rakudo build through so ridiculously little RAM?
snarkyboojum I thought 4KB was all the world needed.. :P
m6locks :P
mberends as M$ would say, you need powerful hardware to match our powerful software :P
jnthn Well, they have lots of users...seems like a good approach to copy. 22:46
;-)
lichtkind jnthn: na zdravi
jnthn lichtkind: huh? Som v svedsku teraz...uz som zabudol ako citat slovencinu. ;-) 22:47
22:47 unobe joined
jnthn (not really. I hope. :-)) 22:47
22:47 quietfanatic joined
lichtkind jnthn: its hard to read for me 22:47
mberends jnthn: security through obscurity? 22:48
masak had to look up 'uz' and 'zabudol'
lichtkind zabudol means forgotten?
masak aye.
jnthn lichtkind: Yes
masak 'citat' was cute :)
lichtkind thanks that was an hard guess because its in our lang zapomnel 22:49
masak and I suppose 'ako' is either a pure infinitive marker, or means 'what' or something.
jnthn Yes, Czech has plenty of similarities and plenty of differences.
lichtkind masak: thats easy ako means like
jnthn masak: I was using it like "how to" in that case.
snarkyboojum znam malo Hrvatski
masak lol! I haz blogged: use.perl.org/~masak/journal/40246 22:50
jnthn omfgmasakblogged!
lichtkind silence lolcats
masak jnthn, lichtkind: ok, that makes sense too.
it's 怎么 in Mandarin.
rakudo: my $a; ($a, $a) = 2; say $a 22:51
p6eval rakudo 882689: ( no output )
lichtkind jnthn: are the any other plumage modules beside compiler and blizkost
masak alpha: my $a; ($a, $a) = 2; say $a
p6eval alpha 30e0ed: OUTPUT«␤␤» 22:52
masak diakopter: I agree that this is problematic in some sense.
jnthn lichtkind: Not sure...'fraid I ain't really been following Plumage so much (lack of time to follow everything rather than lack of interest)
masak diakopter: but I'm not really surprised.
nor confused.
jnthn masak: I can vaguely guess what may be going on there.
masak jnthn: 'xactly.
$a is being assigned twice.
lichtkind masak: can you actuelly install something due proto? 22:53
masak alpha: my $a; ($a, $a) = 2; say $a.WHAT
p6eval alpha 30e0ed: OUTPUT«Failure()␤»
masak lichtkind: that's a really good question.
lichtkind: one used to be able to.
lichtkind masak: thanks im curretnly writing a p6 update article for foo 22:54
masak: is onlike november fixed :) huauauaua 22:55
22:55 mssm joined
masak lichtkind: since proto tends to install its own Rakudo, and since it hasn't been maintained in a few months, my guess is that it'll install an older monthly release, and maybe even work just fine from that. 22:55
lichtkind: no, but I'm getting increasingly curious as to what might be the problem with online-November, so I might actually get around to checking it out. :) 22:56
unobe does anyone know if !=== and !== are supposed to be in the list of chaining infix ops at the top of S03? 22:57
lichtkind masak: tpf wiki is now in shape so its time :)
masak unobe: I think so.
TimToady those are metaops, and S03 cannot be exhaustive
22:57 meppl joined
masak unobe: that list is not meant to be complete. 22:57
TimToady since metaops are infinitely generative 22:58
masak lichtkind: good to know.
unobe ah, ok
TimToady all negated ops are chaining though
unobe I saw != and !eqv so I was confused
TimToady a special case and an example
lichtkind masak: yeahs theare was bit mor going on then I posted , some +- 300 edits or so, its not complete but readable 22:59
jnthn rakudo: say "a" !eq "b"
p6eval rakudo 882689: OUTPUT«1␤»
unobe ah, thanks masak and TimToady
jnthn :-)
unobe rakudo: say 23 !== 45
p6eval rakudo 882689: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16934 (src/builtins/Junction.pir:399)␤»
masak rakudo: say <a> R!Req <b>
unobe rakudo: say 23 != 45
p6eval rakudo 882689: OUTPUT«1␤»
masak \o/
that's outright scary.
unobe rakudo: say 23 Rcmp 45
p6eval rakudo 882689: OUTPUT«1␤» 23:00
ash_ rakudo: say 23 Rleg 45 23:02
p6eval rakudo 882689: OUTPUT«1␤»
masak rakudo: say 23 RRRRRRleg 45
p6eval rakudo 882689: OUTPUT«-1␤»
masak :)
colomon rakudo: say 23 RRRRRRRleg 45 23:03
p6eval rakudo 882689: OUTPUT«1␤»
ash_ leg is a funny op name to me :P, makes sense when you realize it 'Less Equal Greater' but if you don't come to that conclusion your like whats a limb doing in this program?
masak so this is why we switched to ng. so we could use the RRRRRRleg operator.
colomon you know your life was not complete without it.... 23:04
masak :)
it just struck midnight here. I need to run down the stairs, drop a shoe, and jump into my pumpkin ride before the horses are detransmogrified back into mice or whatever. 23:05
I'll be back tomorrow, looking for my shoe. 23:06
jnthn o/
diakopter kiss the prince[ss] before you leave
masak :)
no wai.
23:06 masak left
ash_ if you need to build rakudo, amazon EC2 is like $0.085 cents an hour to use use their small server instance, which has 1.7 Gigs of ram, its 32 bit though if that makes a difference. the large one is 64, since it has 7.5 gigs of ram. but anyway, thats the cheapest + fastests way to find a linux box in my experience 23:07
sorear I grew up with an 8MB RAM Windows 3.11 box... I can't think of 256 as anything but "absurdly large" 23:09
jnthn 4MB and 3.1 for me. :-)
colomon 64K on Commodore 64... ;) 23:10
ash_ you can get 68.4 GB of memory from amazon, for 2.40 an hour.... that can hold most of my hard drive, if i exclude my music it can easily fit it all in memory
amazon EC2 that is
pugssvn r30094 | lwall++ | [STD] add Z metaoperator 23:11
r30094 | be slightly more human in the metaop "Can't" messages
ash_ my first computer was a dos something or another my dad had, all i remember doing on it was playing math blaster
TimToady the first computer I programmed allowed 128 *instructions* 23:12
ash_ i am not sure what i would do with 128 instructions... i'd use them to load more instructions, if it supports that 23:13
snarkyboojum 2MB and 3.0 for me :) 23:14
sorear also, I have a real problem with todo list explosion... *watches Complete Parrot memory profiler slide down the list* 23:15
lue o you are talking about computers. I think I have said enough about mine :)
jnthn ah, finally...it works.
> class Foo { has $.a; has $.b; has $.c = $.a + $.b }
> say Foo.new(a => 49, b => -7).c
42
colomon \o/ 23:16
23:16 payload left
ash_ does it store the ops on the rhs of the = as "TODO on create?" 23:16
jnthn Also while I was on it, I did:
> class Bar { method foo($x, $y) { say "$x,$y" }; method bar() { $.foo(1,2) } }
> Bar.new.bar
1,2
That is, the $.foo form with args.
ash_: Yeah, it makes an anonymous method out of the RHS 23:17
ash_: And passes it along to the metaclass in hope that it'll do something useful with it at some point. :-)
ash_ if you added a method BUILD or something does it override that? or i guess, when do those anon methods get called? 23:18
jnthn At BUILD time. 23:19
Yes, BUILD currently overrides that. Or supplying a value for it in the constructor.
ash_ neat, are those in S12 somewhere? 23:20
23:20 arlinius left
jnthn Yes, somewhere. 23:21
TimToady hmm, I'm misremembering--it was only 120 instructions, on 3 handpunched cards of 40 each 23:22
japhb lichtkind, Plumage has 33 projects currently in its metadata collection. I have a WIP tool to convert all of proto's projects to Plumage (+distutils, if the project has no native build system), but it doesn't work against current Rakudo, so that's stalled. 23:23
sorear non-binary computers ftw 23:24
ash_ oh, they were punch cards? my professor brought some of those to class once, just to show use 'children' what it used to mean to be a programmer, i am glad there were plenty of advances with rom and ram though.... so you know, you don't have to carry a card box for each program you hole punch...
lichtkind japhb: thanks i saw only the compiler in the git
japhb ?
Which link were you looking at?
lichtkind japhb: gitorious.org/parrot-plumage/parrot...r/metadata 23:25
23:25 TiMBuS left
lue the downside of nowadays is you actually have to think to program. Back then, just punch some holes, see what happens. That'd been fun. :P 23:25
ash_ i think i'd think more if it was in a punch card though, since you can't undo... 23:26
japhb lichtkind, oh, are you referring only to Perl projects?
lichtkind japhb: i thought perl projects where in proto 23:27
ash_ not that i currently write things just to see what they do... well i mostly don't do that, i generally do at least some planning prior to actually writing something
japhb Because a lot of the libraries that are Plumage-packaged are designed to work with any HLL. Once Rakudo has 'use Foo :from<lang>;' they will be usable from Perl 6 again.
lichtkind interesting 23:28
japhb lichtkind, Most of the pure Perl ones are in proto, yes. I view that as historical happenstance. :-) As I said, I'm working to be able to import all the proto metadata into Plumage, so it will be able to install all of those as well.
lichtkind ah 23:29
23:29 ash_ left
japhb But to eat my own dog food, I'm writing the import tool in Perl 6. It got half way working in alpha, but doesn't work at all in master. 23:30
23:30 mberends left 23:34 unobe left
lichtkind japhb: great i never wrote any p6 except demo code for tuts 23:34
lue afk 23:38
23:42 rgrau left
sorear japhb: Do you have any good example code for small, JustWorks, Parrot extensions w/ custom PMC code? 23:43
23:44 ruoso joined
japhb I dunno how small it is, but perhaps parrot-linear-algebra? 23:44
whiteknight on #parrot would probably know better the answer to that question
sorear oh, I thought you were running plumage and knew *all* the extensions 23:45
sorear has decided that the best way to get file descriptor I/O is to port POSIX.pm to Rakudo/Parrot 23:46
japhb I wrote most of Plumage, yes, but it's just a tool, a set of libs, and a metadata repo. I don't know all the projects personally.
With nearly three dozen already, I'd have trouble keeping track even if I wanted to. :-)
lichtkind japhb: thats good 23:48
23:53 meppl left
dalek kudo: dea0a59 | jonathan++ | src/Perl6/ (2 files):
$.foo can now accept arguments, and various issues with the RHS of has $.x = ... are resolved.
23:54
kudo: 1c75cfe | jonathan++ | t/spectest.data:
Turn S12-methods/syntax.t back on.
jnthn That was a harder work patch that I expected. :-/ 23:55
colomon still, patches! \o/
jnthn Aye 23:58
Those two are nice to have resolved.
I discovered .can is a tad broken though.
That's the next blocker for S12-attributes/instance.t 23:59