Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2010-03-15

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:03 astrojp joined #perl6
00:05 sorear Is the spec considered to be essentially complete on setting stuff, or is it expected to grow considerably before Perl 6.0?
00:08 TimToady it is asymptotically approaching stable, which means the answer to your question depends entirely on which scale you choose :)
00:09 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
00:09 p6eval std 30078: OUTPUT«ok 00:01 107m␤»
00:09 TimToady yowie, std is busticated
00:09 jnthn oh noes!
00:10 quietfanatic (non-auto-busticating)
00:10 supernovus joined #perl6
00:13 jhuni joined #perl6
00:14 TimToady ah, found it
00:17 pugssvn r30079 | lwall++ | [STD] fixed broken variable existence check
00:20 TimToady interestingly it still would catch: my @foo; "$foo[]", I think...
00:20 TimToady std: my @foo; "$foo[]"
00:20 p6eval std 30078: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable $foo is not predeclared (did you mean @foo?) at /tmp/hdNR3xew6z line 1:␤------> [32mmy @foo; "$foo[][33m⏏[31m"[0m␤    expecting any of:␤   POST␤   postfix␤  postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
00:21 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?
00:21 TimToady got fancy, and broke the plain stuff :)
00:22 TimToady probably unwritten, but with hints scattered about
00:22 TimToady a lot of which is take under "like p5 unless otherwise specced"
00:22 TimToady *taken
00:23 sorear the settings stuff looks a lot cooler than p5 generally though
00:24 * sorear observes that there is a very simple test for p6ness - look for # vim: ft=perl6 in the first and last 5 lines
00:25 arthur-_ joined #perl6
00:25 jnthn Those little bits of markup do seem to be proliferating themselves all over.
00:25 sorear yeah
00:25 sorear it reminds me of TimToady's EXTEND comment
00:25 sorear :/
00:26 jnthn Only trouble is if everyone's favorite editor starts adding them. :-)
00:27 jnthn But I think most editors don't have any need of that. :-)
00:37 * jnthn -> sleep o/
00:37 TimToady \o
00:40 snarkyboojum joined #perl6
00:43 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 #perl6
00:44 sorear So, then, I shouldn't try to implement any more of it than I need.
00:45 TimToady it all needs to be simplified so it's not a massive type hierarchy
00:45 TimToady but IO is probably a role
00:46 TimToady so yeah, don't take what is there too seriously yet
00:47 yinyin joined #perl6
00:50 TimToady std: $foo
00:50 p6eval std 30079: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable $foo is not predeclared at /tmp/9burCsmzVQ line 1:␤------> [32m$foo[33m⏏[31m<EOL>[0m␤    expecting any of:␤        POST␤   postfix␤  postfix_prefix_meta_operator␤FAILED 00:01 107m␤»
00:50 TimToady std: "@foo[]
00:50 p6eval std 30079: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable @foo is not predeclared at /tmp/FiUDFz6w4p line 1:␤------> [32m"@foo[][33m⏏[31m<EOL>[0m␤    expecting any of:␤     POST␤   postfix␤  postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
00:54 yinyin joined #perl6
01:08 spinclad std: my @foo; "@foo[]
01:08 p6eval std 30079: OUTPUT«[31m===[0mSORRY![31m===[0m␤(Possible runaway string from line 1)␤Bogus statement at /tmp/V5AF5HZjdc line 1 (EOF):␤------> [32mmy @foo; "@foo[][33m⏏[31m<EOL>[0m␤    expecting escape␤FAILED 00:01 109m␤»
01:08 spinclad std: my @foo; "@foo[]"
01:08 p6eval std 30079: OUTPUT«ok 00:01 106m␤»
01:09 TimToady std: my @foo; "@foo[""]"
01:09 p6eval std 30079: OUTPUT«ok 00:02 106m␤»
01:09 spinclad std: my @foo; "@foo["$foo"]"
01:09 p6eval std 30079: OUTPUT«[31m===[0mSORRY![31m===[0m␤Variable $foo is not predeclared (did you mean @foo?) at /tmp/76SVDM7sQY line 1:␤------> [32mmy @foo; "@foo["$foo[33m⏏[31m"]"[0m␤    expecting any of:␤     POST␤   postfix␤  postfix_prefix_meta_operator␤FAILED 00:01 106m␤»
01:09 TimToady gotcha
01:10 spinclad i presume that's indexing @foo with a string
01:10 spinclad which should fail to dispatch
01:11 TimToady oops, now I broke @_, sigh
01:11 TimToady yes, but semantic problem, not syntactic
01:11 spinclad runtime dispatch
01:13 spinclad or if compiletime, still type-inference, not syntax (so not in STD now)
01:17 pugssvn r30080 | lwall++ | [STD] make @_ and %_ okay again, sigh
01:18 hudnix joined #perl6
01:22 astrojp left #perl6
01:23 astrojp joined #perl6
01:36 sorear Perl has type inference now?
01:37 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 TimToady *genius
01:38 TimToady but many type inference systems seem to require the user to simulate all that mentally to figure out what the compiler is doing
01:39 TimToady 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 TimToady and to the extent that the type inferencer can cut down the number of multi candidates, it's a feedback loop
01:40 TimToady it's one of the reasons I'm not overly concerned with parrot's (non)performance yet
01:41 vamped left #perl6
01:41 TimToady std: @_
01:41 p6eval std 30080: OUTPUT«[31m===[0mSORRY![31m===[0m␤Placeholder variable @_ cannot be used in this kind of block at /tmp/6wjc1wG1Ni line 1:␤------> [32m@_[33m⏏[31m<EOL>[0m␤    expecting any of:␤      POST␤   postfix␤  postfix_prefix_meta_operator␤FAILED 00:01 107m␤»
01:42 TimToady std: { $^a + @_ }
01:42 p6eval std 30080: OUTPUT«ok 00:01 106m␤»
01:46 astrojp I'd like to read more about Perl 6. Is this a good starting place? http://cloud.github.com/downloa​ds/perl6/book/book-2009-11.pdf
01:47 sorear I's a good place.
01:47 sorear There isn't really such a thing as a good starting point for Perl 6, unfortunately
01:48 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
01:48 astrojp ok, thanks. :)
02:05 jaldhar joined #perl6
02:05 Infinoid left #perl6
02:09 sorear I wonder if it would make sense to write a (Parrot) pseudo HLL "C" which just delegates imports to the NCI
02:09 sorear in order to implement S21
02:15 ned joined #perl6
02:56 snarkyboojum joined #perl6
03:06 snarkyboojum astrojp: I found this a good intro to perl 6 if you come from a perl 5 background -  http://perlgeek.de/blog-en​/perl-5-to-6/00-intro.html
03:06 colomon rakudo: say 4 !== 5
03:06 p6eval rakudo e704ef: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16872 (src/builtins/Junction.pir:373)␤»
03:06 snarkyboojum quite a lot of info there (note the "Posts in this category" left hand menu)
03:07 colomon std: say 4 !== 5
03:07 p6eval std 30080: OUTPUT«ok 00:01 107m␤»
03:09 jaldhar joined #perl6
03:13 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 :)
03:17 snarkyboojum astrojp: oh and recently (Dec last year), the Perl 6 advent calendar kicks butt :) http://perl6advent.wordpress.com/2​009/12/01/perl-6-advent-calendar/
03:17 leedo joined #perl6
03:22 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:30 lichtkind_ joined #perl6
03:35 alester joined #perl6
03:40 wolf2k_ubuntu joined #perl6
03:40 meteorjay joined #perl6
03:44 rv2733 joined #perl6
03:46 dalek rakudo: c29d389 | (Solomon Foster)++ | t/spectest.data:
03:46 dalek rakudo: Add S03-operators/not-metaop.t test.
03:46 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​29d389a9e414a4c3a38014f4ab9fb0bdc178b72
03:59 snarkyboojum joined #perl6
04:17 drbean joined #perl6
04:45 thowe joined #perl6
05:25 diakopter someone who has a working rakudo, what does yours do with:   my $a = ($a, $a) = 6; say $a
05:26 m6locks nada
05:26 diakopter nothing?
05:26 m6locks rakudo: my $a = ($a, $a) = 6; say $a
05:26 m6locks aye, nothing is printed out
05:26 diakopter :| yes, I realize the p6eval machine is slow
05:26 diakopter (currently)
05:26 p6eval rakudo c29d38:  ( no output )
05:26 diakopter it's trying to rebuild STD, rakudo, and rakudo-alpha all at once
05:27 diakopter m6locks: are you trying it locally?
05:27 m6locks yes i did it locally too
05:27 diakopter how long did it take to return nothing locally
05:27 m6locks not that long
05:27 lue I'll do it locally, just need to compile...
05:28 diakopter oh, sigh.
05:28 m6locks quite fast actually
05:28 diakopter building rakudo and rakudo-alpha take quite a crudton of memory these days
05:29 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
05:29 lue It usually hangs on this old computer :/
05:29 diakopter funny, the p6eval "server" has only 1 GB of RAM, while my notebook has 8
05:30 lue :O
05:30 sorear diakopter: lue said I could bum an account off you for building rakudo
05:30 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
05:30 sorear yes
05:30 sorear nice values are inherited
05:31 diakopter sorear: not me... maybe you can use feather
05:31 lue I think I meant bkeeler, sorear
05:31 diakopter m6locks: cpu isn't the problem; it's the memory
05:31 m6locks aye
05:31 lue diakopter: will this feather actually help me, or will it just jam up my fan and cause everything to overheat? [ :) ]
05:32 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?
05:32 diakopter host03.appflux.net
05:33 diakopter one of my VPSes
05:33 m6locks ok
05:33 diakopter a 1GB VPS
05:33 lue I'd go after feather, but I already have something to ssh to :)
05:34 diakopter rakudo: (my $a, $a) = 6; say $a
05:34 p6eval rakudo c29d38:  ( no output )
05:34 diakopter rakudo: (my $a) = 6; say $a
05:34 p6eval rakudo c29d38: OUTPUT«6␤»
05:34 lue diakopter: your code above does nothing for me :/
05:34 diakopter yeah, me neither
05:35 diakopter the expression vs. statement vs. statement list vs. declaration vs. assignment semantics in Perl 6 make about 0 sense to me
05:36 lue your statement makes 0 sense to me :D
05:36 m6locks :D
05:36 diakopter I mean, it's not just the "corner cases" rakudo can't make sense of...
05:37 diakopter lue: what in my statement don't you understand?
05:37 diakopter (obviously you got the part about me not comprehending something)
05:38 lue e v. s v. sl v. d v. as (that should clear things up >:) )
05:38 lue I can read what you're saying, but I'm not making any real effort to understand it right now :P
05:38 m6locks you just woke up too?-D
05:39 m6locks good morning, btw
05:39 lue No, the exact opposite. About to go to bed :)
05:39 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.
05:41 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 lue I get the gist of it, but I don't know it in as much detail as you do :)
05:41 diakopter I find it disconcerting that I [would] have to ask for explanation on what a particular "Perl 6" input is supposed to "do"
05:42 diakopter , for nearly every input I come up with.
05:43 diakopter (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:44 diakopter 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
05:44 m6locks but i see what you mean
05:45 m6locks i'd rather have a std interpreter too
05:45 diakopter than what?
05:45 diakopter (instead of what)
05:45 m6locks than unclear error messages
05:46 m6locks i mean doesn't that std do syntax checking
05:46 m6locks std: my $a = ($a, $a) = 6; say $a
05:46 p6eval std 30081: OUTPUT«ok 00:01 108m␤»
05:47 m6locks it's supposed to be ok :)
05:47 diakopter std is Larry's implementation of a parse-time-extensible/mutable parser
05:47 diakopter in Perl 5, effectively
05:48 sorear my $a = ($a, $a) = 6 is parsable to me
05:48 diakopter what does that mean to you?
05:48 sorear the perl 5 equivalent is my $a; $a = ($a, $a) = 6;
05:48 sorear my $x = y in p6 is my $x; $x = y in p5
05:49 sorear this is to make recursion easier
05:49 sorear $a = ($a, $a) = 6 is, because = is right associative, $a = (($a, $a) = 6)
05:49 diakopter ok, but what does this mean:   my $a; ($a, $a) = 6;
05:49 m6locks that's supposed to make $a an array of 2 elements of value 6?
05:49 sorear ($a, $a) = 6 is a list assignment
05:50 sorear it is also a semantic error because no variable should appear more than once in a target list
05:50 synth joined #perl6
05:50 sorear but std doesn't check for most semantic errors
05:50 diakopter I didn't think Perl 6 list assignment worked that way
05:51 diakopter pugs: my $a; ($a, $a) = 6; say $a
05:51 p6eval pugs: OUTPUT«␤»
05:51 diakopter rakudo: my $a; ($a, $a) = 6; say $a
05:51 p6eval rakudo c29d38:  ( no output )
05:51 diakopter alpha: my $a; ($a, $a) = 6; say $a
05:51 lue ENOSLEEP (try sleeping)
05:51 p6eval alpha 30e0ed: OUTPUT«␤␤»
05:51 diakopter elf: my $a; ($a, $a) = 6; say $a
05:51 p6eval elf 30081: OUTPUT«␤»
05:52 diakopter sorear: what makes you think ($a, $a) = 6 is a "list assignment"?
05:53 diakopter rakudo: my $a; ($a, $a) = 6, 8; say $a
05:53 p6eval rakudo c29d38: OUTPUT«8␤»
05:54 diakopter ok, :|
05:55 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
05:56 diakopter rakudo: my $a; ($a, $a; $a) = $a, $a, 8; say $a
05:56 p6eval rakudo c29d38: OUTPUT«Any() Any() 8␤»
05:56 diakopter oh
05:56 sorear I don't have any idea what ; does though
05:57 sorear rakudo: my $a = ($a, $a) = 6; say $a;  # I expect 2
05:57 p6eval rakudo c29d38:  ( no output )
05:57 sorear ok, that much has changed
05:57 sorear I guess assignments always return the rhs now
05:57 diakopter I guess it means the last "statement" in the () (the one after the last ';') is the target of the assignment
05:59 diakopter rakudo: my $a; ($a, $a; $a, $a) = 6, 8; say $a
05:59 p6eval rakudo c29d38: OUTPUT«8␤»
05:59 diakopter rakudo: my $a; (5, 7; $a, $a) = 6, 8; say $a
05:59 p6eval rakudo c29d38: OUTPUT«8␤»
06:00 diakopter rakudo: my $a; (5, 7; (($a, ($a)))) = 6, 8; say $a
06:00 p6eval rakudo c29d38: OUTPUT«8␤»
06:00 * diakopter afk
06:01 snarkyboojum rakudo: my $a; ($a; $a, $a) = 2, 8, 4; say $a;
06:01 p6eval rakudo c29d38: OUTPUT«8␤»
06:03 snarkyboojum rakudo: my $a; ($a; $a, $a) = Whatever, 6; say $a;
06:03 p6eval rakudo c29d38: OUTPUT«Whatever()␤»
06:03 snarkyboojum rakudo: my $a; ($a; $a, $a) = 2, 6; say $a;
06:03 p6eval rakudo c29d38: OUTPUT«6␤»
06:03 * snarkyboojum doesn't even know if he's making sense ;)
06:04 snarkyboojum rakudo: my $b = Whatever; say $b;
06:04 p6eval rakudo c29d38: OUTPUT«Whatever()␤»
06:06 snarkyboojum not sure why one would take the Whatever if it's first, but the last num if the first is a num
06:10 snarkyboojum rakudo: my $a; ($a; $a, $a) = Whatever; say $a; say $a.WHAT;
06:10 p6eval rakudo c29d38: OUTPUT«Whatever()␤Whatever()␤»
06:10 snarkyboojum rakudo: my $a; ($a; $a) = Whatever; say $a; say $a.WHAT;
06:10 p6eval rakudo c29d38: OUTPUT«Whatever()␤Whatever()␤»
06:11 snarkyboojum rakudo: my $a = Whatever; say $a.WHAT
06:11 p6eval rakudo c29d38: OUTPUT«Whatever()␤»
06:11 snarkyboojum my rakudo is out of date :|
06:19 Trashlord joined #perl6
06:43 kaare joined #perl6
06:43 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:44 spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say $a; say $b; say $c
06:44 p6eval rakudo c29d38: OUTPUT«6␤»
06:44 spinclad rakudo: my ($a, $b, $c); $a = ($b, $c) = 6; say 'a: ', $a; say 'b: ', $b; say 'c: ', $c
06:45 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
06:45 p6eval rakudo c29d38: OUTPUT«a: Seq()␤b: Int()␤c: Failure()␤»
06:46 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 #perl6
06:47 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: »
06:48 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:51 spinclad rakudo: my $a = ($a, $a) = 6; say $a.perl
06:51 p6eval rakudo c29d38: OUTPUT«Seq.new()␤»
06:52 spinclad rakudo: my $a = (($a, $a) = 6); say $a.perl
06:52 p6eval rakudo c29d38: OUTPUT«Seq.new()␤»
06:52 spinclad rakudo: my $a; say (($a, $a) = 6).perl
06:52 p6eval rakudo c29d38: OUTPUT«(undef, undef)␤»
06:52 spinclad rakudo: my $a; say (($a, $a) = 6).WHAT
06:53 p6eval rakudo c29d38: OUTPUT«Parcel()␤»
06:53 spinclad rakudo: my $a; say (($a, $a)).WHAT
06:53 p6eval rakudo c29d38: OUTPUT«Parcel()␤»
06:53 spinclad rakudo: my $a; say (($a, $a)).perl
06:53 p6eval rakudo c29d38: OUTPUT«(Any, Any)␤»
06:54 spinclad rakudo: my ($a, $b); say (($a, $b) = 6).perl
06:54 p6eval rakudo c29d38: OUTPUT«(6, undef)␤»
06:56 * spinclad -> bed &
07:06 JimmyZ joined #perl6
07:11 Su-Shee joined #perl6
07:27 am0c joined #perl6
07:28 iblechbot joined #perl6
07:33 sorear hmm, so if I want to do IO to a file descriptor, I'll need to use the NCI?
07:33 mberends surely not. that should be Parrot's job
07:34 sorear the synopses say sysread is being discarded in favor of IO objects
07:35 sorear 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:36 mberends the implementation is probably confused. Rakudo currently assumes every file is UTF-8 encoded, for example
07:37 sorear I'm reading pugs:docs/Perl6/Spec
07:37 sorear not rakudo
07:38 mberends there has been a history of top-down specification idealism and bottom-up implementation frustration, with a considerable gap between the two.
07:39 mberends 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?
07:39 mberends no, other spec bits
07:40 mberends I also want to use sysread etc
07:43 mberends 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:44 sorear it looks like Parrot itself doesn't support uncooked file descriptor IO
07:44 sorear however, this doesn't really bother me, because of NCI and pir::
07:45 sorear (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.
07:46 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.
07:47 sorear workarounds are temporary things
07:47 mberends oh, there goes another potential bikeshed discussion... ;)
07:47 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 sorear sure, it's great to just change the language and keep going
07:50 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
07:50 sorear 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
07:51 sorear 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 :/
07:51 sorear (of course I'm oversimplifying quite a bit by reducing Perl 6 design and Perl 6 use to one person each)
07:52 mberends it's still like that with more people too
07:53 sorear hmm... I think I'll write a memory profiler for Parrot.
07:53 mberends are you serious? that would be awesome!
07:54 sorear I tried writing one for Perl 5, but failed
07:54 sorear Perl 5 just doesn't keep enough metadata for it to work sanely
07:55 sorear I'm not sure but it seems vaguely doable in Parrot
07:56 sorear and yes I'm serious
07:57 mberends Parrot probably has more metadata, but watching how the Parrot developers grapple with the codebase is not fun.
07:57 sorear ?
07:58 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:59 kfo_ joined #perl6
07:59 mberends hopefully talk later, commuting to $work &
08:01 JimmyZ_ joined #perl6
08:02 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:18 mathw Morning
08:19 mssm joined #perl6
08:52 M_o_C joined #perl6
09:10 dakkar joined #perl6
09:15 masak joined #perl6
09:15 masak oh hai, #perl6.
09:16 hejki oh hai, masakbot.
09:18 iblechbot joined #perl6
09:19 masak alpha: my $a = 42; my $b := $a; $a = my $a; say $a
09:19 p6eval alpha 30e0ed: OUTPUT«Redeclaration of variable $a␤42␤»
09:20 masak TimToady: in a situation such as this, I expect $b to be 42 at the end. but should $a really be 42?
09:21 masak 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:22 masak snarkyboojum: ping
09:23 Trashlord joined #perl6
09:27 mathw masak!
09:28 masak mathw: hi there, old chap.
09:29 Trashlord hey dudes
09:31 masak Trashlord!
09:31 Trashlord masak!
09:34 mathw Trashlord!
09:34 Trashlord mathw!
09:44 jnthn lol morning
09:44 masak jnthn: lol! whoz op with the cold?
09:45 jnthn masak: Min nose is block op!
09:46 masak :/
09:46 jnthn Though not quite as bad as during the weekend.
09:46 jnthn How's yours?
09:46 masak I can breathe today. I consider that an improvement.
09:47 agentzh joined #perl6
09:47 mathw definitely
09:49 M_o_C joined #perl6
09:54 jnthn Rakudo monthly release week!
09:55 * masak hopes to be able to land named enums before Thursday
09:55 jnthn \o/
09:55 * jnthn hopes to get some more of S12-* passing
10:01 jferrero joined #perl6
10:10 masak I usually get to do all necessary destruction myself. this time I'd like to ask for people's help. :)
10:10 masak http://github.com/masak/tardis/blob/2be13fa6e6​a23b2a9a97703521f4cdb1a6fbc3aa/yapsi-prototype
10:10 masak the above is an extremely simple compiler that I wrote last week.
10:11 masak I'd like for people to try it and get it to misbehave.
10:11 masak it's a very open problem -- just get it to do something that seems wrong.
10:11 masak thanks. :)
10:13 jnthn lol...tempting!
10:13 jnthn masak: Where's the bug tracker? :D :D
10:13 masak submitting to the tardis project on github would be fine.
10:13 masak alerting me here on #perl6 or in privmsg works too :)
10:14 masak I'll probably write up this experiment as a blog post today.
10:18 rv2733 joined #perl6
10:20 M_o_C joined #perl6
10:42 snarkyboojum masak: Hej!
10:43 masak snarkyboojum: \o
10:43 snarkyboojum masak: o/ :)
10:43 masak snarkyboojum: if you have time, please check out and try the yapsi-prototype I mention above.
10:43 * snarkyboojum reads backscroll
10:45 snarkyboojum I like the "kinds of programs recognised" comment ;)
10:45 snarkyboojum will check it out
10:46 M_o_C joined #perl6
10:47 masak \o/
10:51 payload joined #perl6
10:52 payload joined #perl6
10:52 M_o_C joined #perl6
10:55 colomon morning!
10:56 M_o_C joined #perl6
10:56 masak colomon!
10:56 colomon masak!
10:56 masak welcome to our humble Monday.
10:57 colomon Nice day you've got here.
10:57 colomon Maybe I'll be awake enough to properly appreciate it in a few minutes.
10:57 masak :)
11:04 * szbalint enjoys his public holiday
11:05 * snarkyboojum enjoyed his 14 hour working day :P
11:08 * colomon figures he needs to work about 16 hours today...
11:08 snarkyboojum :|
11:08 colomon It's making hay while the sun shines.
11:09 colomon Or, you know, getting work done while my wife and son are on vacation.
11:09 colomon 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.
11:11 * snarkyboojum considers the dangers of cloning Perl 6 programmers :P
11:19 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 jnthn That or we'd just argue all the time about the Right Way To Do Stuff. :-)
11:20 UjinT34 joined #perl6
11:20 colomon I was thinking that if there were four of me, we'd probably just play bassoon quartets...
11:21 masak I don't worry about not getting more done. I *do* worry about chain of command. :/
11:22 masak we'd probably have to settle for a less efficient but more democratic way of distributing work.
11:22 masak also, there'd be more mouths to feed, so we'd need to do more $work as well.
11:25 snarkyboojum masak: yapsi looks beautifully ambitious :)
11:25 arnsholt colomon: But a bassoon quartet would be mega win =D
11:26 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 :)
11:26 masak snarkyboojum: I'm gald to hear that. :)
11:27 masak snarkyboojum: it ought to be quite easy to build a runtime to execute those instructions as well, I think.
11:27 masak it can all be done in under a day, now that we have the prototype.
11:28 snarkyboojum heh
11:28 masak jnthn: if I do 'my $a = 42; $a = my $a', what value will $a end up having?
11:28 snarkyboojum you mean the instructions that yapsi can currently generate?
11:28 masak snarkyboojum: yes.
11:28 snarkyboojum masak: ah - ok - I thought you were saying something else :)
11:29 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
11:29 arnsholt (IMO)
11:30 masak arnsholt: Rakudo alpha disagrees.
11:30 masak alpha: my $a = 42; $a = my $a; say $a
11:30 p6eval alpha 30e0ed: OUTPUT«Redeclaration of variable $a␤42␤»
11:30 arnsholt Just like `open my $fh, '<', $filename' in P5
11:30 masak arnsholt: I fail to see the connection.
11:30 jnthn masak: I'm not convinced you'd make it to runtime.
11:31 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)␤»
11:31 masak jnthn: why not? STD.pm likes it.
11:31 jnthn std: my $a = 42; $a = my $a; say $a
11:31 p6eval std 30081: OUTPUT«Potential difficulties:␤  Useless redeclaration of variable $a (see line 1) at /tmp/t0zuUgSqYa line 1:␤------> [32mmy $a = 42; $a = my $a[33m⏏[31m; say $a[0m␤ok 00:01 108m␤»
11:31 masak it's just "potential difficulties" :)
11:31 masak nothing to worry about...
11:31 jnthn masak: Hmm. We consider that an error in Rakudo.
11:31 szbalint masak: so cloning has SMP problems in it? who would have thought :)
11:31 masak no, you don't.
11:31 masak szbalint: :)
11:32 jnthn masak: Huh? It's fatal, isn't it?
11:32 jnthn (in Rakudo atm)
11:32 masak rakudo: my $a = 42; $a = my $a; say $a
11:32 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)␤»
11:32 masak seems it is.
11:32 jnthn Right. :-)
11:32 masak why would redeclarations be fatal?
11:32 snarkyboojum :)
11:33 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.
11:33 jnthn Anyway, if you did that I expect Rakudo will just disregard the second declaration.
11:33 jnthn Rather than do any re-initialization.
11:33 masak disregard?
11:33 masak that's even stranger.
11:33 jnthn So it'd be the same as saying $a = $a
11:33 masak so I won't get a new container?
11:34 jnthn No.
11:34 masak that's news to me.
11:34 masak does the spec say that somewhere?
11:34 jnthn You're re-declaring the same thing.
11:34 jnthn Not declaring a new thing.
11:34 masak I do get a new container if I'm in an inner block, don't I?
11:34 jnthn Yes, but then you're declaring a new thing.
11:35 masak right.
11:35 jnthn But in the same block, well, there's only one $a slot in the lexpad. :-)
11:35 * masak goes hunting for spec clarification about re-declaration of a variable in the same block
11:35 jnthn fwiw, I think it should be an error without the multi/proto.
11:36 jnthn Re-declaring a routine or a class is an error.
11:36 jnthn Seems odd that variables should be different.
11:37 masak well, this sure simplifies things.
11:37 masak I think I can do away with the 'init' opcode I had to invent for SIC.
11:37 masak (it explicitly gives a variable a new container)
11:38 masak S04:136: "If you declare a lexical twice in the same scope, it is the same lexical"
11:38 jnthn \o/
11:38 masak and then the exact example we've been talking about.
11:38 masak and then a note about 'my proto $x' :)
11:39 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?
11:39 jnthn And use a clone of that for all your frames.
11:39 jnthn It's nothing user-space visible, just an implementation detail really
11:39 jnthn But essentially, traits should only really be applied once, ever.
11:40 jnthn Including to variables.
11:40 masak nod.
11:46 snarkyboojum running that example on alpha with --target=pir or past makes it not spit out the pir or past
11:47 masak sorry to hear that.
11:47 masak there are a couple known problems with combining --target and -e, I think.
11:47 masak try putting it in a file.
11:48 * jnthn has been combinding them on master without any ill effects, fwiw.
11:48 snarkyboojum this was in the repl
11:48 snarkyboojum same thing in a file - oh well :)
11:51 masak ok, I just pused a new version of yapsi-prototype without the 'init' opcode.
11:51 masak I might add a 'redeclaration' warning later, too.
11:56 meppl joined #perl6
12:09 stepnem joined #perl6
12:09 dalek rakudo: 3bc40d3 | (Solomon Foster)++ | src/ (3 files):
12:09 dalek rakudo: 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.
12:09 dalek rakudo: This reverts commit df80392510ea0791326b9243672a354e5c165842.
12:09 dalek rakudo: Conflicts:
12:09 dalek rakudo: src/core/operators.pm
12:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​bc40d36e1f8b98502e1e9e40060ab9cdd47d154
12:09 dalek rakudo: ef3cd20 | (Solomon Foster)++ |  (3 files):
12:09 dalek rakudo: Move !op implementation functions from assign.pir to new metaops.pir.
12:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​f3cd2011bc26f4882e93c05ccb1079662eb36a8
12:19 arthur-_ joined #perl6
12:29 masak colomon++
12:32 colomon Just getting warmed up... ;)
12:33 * masak likes the sound of that
12:33 colomon unfortunately, I'll need to spend most of the day doing $work, I think.
12:36 masak well, we all have to put food on our family somehow.
12:36 colomon indeed.
12:37 colomon std: say 4 R< 5
12:37 p6eval std 30081: OUTPUT«ok 00:01 107m␤»
12:41 pugssvn r30082 | colomon++ | [t/spec] Some basic tests for Rop.
12:52 ignacio_ joined #perl6
13:03 masak this might interest some people on here smitten by the metamodel bug: http://news.ycombinator.com/item?id=1192791
13:04 masak (I'm linking to the HN page as a kind of future-proofing. at the time of writing it contains no discussion.)
13:05 colomon "Cos relies on the programmable capabilities of the C programming language"
13:06 colomon I find that somewhat mystifying.
13:06 dalek rakudo: 01c8cc2 | (Solomon Foster)++ | src/ (3 files):
13:06 dalek rakudo: Quick implementation of reverse metaop.
13:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​1c8cc224230551f1aed830fa1ddd64df7cac6a2
13:06 dalek rakudo: f6de386 | (Solomon Foster)++ | t/spectest.data:
13:06 dalek rakudo: Add S03-operators/r-metaop.t to tests.
13:06 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​6de38654a74eb55f5ef4d29c19a222c16573fe0
13:12 mathw colomon: does that mean it's implemented in C?
13:12 synth joined #perl6
13:13 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:14 colomon may just be that working with Perl 6 has spoiled me.  :)
13:15 synth joined #perl6
13:15 colomon std: say 4 !R% 64
13:15 p6eval std 30082: OUTPUT«ok 00:01 107m␤»
13:15 Tywyn joined #perl6
13:17 synth joined #perl6
13:24 envi^home joined #perl6
13:46 masak I now pushed a patch to the yapsi-prototype so that it warns about variable redeclarations in the same scope.
13:46 masak working on this fills me with a warm kind of joy.
13:47 colomon masak++
13:47 synth joined #perl6
13:47 masak it's basically a really, really pared-down Perl 6 compiler.
13:47 alester joined #perl6
13:50 jnthn .oO( Rakudo used to be one of those :-) )
13:51 jnthn masak: I do remember the "so many primitive things to do" feeling too.
13:51 jnthn masak: It's kinda fun. It's why I look forward to doing another backend for Rakudo.
13:51 masak :)
13:51 colomon alpha: say say 4 !R% 64
13:51 p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "!R% 64"␤in Main (file <unknown>, line <unknown>)␤»
13:52 colomon alpha: say 64 !% 4
13:52 p6eval alpha 30e0ed: OUTPUT«1␤»
13:52 jnthn colomon: I'm pretty sure alpha didn't do metametaoperators. :-)
13:52 colomon alpha: say 4 R!% 64
13:52 p6eval alpha 30e0ed: OUTPUT«1␤»
13:52 colomon alpha: say 4 !R% 64
13:52 p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near "!R% 64"␤in Main (file <unknown>, line <unknown>)␤»
13:52 colomon or just did them poorly.  :)
13:52 jnthn Dare you to do them better in master!
13:53 jnthn :_0
13:53 masak (that's not metameta)
13:53 jnthn No, it's more like 2*meta
13:53 masak aye.
13:53 jnthn Well
13:53 jnthn Maybe
13:53 jnthn Depends
13:53 jnthn [R-] # metameta?
13:54 jnthn In a sense, if they're "just" higher order function calls...
13:55 masak no, [R-] is not metameta either.
13:55 masak in my book, a metametaoperator would have to be an operator which acts on a metaoperator.
13:55 masak we don't have those, AFAIK.
13:56 masak [] 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
13:56 masak no.
13:56 jnthn So it *is* a meta-opertoar acting on a meta-operator.
13:56 masak I disagree. but I'm not sure it matters much.
13:56 jnthn R is a meta-operator on -
13:57 masak ...which produces an operator.
13:57 jnthn ?
13:57 jnthn :-/
13:58 masak I'm not sure I can state it clearer than I did above.
13:58 masak maybe I could try to give an example of what I'd consider to be a metametaoperator.
13:58 jnthn prefix_circumfix_meta_operator<[ ]>(&infix_prefix_meta_operat​or<%>.assuming(&infix:<->), @list) # what I kinda expect [R-] may compile down to
13:59 masak no argument there.
13:59 jnthn er, s/%/R/
13:59 masak right.
14:01 masak infix_circumfix_postfix:<*> would be a metaoperator.
14:01 masak it would look like this: [+]*
14:01 masak maybe it tells the [] to do things backwards.
14:01 masak s/metaoperator/metametaoperator/
14:05 * colomon is suddenly struck with the idea of R[$index], which allows reversing indexing on an array... probably wouldn't parse sensibly, though.
14:06 masak would have to be @foo\R[$index]
14:07 jnthn Don't know that STD has a hooker for postcircumfix_prefix_meta_operator...yet. :-)
14:08 colomon rakudo: say 4 R- 5
14:08 p6eval rakudo f6de38: OUTPUT«1␤»
14:08 * masak hopes 'hooker' isn't the technical term
14:08 hanekomu fits with the 'STD' theme
14:09 jnthn masak: No, just couldn't think of the right word.
14:09 jnthn I guess to fit the pattern there'd have to be a postcircumfixish
14:09 jnthn But "there isn't an ish for..." sounded weirder. :-)
14:10 * masak likes that
14:10 jnthn hehe
14:10 masak "Suffering from general ishlessness..."
14:10 jnthn "STD needs to be ishier!"
14:10 masak "not ishy enough..."
14:10 jnthn "There's something ishy about Perl 6 parsing."
14:11 jnthn Yeah, OK, so now it sounds normal rather than weird.
14:11 jnthn :-)
14:11 colomon > say 4 R!% 64
14:11 colomon 1
14:11 colomon > say 4 !R% 64
14:11 colomon 1
14:11 masak \o/
14:11 jnthn \o/
14:11 jnthn colomon++
14:12 colomon need to spectest and make sure I didn't break something with that change.
14:12 colomon but it was delightfully straightforward.
14:12 ruoso joined #perl6
14:13 masak Anytime compiler implementation is described as 'delightfully straightforward', you know you're on the right track. :)
14:13 nihiliad joined #perl6
14:14 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:17 payload joined #perl6
14:17 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 colomon .const 'Sub' metasub = '!reverse_metaop'
14:17 colomon $P0 = newclosure metasub
14:17 colomon set_global metaname, $P0
14:18 colomon but in pure perl 6...)
14:18 colomon afk for now...
14:19 jnthn colomon: I'm about. Plenty to do, but I can stop @other to look at that with you in a bit.
14:20 jnthn 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:34 payload joined #perl6
14:43 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?
14:43 jnthn w/b, anyways
14:43 jnthn :-)
14:43 masak welcome back, Tene.
14:44 payload1 joined #perl6
14:44 Tene jnthn: for the purposes of Perl 6 development, yes.
14:44 Tene Just very busy.
14:45 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.
14:46 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 am0c joined #perl6
14:50 jnthn Tene++
14:55 justatheory joined #perl6
15:03 PacoLinux joined #perl6
15:06 Psyche^ joined #perl6
15:07 masak I am now thinking about how much of signature binding semantics one can/should implement in SIC code...
15:07 masak seems there will always be some amount of slight magic in the interface between different blocks.
15:09 jnthn At least you can just look at and steal an existing binding algorithm. :-)
15:09 rgrau joined #perl6
15:09 masak yeah. :)
15:09 jnthn And a multi-dispatch one, for that matter. :-)
15:10 masak I thought I'd start with single dispatch.
15:10 masak and even before that, try to get if-block semantics right :)
15:12 jnthn oh, for sure.
15:13 jnthn You probably don't want the full binding algorithm to start off with etiher.
15:13 jnthn *either
15:13 jnthn Though if you follow the pattern you know you can fill it out with the rest later on.
15:13 jnthn Just make sure it's re-enterant.
15:13 dalek rakudo: eff4bd3 | (Solomon Foster)++ | src/Perl6/ (2 files):
15:13 dalek rakudo: Switch the grammar to look for an infixish rather than an infix after infix_prefix_meta_operator so that you can stack metaops.
15:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​ff4bd3221d48720b6830bb8a68e44f7171902f6
15:14 masak I know PIR makes one subroutine per block. I'm pondering whether to do the same in SIC.
15:14 masak ...per Perl 6 block, that is.
15:14 colomon > say 4 RRRRRRR- 5
15:14 colomon 1
15:14 colomon > say 4 RRRRRRRR- 5
15:14 colomon -1
15:14 jnthn Well, PIR sub === lexical scope.
15:14 masak :)
15:14 colomon :)
15:14 masak jnthn: right.
15:14 jnthn colomon: wow! :-)
15:15 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.  :)
15:15 masak sur it is.
15:15 colomon std: say 4 RRRRRRRR- 5
15:15 jnthn .oO( pirate Perl 6 also an infix_prefix_meta_operator A )
15:15 masak s/sur/sure/
15:15 p6eval std 30082: OUTPUT«ok 00:01 108m␤»
15:15 masak colomon++
15:22 masak I remember being thoroughly confused by p6l emails when I was less involved in Perl 6.
15:23 masak I wonder how many semi-interested people are in the same state right now.
15:24 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.
15:25 jnthn I'm struggling to follow that thread.
15:25 masak arnsholt: aye -- not saying people in here aren't frightening :)
15:25 jnthn arnsholt: BOO!
15:25 jnthn .oO( there, I've done my frightening for the day )
15:26 jnthn masak: It seems there's a desire to break the current bunch of roles up into loads more.
15:26 jnthn masak: To describe a whole range of mathematical properties.
15:26 masak something like that.
15:27 jnthn I'm not sure your everyday developer will really care though. :-)
15:27 masak I've yet to see... why.
15:27 colomon which should be strictly ignored, IMO.  :)
15:27 jnthn Which means "nice, put it in a module"
15:27 colomon masak: My theory is it is an attempt to make sure Perl 6 never happens.  ;)
15:27 jnthn lol!
15:28 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.
15:28 colomon masak: As far as I know, when Complex matches the current spec that will already be possible.
15:29 spinclad i'm actually happy that Perl 6 isn't trying to build n-category theory into its core
15:29 masak me too.
15:29 colomon or at least,  you'll be able to create Complex numbers which have Int real and imaginary parts....
15:30 masak subset Gaussian of Complex where { .re & .im ~~ Int }
15:30 masak maybe I should email that to the thread.
15:31 colomon I think their Gaussian discussion is based on the false belief that Int !~~ Real.
15:31 masak oh.
15:32 masak now that's frightening, a mathematician with a false belief...
15:32 colomon Which may come about because of an omission in S02.
15:32 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:33 masak Tene: neat!
15:33 masak Tene: 24 extra minutes every day, mmm... :)
15:33 Tene Personally, what I think Perl 6 *really* needs is currency types in core.
15:34 spinclad for your concurrent financial positions
15:34 jnthn Using currency symbols to denote such types.
15:34 masak Tene: postfix:<USD>($num) { ... }
15:34 colomon Tene: do you mean some sort of fixed precision number for dealing with money?
15:35 masak sorry, seems to be 37 minutes extra each day.
15:35 spinclad is your currency fixed, or floating?
15:35 Tene colomon: no, I mean to joke.
15:35 colomon Tene: :)
15:35 jnthn Tene: Dares you to joke about it on p6l! ;-)
15:36 * 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.
15:36 masak jnthn: whoa! set_signature_elem takes ten arguments! o.O sure you didn't miss one there?
15:37 jnthn masak: I did when it only had nine.
15:37 masak Tene: do it! do it!
15:37 masak jnthn: :D
15:37 jnthn masak: For your own sanity, use named arguments.
15:37 jnthn I guess epic performance isn't on your hit list.
15:37 Tene jnthn: we have introspectable signatures yet so you can add an extra arg at runtime if you discover you need it?
15:38 jnthn Tene: Erm, well...we have introspectable signatures...but not diddlable ones. :-)
15:38 masak jnthn: you mean it's on Parrot's? :P
15:38 jnthn masak: Erm, it's part of my attempt to run Perl 6 as fast I can on top of Parrot... :-/
15:38 masak ah.
15:38 jnthn ...which still means "not very". :-(
15:39 jnthn 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.
15:47 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 :-)
15:48 jnthn Part of why I wanted signature construction fast is because at one point we did them all at startup
15:48 jnthn So it had a big influence on our startup time.
15:48 renormalist joined #perl6
15:48 jnthn Now, however, that's changed.
15:48 masak right. now we cache them?
15:48 jnthn Now we build them lazily.
15:48 masak niiice.
15:49 jnthn sub foo($x, $y) { ... }; say 42; # never builds the signature object for foo
15:49 masak \o/
15:49 jnthn Yeah, pmichaud++ for suggestiong I explore that route.
15:50 TimToady however, as soon as your optimizer gets involved with sigs, lazy is the wrong direction to go
15:51 TimToady it's one of them "workarounds"
15:52 TimToady 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. :-)
15:52 masak am I right in assuming that an opaque &eval call is an optimizer's worst enemy?
15:52 TimToady jnthn: and I'm saying that's the fundamental problem
15:52 jnthn TimToady: :-/
15:52 charsbar joined #perl6
15:53 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
15:53 jnthn I fully agree that not being able to unfreeze a large set of objects quickly is a big problem for startup time though.
15:53 masak the communication between compile time and runtime seems to be a recurring issue.
15:54 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
15:55 masak TimToady: yeah. I've subsequently realized that, thanks to jnthn++
15:55 TimToady okay, just started bling
15:55 masak it's even in S04 :)
15:55 TimToady std: my $a = 42; my $b := $a; $a = my $a; say $a
15:55 p6eval std 30082: OUTPUT«Potential difficulties:␤  Useless redeclaration of variable $a (see line 1) at /tmp/v9rIAkpxMV line 1:␤------> [32mmy $a = 42; my $b := $a; $a = my $a[33m⏏[31m; say $a[0m␤ok 00:01 108m␤»
15:55 masak 'Useless redeclaration'. Nice. I'll steal that for Yapsi.
15:57 TimToady std: my @array; @array.grep { $_ % 2 }
15:57 p6eval std 30082: OUTPUT«[31m===[0mSORRY![31m===[0m␤Unexpected block in infix position (method call needs colon or parens to take arguments) at /tmp/l5BAmcA45o line 1:␤------> [32mmy @array; @array.grep [33m⏏[31m{ $_ % 2 }[0m␤    expecting any of:␤        bracketed infix␤  infix or
15:57 p6eval ..meta-infix␤FAILED 00:01 …
15:59 TimToady STD now memoizes the end of a bare method call in case it causes an error
16:00 TimToady std: my @array; @array.grep Int
16:00 p6eval std 30082: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row (method call requires colon or parens to take arguments) at /tmp/J1o0MccV1w line 1:␤------> [32mmy @array; @array.grep [33m⏏[31mInt[0m␤    expecting any of:␤    bracketed infix␤  infix or meta-infix␤      statement modifier
16:00 p6eval ..loop␤FAILED 0…
16:01 colomon rakudo: my @a = 1, 4, 4.1, 4.2e0, 5; say @a.grep: Int
16:01 p6eval rakudo eff4bd: OUTPUT«145␤»
16:02 TimToady rakudo++
16:03 TimToady well, really, smartmatch++  :)
16:03 colomon exactly.  :)
16:03 masak Perl++
16:03 payload joined #perl6
16:03 TimToady lol
16:04 Tene (++)++
16:04 M_o_C joined #perl6
16:04 masak (Tene: (++)++)++
16:05 TimToady std: (Tene: (++)++)++
16:05 p6eval std 30082: OUTPUT«[31m===[0mSORRY![31m===[0m␤Prefix requires an argument at /tmp/3fNXmacWT6 line 1:␤------> [32m(Tene: (++[33m⏏[31m)++)++[0m␤    expecting any of:␤      prefix or meta-prefix␤    prefix_postfix_meta_operator␤     term␤FAILED 00:01 106m␤»
16:05 [particle] ...further discussion in #meta...
16:05 masak ...which completes the circle.
16:05 masak if we're not careful, we'll just go on like this all day. :)
16:06 TimToady we don't require an argument
16:08 * TimToady wants to work on viv but probably ought to work on IO
16:11 uniejo joined #perl6
16:12 * TimToady should finish backlogging before he makes the wrong decision :)
16:12 pyrimidine joined #perl6
16:17 cdarroch joined #perl6
16:17 cdarroch joined #perl6
16:19 colomon Hmmm...  where is infix:<X> defined in STD.pm?
16:22 colomon std: say 3, 4 X 4, 5
16:22 p6eval std 30082: OUTPUT«ok 00:01 106m␤»
16:23 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
16:23 colomon yes.
16:23 colomon that's my impression.
16:23 TimToady std: 1 R 2
16:24 p6eval std 30082: OUTPUT«[31m===[0mSORRY![31m===[0m␤Confused at /tmp/l4gkFD19ze line 1:␤------> [32m1 R[33m⏏[31m 2[0m␤    expecting any of:␤    bracketed infix␤  infix or meta-infix␤FAILED 00:01 106m␤»
16:24 colomon It's a special case in X
16:24 TimToady ? on the infixish
16:24 TimToady considering it is basically the metaop's semantics, probably makes sense
16:24 meppl joined #perl6
16:25 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.
16:27 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... :)
16:27 masak but don't listen to me. :) leave it as it is.
16:27 colomon you guys are not allowed to think up new metaoperators faster than we can implement the old ones.
16:28 masak I agree. leave it for Perl 6.1.0. :)
16:28 masak or a module.
16:28 * colomon wishes pmichaud were around to help get the grammar right for these things...
16:31 TimToady I think Z probably oughta be a metaop just like X
16:31 colomon is /o\ hands covering ears?
16:31 TimToady and default to Z, just as X defaults to X,
16:31 TimToady Z[,] and X[,] to be clearer
16:31 masak *sigh*
16:31 masak yes, I agree. it must be so.
16:32 masak colomon: sorry. :/
16:32 TimToady it's all just functions that take functions as arguments
16:32 masak the case for consistence between X and Z is stronger than the case for simplicity for just one of them.
16:33 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
16:33 colomon ((4, 3), (4, 4), (5, 3), (5, 4))
16:33 TimToady nice parcels there
16:33 colomon I think there may be some flattening issues here.
16:33 masak sqrt([+] @coords Z* @coords)
16:34 colomon errr...
16:34 colomon sqrt([+] @coords >>*<< @coords)
16:34 M_o_C joined #perl6
16:34 masak hm.
16:34 colomon wait, can Z* be lazy?
16:35 TimToady sqrt [+] @coords»**»2
16:35 TimToady of course it can
16:35 masak :)
16:35 colomon If Z* can be lazy, that's a super-compelling use case IMO.
16:35 TimToady so can map
16:35 TimToady but not hyper
16:36 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
16:36 masak ok, so same goal point, different road.
16:37 TimToady along with about a hundred posts saying "What the @$#($ is Z+?"
16:37 masak oh, we've been seeing those since 2004 :)
16:38 masak maybe not for Z+, but for other things.
16:38 masak the "Perl 6 is too complicated" meme is so old it should be deprecated.
16:44 masak also, we're clearly missing a Y metaoperator.
16:44 masak we have X and Z, but not Y.
16:45 Trashlord I think Perl 6 is clean, and straight forward
16:46 Trashlord 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:50 masak hm, even 'if 42 -> $a { say $a }' involves signature binding...
16:52 moritz_ good morning
16:53 masak lolitsmoritz
16:53 TimToady colomon: otoh, the user must be able to name &infix:<X>
17:01 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
17:01 pugssvn r30084 | moritz++ | [t/spec] tests for readonly binding ith ::=
17:01 colomon post-shower, I still think Zop is brill.
17:01 pugssvn r30085 | moritz++ | [t/spec] bring Whatever tests up to date with current spec, and add some more
17:01 pugssvn r30086 | moritz++ | [t/spec] fix some smartlinks, and a broken test in autothreading.t
17:02 pugssvn r30087 | moritz++ | [t/spec] fix more smartlinks
17:02 pugssvn r30088 | moritz++ | [t/spec] fix S12-enums/basic.t (track spec changes)
17:02 colomon It will make a lot of math stuff that was ugly before work elegantly.
17:02 dalek rakudo: b12fd89 | moritz++ | src/cheats/parrot/Protoobject.pir:
17:02 dalek rakudo: don't warn on boolification of type objects.
17:02 dalek rakudo: Just evaluate them always to false.
17:02 dalek rakudo: Also include a wee bit more information in the warnings when using a type
17:02 dalek rakudo: object as a value (in the vtable methods in cheats/parrot/Protoobject.pir)
17:02 pugssvn r30089 | moritz++ | [t/spec] delete some outdated tests in S12-enums/thorough.t and fix smartlinks
17:02 pugssvn r30090 | moritz++ | [t/spec] fix rest of smartlinks in enum tests
17:02 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​12fd896ea72ead4e360a9283f58c0115b19d5e0
17:02 pugssvn r30091 | moritz++ | [t/spec] more smartlink fixes
17:14 masak swimming &
17:17 synth joined #perl6
17:19 [particle] joined #perl6
17:20 abra joined #perl6
17:24 Tene spinclad: you were remembering polyglotbot that supported perl6-parse: and friends.  polyglotbot is sadly dead.
17:31 dalek rakudo: 79085cd | (Solomon Foster)++ | src/Perl6/Grammar.pm:
17:31 dalek rakudo: Add Zop to the grammar.  (Actual implementation not yet there.)
17:31 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​9085cd694047ef5f67929899e695ba547964dbc
17:31 dalek rakudo: bc08aa4 | (Solomon Foster)++ | src/ (2 files):
17:31 dalek rakudo: Implement infix:<X>.
17:31 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​c08aa40449bcace0eea33602e78629441ef3c6c
17:31 dalek rakudo: e3b5d7b | (Solomon Foster)++ | src/Perl6/Grammar.pm:
17:31 dalek rakudo: Add Sop and Xop to the grammar, without actually implementing them.
17:31 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​3b5d7b61ffbcb89110c559152cd9af737e169cc
17:31 Jedai joined #perl6
17:33 Clearwolf joined #perl6
17:40 pugssvn r30092 | lwall++ | [S03] add Z to go with X metaop
17:40 pugssvn r30092 | note that X and Z desugar to higher-order methods, crosswith and zipwith
17:40 pugssvn r30092 | speculate about how to zip/cross dwimmily with non-identical ops
17:40 pugssvn r30092 | possibly creating a real use case for surreal precedence  :)
17:42 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...
17:43 TimToady yes, that's what I'm talking about with subprecedence
17:43 TimToady I'm assuming crosswith and zipwith will compose properly
17:43 colomon sorry, haven't read the changes, just the summary there.  :)
17:44 TimToady subprecedence means that Z~ is looser than Z+, but both are at the list infix level of precedence
17:44 TimToady precedence levels compose for metaops, in other words
17:44 TimToady at least for these two metaops
17:45 TimToady that's the speculation
17:45 TimToady it feels clean, and may actually be dwimmy
17:46 TimToady in that hard-to-explain but makes intuitive sense sense
17:46 TimToady in that hard-to-explain but makes-intuitive-sense sense
17:46 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 #perl6
17:47 TimToady if Z is composable, then @a Z+ (@b Z* @c) works
17:48 TimToady and that means we don't have to deal with hetero-operator reduces
17:48 TimToady if we solve it with subprecedence
17:49 TimToady it maps to the as-if-you'd-written-it-this-way meme nicely
17:52 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
17:52 TimToady hypers are eager
17:52 colomon Tene: Zip is lazy
17:52 Tene ah
17:53 colomon TimToady and I discussed that maybe S>>+<< would be lazy, but Z+ is much nicer, IMO.
17:54 TimToady I guess a bare X or Z would actually compose with comma subprecedence, maybe
17:54 TimToady since Z is really short for Z[,]
17:55 TimToady 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 colomon how do you get standard input again?
17:56 TimToady $*IN
17:57 colomon danke.
17:57 * TimToady didn't get to either viv or IO...didn't even finish backlogging yet...
17:57 colomon but you added a new metaop, and that's a good day's work.  :)
17:57 jnthn TimToady: When you get to IO, can it please be purple?
17:57 jnthn :-)
17:58 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 #perl6
17:59 TimToady .oO(nothing is solved by violets)
18:01 takadonet joined #perl6
18:01 iblechbot joined #perl6
18:01 ash_ joined #perl6
18:01 TimToady I guess we need a name for operators derived from other operators via a metaoperator
18:01 TimToady higher order operator => HOO  :)
18:02 colomon HOO!
18:02 TimToady except that'd be the metaop
18:02 TimToady since it's the metaop that is higher-order
18:02 * ash_ Hoo makes me think of christmas... Hoo Hoo Hoo
18:02 TimToady derived op
18:02 TimToady deop
18:03 TimToady reordered operator :)
18:03 TimToady call 'em ernestines, maybe :)
18:06 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 ash_ oops, s/role/grammar/
18:07 TimToady um, that would be antisocial
18:07 TimToady just derive a new grammar
18:08 TimToady std: augment grammar STD {...}
18:08 p6eval std 30092: OUTPUT«[31m===[0mSORRY![31m===[0m␤Can't augment grammar STD without MONKEY_TYPING at /tmp/aGfkfyibEv line 1:␤------> [32maugment grammar STD[33m⏏[31m {...}[0m␤Other potential difficulties:␤  Can't augment grammar STD because it doesn't exist at /tmp/aGfkfyibEv line 1:␤------>
18:08 p6eval ..[32…
18:08 ash_ what do you mean antisocial? I am a bit confused
18:09 TimToady augment grammar would be changing the grammar out from under other people
18:10 TimToady 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
18:10 colomon rakudo
18:10 colomon rakudo
18:10 colomon stupid fingers
18:10 TimToady [*] is parsed like 'print'
18:11 colomon rakudo: given "hello" { when "hello" { say "done!" } }
18:11 p6eval rakudo b12fd8: OUTPUT«done!␤»
18:11 ash_ ah, i thought it was a special part of the grammar
18:11 TimToady well, the inside of it is special
18:12 ash_ prefix:<[*]> (@args) { ... } would work?
18:13 TimToady you're not supposed to define individual derived ops
18:13 Psyche^ joined #perl6
18:13 TimToady that doesn't scale
18:14 ash_ yeah, thats kind what I was thinking, is there a way to put a placeholder in the < > part?
18:15 M_o_C joined #perl6
18:16 TimToady in STD see     regex prefix_circumfix_meta_operator:reduce {
18:16 ash_ k, thanks
18:16 quietfanatic Are you allowed to override individual derived ops for performance?
18:19 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:20 TimToady suppose you've added my multi infix:<*>(Foo $x, Foo $y) {...}
18:20 TimToady your hardwired version likely won't see it
18:20 gfldex joined #perl6
18:21 TimToady would be better for a hotspot optimizer to optimize this
18:22 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
18:23 ash_ ah, sorry, i thought he meant something different, my bad
18:25 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:26 TimToady overriding metaops will generally be considered bad style, indicative of premature optmization, I expect
18:26 TimToady kinda like throwing a goto into the middle of a well-structured piece of code
18:27 TimToady you can make LTM subvert all kinds of things, but that doesn't mean you want to
18:28 TimToady you can put a token in that parses 'say 42 when Thursday' if you like
18:29 TimToady I fully expect people to get into all kinds of trouble with derived grammars
18:30 ash_ that gives a whole new meaning to programs that only work on a single day of the week
18:33 TimToady All expedients are not expedient.
18:33 SmokeMachine joined #perl6
18:34 quietfanatic That makes sense.
18:36 cj joined #perl6
18:37 payload joined #perl6
18:39 alester joined #perl6
18:41 payload joined #perl6
18:46 bkeeler_ joined #perl6
18:52 takadonet left #perl6
18:52 mberends joined #perl6
18:56 astrojp left #perl6
18:56 astrojp joined #perl6
19:06 TiMBuS joined #perl6
19:09 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:12 spinclad but yes, it's better /methinks to get a parsetree at home and paste all or excerpts at ones own discretion.
19:13 Chillance joined #perl6
19:13 spinclad i guess.
19:22 lichtkind joined #perl6
19:22 ShaneC joined #perl6
19:24 wasy joined #perl6
19:29 hercynium joined #perl6
19:53 masak joined #perl6
19:56 * masak is not .crosswith the latest spec change
19:58 gfldex joined #perl6
20:01 jnthn masak: <groan>
20:19 diakopter masak: oha
20:19 masak diakopter: hi. just leaving for dinner. :)
20:20 diakopter masak: a couple of maybe-bugs from 18 hours ago
20:20 diakopter thereabouts
20:20 masak diakopter: thanks. will check them out.
20:20 masak in time.
20:21 diakopter what about in space?
20:21 masak sure, after I've had dinner :)
20:38 lichtkind mberends: ping
20:44 Salada345 joined #perl6
20:57 ignacio_ joined #perl6
20:59 ignacio_ joined #perl6
20:59 payload joined #perl6
21:00 ash_ is STD.pm run against the spec? just wondering
21:00 Tene ash_: against the spec tests, you mean?
21:01 ash_ yeah, the spec tests
21:02 cosimo joined #perl6
21:03 Tene No, not that I know of.
21:04 ash_ i assume they'd parse fine, just wondering, kinda a who tests the tests kinda thought
21:05 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.
21:05 jnthn Either that or it was just done with grep. ;-)
21:09 quietfanatic TimToady runs STD.pm against the spec tests quite frequently.
21:10 ash_ cool, thats useful to know
21:12 Sarten-X joined #perl6
21:19 wknight8111 joined #perl6
21:22 IllvilJa joined #perl6
21:22 jhuni joined #perl6
21:23 mberends lichtkind: pong
21:23 lichtkind mberends: too late :)
21:23 mberends :)
21:25 mberends I do run 'make test' on STD.pm quite regularly, almost daily. TimToady++ probably does it far more often.
21:26 hercynium joined #perl6
21:29 ash_ ah, i didn't know there was a 'make test' for STD.pm
21:29 lichtkind mberends: im writing perl 6 article :)
21:30 lichtkind mberends: just want to say thanks for latest changes
21:30 mberends lichtkind: it was not too late for that :)
21:30 lichtkind hoho
21:31 mberends There is still more to document about STD.pm and viv, but it's not yet completely clear to me
21:32 mberends (which also means the talks in Arnhem and Copenhagen were slightly misinformed) :(
21:33 pyrimidine left #perl6
21:44 jnthn rakudo: class Foo { has $.a; has $.b; has $.c = $.a + $.b; }
21:45 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?
21:45 jnthn That we haz a fail.
21:45 mberends jnthn: don't torture yourself!
21:45 snarkyboojum good moaning Perl 6 hacker types
21:45 mathw good evening snarkyboojum
21:45 jnthn hi snarkyboojum
21:46 jnthn mberends: Heh. It's meant to work.
21:46 colomon jnthn: no, I meant has $.c = $.a + $.b;
21:46 jnthn colomon: Foo.new(a => 1, b => 2).c.say # should be 3
21:47 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.
21:47 jnthn at least, I think it does...
21:48 jnthn 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␤»
21:49 snarkyboojum that Z+ discussion looks funky :)
21:49 snarkyboojum Perl 6 just keeps looking cooler
21:50 jnthn oh...
21:50 colomon snarkyboojum: I'm totally geeked about it.
21:50 jnthn I think it's a mis-handling of $*IN_DECL
21:51 snarkyboojum colomon: :)
21:55 xomas joined #perl6
21:55 xomas joined #perl6
22:05 dalek rakudo: 8826895 | (David Romano)++ |  (10 files):
22:05 dalek rakudo: Merge remote branch 'upstream'
22:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​826895c7aba40dd01795a0e6af3ec48857ce5f0
22:29 colomon rakudo: say 6 % 2.3
22:29 p6eval rakudo 79085c: OUTPUT«1.4␤»
22:29 colomon oooo....
22:30 pugssvn r30093 | lwall++ | [whatever.t] fix parsefails
22:37 masak joined #perl6
22:38 pjcj joined #perl6
22:41 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.
22:42 m6locks omg that parrot-nqp process is quite a memory hog
22:43 m6locks i'm not surprised people run out of memory while building
22:44 snarkyboojum m6locks; perhaps that's why rakudo doesn't build on my 256MB linux slice..
22:44 m6locks ;P
22:44 snarkyboojum :)
22:44 snarkyboojum I was being serious heh
22:45 m6locks :)
22:45 masak why are you people trying to squeeze a Rakudo build through so ridiculously little RAM?
22:45 snarkyboojum I thought 4KB was all the world needed.. :P
22:45 m6locks :P
22:45 mberends as M$ would say, you need powerful hardware to match our powerful software :P
22:46 jnthn Well, they have lots of users...seems like a good approach to copy.
22:46 jnthn ;-)
22:46 lichtkind jnthn: na zdravi
22:47 jnthn lichtkind: huh? Som v svedsku teraz...uz som zabudol ako citat slovencinu. ;-)
22:47 unobe joined #perl6
22:47 jnthn (not really. I hope. :-))
22:47 quietfanatic joined #perl6
22:47 lichtkind jnthn: its hard to read for me
22:48 mberends jnthn: security through obscurity?
22:48 * masak had to look up 'uz' and 'zabudol'
22:48 lichtkind zabudol means forgotten?
22:48 masak aye.
22:48 jnthn lichtkind: Yes
22:48 masak 'citat' was cute :)
22:49 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.
22:49 jnthn Yes, Czech has plenty of similarities and plenty of differences.
22:49 jnthn masak: I was using it like "how to" in that case.
22:49 lichtkind masak: thats easy ako means like
22:49 snarkyboojum znam malo Hrvatski
22:50 masak lol! I haz blogged: http://use.perl.org/~masak/journal/40246
22:50 jnthn omfgmasakblogged!
22:50 lichtkind silence lolcats
22:50 masak jnthn, lichtkind: ok, that makes sense too.
22:50 masak it's 怎么 in Mandarin.
22:51 masak rakudo: my $a; ($a, $a) = 2; say $a
22:51 p6eval rakudo 882689:  ( no output )
22:51 lichtkind jnthn: are the any other plumage modules beside compiler and blizkost
22:51 masak alpha: my $a; ($a, $a) = 2; say $a
22:52 p6eval alpha 30e0ed: OUTPUT«␤␤»
22:52 masak diakopter: I agree that this is problematic in some sense.
22:52 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)
22:52 masak diakopter: but I'm not really surprised.
22:52 masak nor confused.
22:52 jnthn masak: I can vaguely guess what may be going on there.
22:52 masak jnthn: 'xactly.
22:52 masak $a is being assigned twice.
22:53 lichtkind masak: can you actuelly install something due proto?
22:53 masak alpha: my $a; ($a, $a) = 2; say $a.WHAT
22:53 p6eval alpha 30e0ed: OUTPUT«Failure()␤»
22:53 masak lichtkind: that's a really good question.
22:53 masak lichtkind: one used to be able to.
22:54 lichtkind masak: thanks im curretnly writing a p6 update article for foo
22:55 lichtkind masak: is onlike november fixed :) huauauaua
22:55 mssm joined #perl6
22:55 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:56 masak 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:57 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 :)
22:57 masak unobe: I think so.
22:57 TimToady those are metaops, and S03 cannot be exhaustive
22:57 meppl joined #perl6
22:57 masak unobe: that list is not meant to be complete.
22:58 TimToady since metaops are infinitely generative
22:58 masak lichtkind: good to know.
22:58 unobe ah, ok
22:58 TimToady all negated ops are chaining though
22:58 unobe I saw != and !eqv so I was confused
22:58 TimToady a special case and an example
22:59 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"
22:59 unobe ah, thanks masak and TimToady
22:59 p6eval rakudo 882689: OUTPUT«1␤»
22:59 jnthn :-)
22:59 unobe rakudo: say 23 !== 45
22:59 p6eval rakudo 882689: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 16934 (src/builtins/Junction.pir:399)␤»
22:59 masak rakudo: say <a> R!Req <b>
22:59 unobe rakudo: say 23 != 45
22:59 p6eval rakudo 882689: OUTPUT«1␤»
22:59 p6eval rakudo 882689: OUTPUT«1␤»
22:59 masak \o/
22:59 masak that's outright scary.
22:59 unobe rakudo: say 23 Rcmp 45
23:00 p6eval rakudo 882689: OUTPUT«1␤»
23:02 ash_ rakudo: say 23 Rleg 45
23:02 p6eval rakudo 882689: OUTPUT«1␤»
23:02 masak rakudo: say 23 RRRRRRleg 45
23:02 p6eval rakudo 882689: OUTPUT«-1␤»
23:02 masak :)
23:03 colomon rakudo: say 23 RRRRRRRleg 45
23:03 p6eval rakudo 882689: OUTPUT«1␤»
23:03 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?
23:03 masak so this is why we switched to ng. so we could use the RRRRRRleg operator.
23:04 colomon you know your life was not complete without it....
23:04 masak :)
23:05 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:06 masak I'll be back tomorrow, looking for my shoe.
23:06 jnthn o/
23:06 diakopter kiss the prince[ss] before you leave
23:06 masak :)
23:06 masak no wai.
23:07 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:09 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. :-)
23:10 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
23:10 ash_ amazon EC2 that is
23:11 ash_ my first computer was a dos something or another my dad had, all i remember doing on it was playing math blaster
23:11 pugssvn r30094 | lwall++ | [STD] add Z metaoperator
23:11 pugssvn r30094 | be slightly more human in the metaop "Can't" messages
23:12 TimToady the first computer I programmed allowed 128 *instructions*
23:13 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:14 snarkyboojum 2MB and 3.0 for me :)
23:15 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 :)
23:15 jnthn ah, finally...it works.
23:15 jnthn > class Foo { has $.a; has $.b; has $.c = $.a + $.b }
23:15 jnthn > say Foo.new(a => 49, b => -7).c
23:15 jnthn 42
23:16 colomon \o/
23:16 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:
23:16 jnthn > class Bar { method foo($x, $y) { say "$x,$y" }; method bar() { $.foo(1,2) } }
23:16 jnthn > Bar.new.bar
23:16 jnthn 1,2
23:16 jnthn That is, the $.foo form with args.
23:17 jnthn ash_: Yeah, it makes an anonymous method out of the RHS
23:17 jnthn ash_: And passes it along to the metaclass in hope that it'll do something useful with it at some point. :-)
23:18 ash_ if you added a method BUILD or something does it override that? or i guess, when do those anon methods get called?
23:19 jnthn At BUILD time.
23:19 jnthn Yes, BUILD currently overrides that. Or supplying a value for it in the constructor.
23:20 ash_ neat, are those in S12 somewhere?
23:21 jnthn Yes, somewhere.
23:22 TimToady hmm, I'm misremembering--it was only 120 instructions, on 3 handpunched cards of 40 each
23:23 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:24 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...
23:24 lichtkind japhb: thanks i saw only the compiler in the git
23:24 japhb ?
23:24 japhb Which link were you looking at?
23:25 lichtkind japhb: http://gitorious.org/parrot-plumage/​parrot-plumage/trees/master/metadata
23:25 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:26 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?
23:27 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
23:27 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.
23:28 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.
23:29 lichtkind ah
23:30 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:34 lichtkind japhb: great i never wrote any p6 except demo code for tuts
23:38 * lue afk
23:43 sorear japhb: Do you have any good example code for small, JustWorks, Parrot extensions w/ custom PMC code?
23:44 ruoso joined #perl6
23:44 japhb I dunno how small it is, but perhaps parrot-linear-algebra?
23:44 japhb whiteknight on #parrot would probably know better the answer to that question
23:45 sorear oh, I thought you were running plumage and knew *all* the extensions
23:46 * 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.
23:47 japhb With nearly three dozen already, I'd have trouble keeping track even if I wanted to.  :-)
23:48 lichtkind japhb: thats good
23:54 dalek rakudo: dea0a59 | jonathan++ | src/Perl6/ (2 files):
23:54 dalek rakudo: $.foo can now accept arguments, and various issues with the RHS of has $.x = ... are resolved.
23:54 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​ea0a59672af4a19fe758f6f7e869a268cf2f69c
23:54 dalek rakudo: 1c75cfe | jonathan++ | t/spectest.data:
23:54 dalek rakudo: Turn S12-methods/syntax.t back on.
23:54 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​c75cfecdc2b2c78521d5ac957becee7ccfcec19
23:55 jnthn That was a harder work patch that I expected. :-/
23:55 colomon still, patches!  \o/
23:58 jnthn Aye
23:58 jnthn Those two are nice to have resolved.
23:58 jnthn I discovered .can is a tad broken though.
23:59 jnthn That's the next blocker for S12-attributes/instance.t

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

Perl 6 | Reference Documentation | Rakudo