»ö« | 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_operatorFAILED 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_operatorFAILED 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_operatorFAILED 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 escapeFAILED 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_operatorFAILED 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_operatorFAILED 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 valuecurrent 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 arraycurrent 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: 6c: » | 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: 6c: 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: 6c: » | ||
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 $a42» | ||
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 $a42» | ||
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 $aok 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 $aok 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-infixFAILED 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 | ||
..loopFAILED 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 termFAILED 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-infixFAILED 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 valuecurrent 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 |