»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
TimToady | one can find many philosophers who will tell you it's okay to be selfish, but even Jesus said "Love your neighbor as yourself" meaning much the same thing: you can't love other people if you haven't learned how to love yourself. | 00:02 | |
ahmad_ | TimToady: well it is not easy to love yourself more than anyone.. for example i love my children more than myself. i do make my life harder to make sure their life will be easier.. so the human should be giving by nature.. | 00:04 | |
TimToady | sure, I think the saying is more about quality than quantity. :) | 00:05 | |
ahmad_ | agreed.. | 00:06 | |
00:07
wolfman2000 joined
00:23
zby_home__ left
|
|||
ahmad_ | i guess the best quotes i ever read were by Nietzsche.. like “Amor Fati – “Love Your Fate”, which is in fact your life.” | 00:27 | |
good night all | |||
00:29
ahmad_ left
00:30
proller_ left
00:32
thou joined
00:33
shinobicl___ left
00:34
bluescreen100 joined
00:35
ksi left
00:38
lutok left
|
|||
dalek | p/qbootstrap: fed8d1f | jnthn++ | tools/build/Makefile.in: A couple more dependency fixes. |
00:38 | |
p/qbootstrap: 4223af2 | jnthn++ | src/QHLL/Compiler.pm: Remove currently unused rxtrace arg. |
|||
p/qbootstrap: 3ec2f33 | jnthn++ | src/ (3 files): Some tweaks, one very much a hack, to get us through the build again. |
|||
p/qbootstrap: 9b81195 | jnthn++ | src/NQPQ/Grammar.pm: Temporary hack during migration to NQP::Grammar.TOP. With this, we actually get a little way into parsing. |
|||
p/qbootstrap: 0815cde | jnthn++ | src/QHLL/Grammar.pm: Fix MARKER/MARKED to work with QRegex. |
|||
p/qbootstrap: a0c3e8a | jnthn++ | src/QRegex/Cursor.nqp: Implement missing ww. |
|||
00:40
bluescreen100 left
00:42
bluescreen10 left,
az5112 left
|
|||
jnthn wonders if he can crack the QRegex migration during the weekend... | 00:42 | ||
Anyway, should rest a bit... & | |||
00:43
huf left
00:53
huf joined
00:58
am0c left
|
|||
kshannon | jnthn: I hope we can bring rxtrace back after you get the bootstrap working - I've found it be invaluable. | 01:06 | |
01:08
buubot_backup left
01:10
proller joined
|
|||
dalek | ecs: 02361b0 | larry++ | S32-setting-library/Numeric.pod: spec stringified forms of Complex and Rat |
01:11 | |
01:13
nebuchad` joined,
nebuchadnezzar left,
MayDaniel left
01:14
proller left
01:24
japhb_ joined
|
|||
japhb_ | TimToady, your latest spec commit seems to have a copy paste error; line 533 says "complex literals" when it appears you meant "rational literals" or "Rat literals". | 01:27 | |
01:29
buubot_backup joined
|
|||
sorear | What's the correct syntax to use for L<> in roast files, or should I just not worry about it? | 01:30 | |
colomon | nom: (1, 1, -> $a, $b { say $a.perl; say $b.perl; $a + 1, $b * 2 } ... *)[^4] | 01:37 | |
p6eval | nom 975b6b: OUTPUT«1122» | ||
dalek | ecza: 142a619 | sorear++ | lib/ (2 files): Implement new Rat/Complex stringification spec |
||
colomon | sorear++ | ||
errr... I take it parsing them doesn't work yet? | 01:39 | ||
nom: (1, 1, -> $a, $b { say $a.perl; say $b.perl; $a + 1, $b * 2 } ... *)[^10] | 01:40 | ||
p6eval | nom 975b6b: OUTPUT«112234485166327648128» | ||
sorear | mm? | ||
colomon | <1/2> isn't a Rat yet | 01:42 | |
sorear | no | ||
colomon | (the sequence is the other thing I'm working on) | ||
01:42
jaldhar joined
|
|||
colomon | nom: say (1, 1, { $^a + 1, $^b * 2 } ... *)[^10] | 01:43 | |
p6eval | nom 975b6b: OUTPUT«1 1 2 2 3 4 4 8 5 16 6 32 7 64 8 128 9 256» | ||
colomon | niecza: (1, 1, -> $a, $b { say $a.perl; say $b.perl; $a + 1, $b * 2 } ... *)[^10] | 01:44 | |
p6eval | niecza v13-144-gf7281f0: OUTPUT«111$(2, 2)$(2, 2)$(2, 4)$(2, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)$(3, 4)» | ||
colomon | there we go | ||
01:46
skids joined
|
|||
skids | nom: class A is IO { has $chomp = False; }; my A $a .= new; $a.perl.say; | 01:47 | |
p6eval | nom 975b6b: OUTPUT«A.new()» | ||
skids | hrm. | 01:48 | |
skids golfs | |||
sorear | niecza: say (4.5**60).perl | ||
p6eval | niecza v13-144-gf7281f0: OUTPUT«1797010299914431210413179829509605039731475627537851106401/1152921504606846976» | ||
sorear | rakudo: say (4.5**60).perl | 01:49 | |
p6eval | rakudo 975b6b: OUTPUT«1797010299914431210413179829509605039731475627537851106401/1152921504606846976» | ||
skids | nom: class A is IO { has $.chomp = False; }; my A $a .= new; $a.perl.say; | 01:51 | |
p6eval | nom 975b6b: OUTPUT«A.new(chomp => Bool::False)» | ||
skids | nom: class B { has $.a = 0; }; class A is B { has $.a = 1; }; my A $a .= new; $a.perl.say | 01:52 | |
p6eval | nom 975b6b: OUTPUT«A.new(a => 1, a => 1)» | ||
skids | OK, so is that supposed to be the right way to override a default value for an attribute, and if so, why the extra pair? | ||
01:53
japhb_ left
01:54
kaleem joined
|
|||
dalek | ecza: ae314ef | sorear++ | t/spectest.data: Run S32-num/stringify.t |
01:54 | |
ast: 1596c94 | sorear++ | S32-num/stringify.t: Add tests for perl6/specs@02361b0 |
|||
colomon | skids: no, you've just sayid that both A and B have a $.a | ||
*said | 01:56 | ||
skids | Hrm... well, out of curiosity, how would you distinguish $a.a (A's a) and $a.a (B's a)? And is there a way to override defaults other than writing a constructor? | ||
colomon | niecza: class B { has $.a = 0; }; class A is B { has $.a = 1; }; my A $a .= new; $a.perl.say | 01:57 | |
p6eval | niecza v13-144-gf7281f0: OUTPUT«A.new(...)» | ||
sorear | colomon: the answer you're looking for is no, Niecza doesn't implement two-keyed attribute names yet. | 01:58 | |
colomon | two-keyed? | 01:59 | |
doesn't handle this case, you mean? | |||
sorear | class+name | ||
nom: class B { has $.a = 0; }; class A is B { has $.a = 1; }; my A $a .= new; $a.perl.say | |||
p6eval | nom 975b6b: OUTPUT«A.new(a => 1, a => 1)» | ||
sorear | hah | ||
looks like it's a little broken in nom too :D | |||
colomon: btw, 76 new spectests for niecza :p | 02:00 | ||
(should be LHF for Rakudo too) | |||
colomon | yeah, I noticed. :) | ||
sorear++ | |||
kshannon | nom: class B { has $.a = 0; }; class A is B { has $.a = 1; }; my A $a .= new; $a.B::a = 3; $a.perl.say | 02:02 | |
p6eval | nom 975b6b: OUTPUT«===SORRY!===Cannot assign to a readonly variable or a value» | ||
02:02
fsergot joined
|
|||
TimToady | I would not worry about L<> at the moment, since we're rapidly approaching the point at which we should restructure the entire spec and make it wikifiabler. | 02:03 | |
kshannon | nom: class B { has $.a = 0; method set_a ($new_a) { $!a = $new_a; } }; class A is B { has $.a = 1; }; my A $a .= new; $a.set_a(3); $a.perl.say | ||
p6eval | nom 975b6b: OUTPUT«A.new(a => 1, a => 1)» | ||
kshannon | :) | ||
nom: class B { has $.a = 0; method set_a ($new_a) { $!a = $new_a; } }; class A is B { has $.a = 1; }; my A $a .= new; $a.set_a(3); $a.perl.say; say $a.B::a; | |||
p6eval | nom 975b6b: OUTPUT«A.new(a => 1, a => 1)3» | ||
kshannon | Hmm, I think that's a bug in .perl | 02:04 | |
dalek | ecs: dc9dfec | larry++ | S32-setting-library/Numeric.pod: pasto noted by japhb++ |
||
colomon | kshannon: yeah, that's what I was thinking. | 02:05 | |
sorear | TimToady: wait, wait, what? | ||
TimToady | most of the synopses are still of the form "here's what we changed from Perl 5" | 02:06 | |
we need to reorganize the spec to be more standalone | 02:07 | ||
while we're at it, a lot of bullet points need to turn into headings, though diakopter++ has been working on that already | |||
but we probably need permanent links that don't rely so much on line numbers or text searches | 02:08 | ||
some of the synopses probably could use to be split up too, so eventually we may have to abandon the S\d\d naming | 02:09 | ||
02:09
tokuhirom joined
|
|||
TimToady | certainly when we come out with a new Camel-equivalent, it won't have the same chapter numbers anyway | 02:09 | |
I think this is one of the things we need to do to productize Perl 6 over the next year or two | 02:10 | ||
just one of many | |||
ruoso | TimToady: how is the parsing of "map { } <== map { } <== grep { },1..10 " supposed to be? <== is an infix, so it's getting parsed as map(({ } <== (map(({ } <== (grep { }, 1..10)))))) | 02:11 | |
02:12
tokuhir__ joined,
tokuhirom left
|
|||
sorear | ruoso: how did b do it? | 02:13 | |
ruoso | b? | 02:14 | |
colomon | rakudo ng | ||
skids | S10 and S11 are such an anticlimax to open after reading the monster-sized ones before them. Should probably break Names out of S02 and throw those three in a blender. | 02:15 | |
TimToady | ruoso: <== is of looser precedence than listops | ||
see S03:58 | |||
02:20
stevan_ left
|
|||
sorear | TimToady: How do you think $obj does Role(12) should be parsed/translated? | 02:23 | |
TimToady: jnthn thinks it's special syntax and Role(12) is not meaningful in isolation | |||
02:24
stevan_ joined
|
|||
skids | nom: class B { has $.a = 0; }; class A is B { has $.A::a = 1; }; my A $a .= new; $a.perl.say | 02:24 | |
p6eval | nom 975b6b: OUTPUT«A.new(A::a => 1, a => 0)» | ||
TimToady | yes, it's special, though I suppose we might possibly be able to think of it as a WHENCE | 02:28 | |
skids | nom: class B { has $.a = 0; }; class A is B { has $.B::a = 1; }; my A $a .= new; $a.perl.say; $a.a.say; $a.B::a.say; | 02:29 | |
p6eval | nom 975b6b: OUTPUT«A.new(B::a => 1, a => 0)00» | ||
02:34
arlinius left
02:35
arlinius joined
02:36
thou left
|
|||
skids | (Oddly the same does not happen when doing the above eval and fiddling with .IO::chomp) | 02:36 | |
dalek | ast: f852369 | (Solomon Foster)++ | S (2 files): Comment out obsolete tests, fudge for niecza. |
02:37 | |
ruoso | niecza: sub infix:<a>($, *@a) { say @a.perl() }; 1 a 1..20 | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«(1, ).list» | ||
ruoso | how do I capture the range itself? | ||
skids | (oh wait, nm, it does.) | 02:38 | |
02:42
jaldhar left
|
|||
ruoso | hmmm... | 02:44 | |
niecza: use Threads; say my @a <== 1..20; say @a | |||
p6eval | niecza v13-146-gae314ef: OUTPUT«[1]..201» | ||
colomon | niecza: sub list(*@a) { @a.list }; say list(10).WHAT | 02:45 | |
p6eval | niecza v13-146-gae314ef: OUTPUT«List()» | ||
colomon | niecza: sub list(*@a) { @a.list }; say list(10).perl | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«(10, ).list» | 02:46 | |
colomon | niecza: sub list(*@a) { @a.list }; say list(10, 12).perl | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«(10, 12).list» | ||
dalek | ast: 75caa74 | (Solomon Foster)++ | S03-operators/context.t: Fudge for niecza. |
02:52 | |
ecza: 45d2b42 | (Solomon Foster)++ | / (2 files): Turn on S03-operators/context.t. |
02:53 | ||
02:56
kshannon left
03:00
kshannon joined
|
|||
colomon | niecza: say '{'.perl | 03:01 | |
p6eval | niecza v13-146-gae314ef: OUTPUT«"{"» | ||
colomon | niecza: say 'a'.perl | 03:02 | |
p6eval | niecza v13-146-gae314ef: OUTPUT«"a"» | ||
colomon | niecza: say '{'.perl.eval | 03:03 | |
p6eval | niecza v13-146-gae314ef: OUTPUT«Unhandled exception: Unable to resolve method eval in class Str at /tmp/SDkXT_idFv line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2831 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2832 (module-CORE @ 58)  at /home/… | ||
TimToady | perl6: say '$x'.perl | 03:04 | |
p6eval | niecza v13-146-gae314ef: OUTPUT«"$x"» | ||
..pugs b927740, rakudo 975b6b: OUTPUT«"\$x"» | |||
TimToady | oops :) | ||
colomon | yeah, I was just getting there here. :) | 03:05 | |
perl6: say '{'.perl | |||
p6eval | pugs b927740, rakudo 975b6b: OUTPUT«"\{"» | ||
..niecza v13-146-gae314ef: OUTPUT«"{"» | |||
colomon | niecza: say "\{ | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/H71BZ2b7N4 line 1:------> say⏏ "\{Confused at /tmp/H71BZ2b7N4 line 1:------> … | ||
colomon | niecza: say "\{".eval | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«Unhandled exception: Unable to resolve method eval in class Str at /tmp/rNM5i3GYRm line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2831 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2832 (module-CORE @ 58)  at /home/… | ||
sorear | ruoso: to capture the range itself, use @a instead of *@a | ||
colomon | niecza: say eval("\{") | ||
p6eval | niecza v13-146-gae314ef: OUTPUT«Unhandled exception: Unable to parse block at (eval) line 1 (EOF):------> {⏏<EOL>Couldn't find final '}'; gave up at (eval) line 1 (EOF):------> {⏏<EOL> at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die… | ||
sorear | colomon: what are you doing? | 03:06 | |
colomon | trying to get S02-names-vars/perl.t to run | ||
(fudging, in other words) | |||
03:08
thou_ joined
|
|||
skids | nom: class B { has $.a = 0; }; class A is B { submethod BUILD ($!a = 1) {} }; my A $a .= new; $a.a.say; | 03:09 | |
p6eval | nom 975b6b: OUTPUT«===SORRY!===Null PMC access in get_pmc_keyed_str()» | ||
kshannon | skids: if you want BUILD to take positional args, you have to write your own new | 03:23 | |
nom: class B { has $.a = 0; }; class A is B { submethod BUILD (:$!a = 1) {} }; my A $a .= new; $a.a.say; | |||
p6eval | nom 975b6b: OUTPUT«===SORRY!===Null PMC access in get_pmc_keyed_str()» | ||
kshannon | Hmmm, but I see that's not actually the problem. Bad nom! | 03:24 | |
03:25
thou joined
|
|||
skids | kshannon: Thanks. What I want is a subclass with a different default value for an inherited attribute. The rest is just fun in the rabbit hole. | 03:27 | |
TimToady | colomon: you could test your fancy pi spigot against nom now and see if it works | 03:28 | |
the one with the sublist matching | 03:29 | ||
(I don't think niecza does that yet, but nom has bigints now) | |||
colomon | yes | ||
TimToady | if so, you could install it as the 400th entry on RC :) | ||
03:30
Guest40 left
|
|||
kshannon | nom: class B { has $.a = 0; }; class A is B { method new (:$a = 1, *%_) { nextwith :$a, |%_; } }; my A $a .= new; $a.a.say; | 03:35 | |
p6eval | nom 975b6b: OUTPUT«1» | ||
colomon | TimToady: looks like it works fine in nom | ||
If you'd like, I'll try to install it on RC tomorrow -- I'm going to bed now. | 03:36 | ||
kshannon | skids: like that ^^ ? | ||
nom: class B { has $.a = 0; }; class A is B { method new (:$a = 1, *%_) { nextsame; } }; my A $a .= new; $a.a.say; | |||
p6eval | nom 975b6b: OUTPUT«0» | ||
colomon | TimToady: 3.14159265358979323846264338327950288419716939937510582097494 took 5.7 seconds to generate | 03:37 | |
I've only checked the first 40 digits of that. ;) | |||
03:38
Psyche^ joined
|
|||
kshannon | colomon: looks right to me. | 03:38 | |
TimToady | \o/ | 03:39 | |
skids | kshannon: perfect. thanxo mucho! | ||
kshannon | skids: I think the nextsame should work, but is currently not... | 03:40 | |
03:41
Patterner left,
Psyche^ is now known as Patterner
|
|||
sorear | colomon: stuff.mit.edu/afs/sipb/contrib/pi/pi-billion.txt | 03:44 | |
kshannon | or 3.141592653589793238462643383279502...44592.com/ | 03:45 | |
japhb wonders if there is a similar website for tau | 03:46 | ||
03:53
orafu left,
orafu joined
|
|||
skids | heh. All that trouble and .open('foo') on the 'is IO' class resets .chomp to True. | 03:54 | |
sorear | Why are you doing this? | ||
skids | Investigating subclassing IO for specific formats. | 03:55 | |
sorear | I do not think subclassing IO is a good idea | ||
for a start, there is still dissent on what the IO type hierarchy should be | 03:56 | ||
skids | For sure, but if I waited for that to get sorted... | ||
sorear | I'm sure there's a better, easier, more portable way to accomplish your goals. | 03:57 | |
skids | Well, if I took the easy way, that would be totally out of character for me :-) | ||
(As far as type heirarchy, I wasn't creating an IO::Foo but rather a Foo::File) | 04:00 | ||
kshannon | Should nextsame be incorporating the defaults from the current signature? or passing through the exact same arguments that were passed? | 04:02 | |
04:02
allahu is now known as jakk
|
|||
sorear | kshannon: Exact same. | 04:02 | |
kshannon | nom: class B { has $.a = 0; }; class A is B { method new (:$a = 1, *%_) { nextsame; } }; my A $a .= new; $a.a.say; | 04:03 | |
p6eval | nom 975b6b: OUTPUT«0» | 04:04 | |
kshannon | So 0 is correct? | ||
sorear | yes | ||
benabik | nom: class B { has $.a = 0; }; class A is B { method new (:$.a = 1, *%_) { nextsame; } }; my A $a .= new; $a.a.say; | ||
p6eval | nom 975b6b: OUTPUT«===SORRY!===Cannot look up attributes in a type object» | 04:05 | |
sorear | if you want to modify the arguments, use nextwith | ||
04:05
jakk left
|
|||
benabik | Oh, new gets an undefined self. Blah. | 04:05 | |
nom: class B { has $.a = 0; }; class A is B { method new (:$a = 1, *%_) { next with(:a($a), *%_); } }; my A $a .= new; $a.a.say; | |||
p6eval | nom 975b6b: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&_' called (line 1)Undefined routine '&with' called (line 1)» | 04:06 | |
benabik | nom: class B { has $.a = 0; }; class A is B { method new (:$a = 1, *%_) { nextwith(:a($a), *%_); } }; my A $a .= new; $a.a.say; | ||
p6eval | nom 975b6b: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&_' called (line 1)» | ||
benabik | Nevermind. | ||
sorear | |%_ | ||
not *%_ | |||
04:12
jakky joined
04:13
jakky left
04:28
Mowah left
04:30
Mowah joined,
jaldhar joined
04:47
risou is now known as risou_awy
05:05
jakky joined
05:07
kaleem left
05:19
thou_ left
05:22
wooden joined,
wooden left,
wooden joined
05:24
mkramer joined,
mkramer left
05:27
jakky left
|
|||
dalek | ecza: fd65896 | sorear++ | lib/ (2 files): Add Niecza::toggle_mono_trace which does raise(SIGUSR2), man mono for why this might be useful |
05:35 | |
ecza: bf6b78c | sorear++ | lib/ (2 files): Implement $foo ~~ Bar[5] |
|||
05:59
Mowah left
06:01
Mowah joined
06:12
wooden left,
wooden joined,
wooden left,
wooden joined
06:13
japhb left,
orevdiabl left,
japhb joined
06:14
spacebat joined,
revdiablo joined,
revdiablo left,
revdiablo joined
06:31
bkolera left
06:46
bkolera joined
|
|||
sorear | niecza: class { has $.x is rw } | 06:47 | |
p6eval | niecza v13-149-gbf6b78c: ( no output ) | ||
06:59
kaare__ joined
|
|||
sorear | niecza: sub foo(pi) { } | 07:00 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«===SORRY!===Lexical pi is not a package at /tmp/gxm79mKXs3 line 1:------> sub foo(pi⏏) { }Potential difficulties: &foo is declared but not used at /tmp/gxm79mKXs3 line 1:------> sub foo⏏(pi) { }… | ||
07:23
risou_awy is now known as risou
07:48
Salaysia joined
07:59
xinming joined
08:03
Chillance left
08:17
Salaysia left
08:35
molaf joined
09:19
benabik left
09:26
kaare__ left
09:44
thou left
09:51
tokuhir__ left
10:23
spine joined
10:25
raiph left
|
|||
spine | /msg p6eval perl6: sub MAIN() {} | 10:28 | |
The MAIN subs stopped working for me in current nom | 10:43 | ||
perl6 -e "sub MAIN($n){}" 100 | |||
Method 'package' not found for invocant of class 'BOOTSTRAPATTR' | |||
only numerical arguments seem to cause the error | 10:46 | ||
fsergot | nom: sub MAIN() {} | 10:49 | |
p6eval | nom 975b6b: ( no output ) | ||
10:51
sayu joined,
fusidany joined,
fusidany left
|
|||
masak | mornin', #perl6 | 10:51 | |
kshannon | \o masak | 10:53 | |
Woodi | hallo masak | 10:54 | |
jnthn | morning, #perl6 | 10:55 | |
Woodi | hi jnthn | ||
kshannon | o/ jnth | ||
s/$/n/ | |||
jnthn | spine: Ah, I'll bet I busted that yesterday. D'oh. | ||
o/ kshannon | 10:56 | ||
I patched the nqp bootstrap bustage last night. | |||
Probably not the final solution, but makes it work again. | |||
kshannon | I saw. | 11:04 | |
11:04
Mowah left
11:05
aindilis left
11:06
aindilis joined,
Mowah joined
11:09
xinming left
11:15
xinming joined
|
|||
spine | p6eval nom: my role a {}; say 1 but a; | 11:30 | |
p6eval | spine: nom 975b6b: OUTPUT«===SORRY!===Method 'package' not found for invocant of class 'BOOTSTRAPATTR'» | ||
spine | giving a role to an Int seems to be the problem | 11:31 | |
jnthn | > my role a {}; say 1 but a; | ||
1 | |||
Locally | |||
(just fixed the issue) | |||
spine | nice :) | ||
11:39
donri joined
|
|||
dalek | kudo/nom: 70e5fae | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Ensure that attributes in the bootstrap get correctly set up with a package. |
11:41 | |
kudo/nom: cfe49f0 | jnthn++ | src/core/Parcel.pm: Fix incorrect proto signature introduced yesterday. |
|||
11:53
mj41 joined
11:55
Woodi left
11:57
Woodi joined,
risou is now known as risou_awy
11:58
risou_awy is now known as risou
12:00
JimmyZ joined
|
|||
dalek | p/qbootstrap: e879f27 | jnthn++ | src/QRegex/Cursor.nqp: Add missing orig method to NQPMatch. |
12:00 | |
p/qbootstrap: 308d64a | jnthn++ | src/QRegex/Cursor.nqp: Get make and .ast working with QRegex NQP match object. |
|||
p/qbootstrap: f34a0f8 | jnthn++ | src/QHLL/Grammar.pm: Fix panic and...we successfully fail to parse anything. |
|||
Woodi | so, it is new year so I would like to promote some idea :) I was mentioning about it once before... | ||
it is about two hands programming - two threads | 12:01 | ||
threads are not educated much so basic usage will make them more common and allow to spread knowledge | 12:02 | ||
here is nice and simple example of having two hands :) pastebin.com/h0d3vBGh | 12:03 | ||
masak | I don't understand your concept, but thus far into the explanation it doesn't sound like something Perl 6-related. | 12:07 | |
12:15
fsergot left
12:19
JimmyZ left
12:21
preflex left,
snearch joined
12:22
preflex joined
12:33
fsergot joined
12:38
bkolera left
12:50
fsergot left
12:52
whiteknight joined
12:53
whiteknight is now known as Guest34262
12:56
birdwindupbird joined
13:08
fsergot joined
13:18
nebuchad` is now known as nebuchadnezzar
13:34
zhangkaizhao joined,
zhangkaizhao left
13:35
zhangkaizhao joined
13:36
zhangkaizhao left
13:37
zhangkaizhao joined
|
|||
colomon keeps on thinking this morning's pancakes look like fractals.... | 13:39 | ||
13:56
risou is now known as risou_awy
13:57
risou_awy is now known as risou
14:09
mdxi left
14:10
mdxi joined,
mdxi is now known as sboyette
14:16
xinming left
14:19
risou is now known as risou_awy
14:22
sayu left
14:23
sayu joined
14:25
aindilis left,
spine left,
molaf left,
carlin left,
shachaf left,
mls left,
sunnavy left,
tokuhirom3 left,
TimToady left,
doy left,
ranguard left,
aindilis joined,
spine joined,
molaf joined,
doy joined,
carlin joined,
shachaf joined,
mls joined,
sunnavy joined,
tokuhirom3 joined,
TimToady joined,
ranguard joined,
shachaf left
14:26
shachaf joined
14:31
GlitchMr joined
|
|||
moritz back | 14:45 | ||
jnthn | o/ moritz | 14:47 | |
masak | moritz! \o/ | 14:48 | |
moritz | driving for a long time is exhausting. Especially if you have a 1-year-old complaining that it's boring, BORING :-) | 14:49 | |
masak | wow, 1 year already? | ||
she speaks better than she types :P | |||
moritz | one year in a week, actually | 14:50 | |
well, she didn't say "boring", but it was quite apparent what she meant :-) | |||
14:51
PacoAir joined
|
|||
masak | moritz++ # parsing baby | 14:51 | |
that's "for his ability to parse baby", not "such a baby at parsing", just to be clear. :P | 14:52 | ||
"I speak baby." -- 11th Doctor | 14:53 | ||
ruoso | niecza: sub infix:<a>($, @a) { say @a.perl() }; 1 a 1..20 | 14:54 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«Unhandled exception: Nominal type check failed in binding @a in infix:<a>; got Int, needed Positional at /tmp/cHnnEp7wsS line 0 (infix:<a> @ 1)  at /tmp/cHnnEp7wsS line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2833 (ANON @ 3) … | ||
ruoso | sorear: ^ | 14:55 | |
moritz | niecza: sub infix:<a>($, @a) { say @a.perl() }; 1 a (1..20) | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«1..20» | ||
moritz | precdence. It's not magic. | ||
ruoso | the default precedence will be higher then ..? | ||
masak | yes. | 14:56 | |
moritz | niecza: sub infix:<a>($, @a) is looser(&infix:<..>) { say @a.perl() }; 1 a 1..20 | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«1..20» | ||
masak | infix:<a> gets infix:<+> as default precedance. | ||
I haven't thought about why that should be the default. | |||
moritz | I thought it was *, but they are close | ||
masak reads his own Advent post | |||
"Per default, an operator gets the same precedence as infix<+>." | 14:57 | ||
masak says so, so it must be true. | |||
that guy does his research. | |||
moritz | masak++ # research | 14:58 | |
masak | do the 'tighter'/'looser'/'equiv' have any significance outside of operators? | 15:02 | |
s/have/traits have/ | |||
could they be made to make sense for listop subs, for example? | 15:03 | ||
jnthn | Just for ops, afaik | 15:04 | |
masak | I think those traits should be conservatively made to throw an error on non-ops at parse time. | 15:05 | |
15:06
shinobicl___ joined
|
|||
kshannon | niecza: sub foo ($x) is looser(&infix:<..>) { ... } | 15:07 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«===SORRY!===Target does not seem to be an operator at /tmp/hjpwiocvdK line 1:------> sub foo ($x) is looser(&infix:<..>) ⏏{ ... }Potential difficulties: $x is declared but not used at /tmp/hjpwiocvdK line 1:---… | ||
kshannon | You mean like that ^^ | ||
15:08
risou_awy is now known as risou
|
|||
shinobicl___ | hi.... is it _really_ needed to have "my" and "has"? I mean, why would you want to use "my" inside a class declaration? | 15:08 | |
masak | shinobicl___: I do that all the time... | ||
ruoso | niecza: sub infix:<a>($, @a) is looser(&infix:<or>) { say @a.perl() }; 1 a 1..20 | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«===SORRY!===No precedence available for reference target at /tmp/9udJjCiRoP line 1:------> infix:<a>($, @a) is looser(&infix:<or>) ⏏{ say @a.perl() }; 1 a 1..20Undeclared routine: 'infix:<or>' used at line 1Unh… | ||
masak | kshannon: and once again, Niecza rocks. :) | ||
shinobicl___ | masak: what's the difference on using my against a private "has" declaration? | 15:09 | |
masak | shinobicl___: the former is shared between all instances, and even outside of the method bodies. | ||
'my' cuts across all artificial instance mumbo-jumbo. 'has' adheres to it. | 15:10 | ||
kshannon | The same reason you'd use a 'my' variable in P5 'class'es | 15:11 | |
masak | nom: class C { method foo { my $x = 42; method bar { say $x } }; C.new.bar; C.new.foo; C.new.bar | ||
p6eval | nom cfe49f: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 2» | ||
masak | nom: class C { method foo { my $x = 42; method bar { say $x } } }; C.new.bar; C.new.foo; C.new.bar | ||
shinobicl___ | i see. Thanks masak! | ||
p6eval | nom cfe49f: OUTPUT«Any()42» | ||
masak | today is the last day before the deadline to sign up for p6cc! | 15:12 | |
32 people signed up so far! \o/ | 15:13 | ||
that's almost twice as many as last year (18). | |||
15:22
lutok joined
|
|||
dalek | p/qbootstrap: 2d18985 | jnthn++ | src/QHLL/Grammar.pm: Update various rules in QHLL::Grammar for new !cursor_start API. |
15:23 | |
masak | lutok: greetings. | ||
p/qbootstrap: abb07dc | jnthn++ | src/QHLL/Grammar.pm: Get EXPR at least somewhat fixed up for QRegex. |
|||
p/qbootstrap: c84aaf0 | jnthn++ | src/QHLL/Grammar.pm: Another bunch of updates to EXPR. Gets us closer to working OPP with QRegex. |
|||
masak | Q Boots. they're the latest fashion. | 15:25 | |
jnthn | It's a trap! | 15:27 | |
masak | no, it's a strap! :P | 15:28 | |
sjn | it's a tarp! | ||
dalek | ecza: a17d4eb | (Daniel Ruoso)++ | / (2 files): define the precedence for the feed op, now I can use $a <== 1..20 |
||
ruoso | but map is not declared as a list prefix in niecza... so "map {} <== 1..20" can't really work... | 15:30 | |
masak | what's it defined as? | ||
ruoso | plain sub | 15:31 | |
15:32
kaare__ joined
|
|||
masak | don't plain subs have listop precedence, though? | 15:34 | |
or is "list prefix" something different from "listop"? | |||
15:36
risou is now known as risou_awy
|
|||
masak | how do I use IO.read to read all of the bytes? | 15:39 | |
jnthn | In a loop? | ||
Or just get the file length and pass that... | 15:40 | ||
masak | ooh, file length. | ||
how do I get the file length, in bytes, from an IO object? :) | 15:41 | ||
I guess .s will do it... | |||
method read(IO:D: Int:D $bytes) { | 15:43 | ||
15:43
JimmyZ joined
|
|||
masak | I think Int:D should be Cool:D here... | 15:43 | |
for the usual reasons. | |||
jnthn | Probably. | 15:44 | |
15:45
GlitchMr left
|
|||
masak | oh no, .s returns a boolean -- "is the size non-zero?" | 15:46 | |
jnthn | oh | ||
masak | and there's no other way to get the file size :( | ||
masak compromizes and copies the mechanism from src/core/IO.pm into his own code | 15:47 | ||
OO -- it's all about re-use :P | |||
dalek | p/qbootstrap: 999c0e4 | jnthn++ | src/Q (2 files): Another round of fixes to OPP with QRegex; actually seems to work now. |
15:49 | |
p/qbootstrap: 3efe24b | jnthn++ | src/NQPQ/Actions.pm: Fix compilation of rules with parameters. |
15:55 | ||
shinobicl___ | what am i doing wrong here? | 15:58 | |
rakudo: class A { has Str $!stuff; method new(Str $stuff){$!stuff = $stuff}; method pr{say $!stuff} }; my A $thing = A.new("abc"); $thing.pr; | |||
p6eval | rakudo cfe49f: OUTPUT«Cannot look up attributes in a type object in method new at /tmp/o6k4pmKsSE:1 in block <anon> at /tmp/o6k4pmKsSE:1 in <anon> at /tmp/o6k4pmKsSE:1» | ||
kshannon | The object doesn't exist yet in new(), you want to provide your own submethod BUILD | 16:00 | |
16:00
Mowah left
16:01
birdwindupbird left
|
|||
skids | .oO(Str has a lot of methods. A rather heavy interface to require non-strings to tie to for ~~ when only a few like substr are actually used.) |
16:01 | |
colomon | rakudo: class A { has Str $!stuff; method new(Str $stuff){ bless(*, :$stuff); }; method pr{say $!stuff} }; my A $thing = A.new("abc"); $thing.pr; | 16:02 | |
p6eval | rakudo cfe49f: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&bless' called (line 1)» | ||
16:02
Mowah joined
|
|||
colomon | rakudo: class A { has Str $!stuff; method new(Str $stuff){ self.bless(*, :$stuff); }; method pr{say $!stuff} }; my A $thing = A.new("abc"); $thing.pr; | 16:03 | |
p6eval | rakudo cfe49f: OUTPUT«Str()» | ||
16:03
birdwindupbird joined
|
|||
kshannon | nom: class A { has Str $!stuff; method new(Str $stuff) { nextwith stuff => $stuff; }; submethod BUILD(Str :$!stuff) {}; method pr {say $!stuff} }; my A $thing .= new("abc"); $thing.pr; | 16:03 | |
p6eval | nom cfe49f: OUTPUT«abc» | ||
skids | colomon: fine as long as $!stuff isn't many megabytes long. | 16:04 | |
colomon | ??? | ||
16:05
JimmyZ left
|
|||
kshannon | skids: BTW unless you REALLY need .new to take postional arguments for some reason, you're usually better off going with named. | 16:07 | |
nom: class A { has Str $!stuff; submethod BUILD(Str :$!stuff) {}; method pr {say $!stuff} }; my A $thing .= new(stuff => "abc"); $thing.pr; | |||
p6eval | nom cfe49f: OUTPUT«abc» | ||
skids | colomon: sorry I thought you were responding to me. | 16:11 | |
shinobicl___ | that looks better. And, i think is not that bad to "force" named arguments on constructors... But it should be simpler to declare "simple" constructors like in, say, object pascal. | 16:12 | |
kshannon | The list/map/iterator reify/REIFY interface: is there a specific reason for it to be the way it is (i.e. compatibility with something else) or can I have a go at cleaning it up. | ||
For example, the list iterator really shouldn't have a reference to the list it was iterating which it calls REIFY on as a side effect. | |||
shinobicl___: If you're willing to have public accessors, then it is. | 16:13 | ||
nom: class A { has Str $.stuff; method pr {say $.stuff} }; my A $thing .= new(:stuff("abc")); $thing.pr; | 16:14 | ||
p6eval | nom cfe49f: OUTPUT«abc» | ||
skids | let "genex" be to pack what regex/grammar is to unpack <-- was there ever a serious effort to flesh out something like that, and if so, anyone got links? | 16:16 | |
masak | not to my knowledge, but it feels like a really worthy thing to try. | 16:18 | |
there's been mumblings about linking this up with compact types somehow, too. | |||
even the unpack/pack spec mentions something like that. but it's all hot air so far. | 16:19 | ||
flussence | wouldn't that just be a templating language? | ||
kshannon | skids: you mean genex GENerates EXamples? | ||
Ah, yeah templating makes more sense. | 16:20 | ||
skids | I offer no excuses for that coinage, other than it allows for bad Generation X jokes. | ||
(And rhymes) | 16:21 | ||
jnthn | kshannon: pmichaud designed the interface there...I don't think he considers it perfect, so if you have ideas for improvements feel free to try them out. I'd be happy to look over any patches... | ||
kshannon | I was thinking skids was talking about something like the haskell QuickCheck Arbitrary type | ||
16:22
wallberg joined
|
|||
masak | wallberg! \o/ | 16:22 | |
flussence | oh, that makes sense... | ||
kshannon | I was going to paste an example that was NULL PMC'ing because of the design, but it looks like it doesn't anymore... | 16:23 | |
16:23
thou_ joined
|
|||
moritz | nom: say pir::null__P | 16:27 | |
p6eval | nom cfe49f: OUTPUT«Null PMC access in find_method('gist') in sub say at src/gen/CORE.setting:5692 in block <anon> at /tmp/_3VfAQkwtE:1 in <anon> at /tmp/_3VfAQkwtE:1» | ||
moritz | :-) | ||
jnthn | :P | ||
masak | that's a Null PMC access from inside the MOP. if we wanted, we could plug that one. | 16:28 | |
skids | masak: yeah, that was the concept I was thinking of. I just get an icky feeling when writing regex to read data into an object and thinking "I'll have to duplicate a lot of this for a write-back-to data function." But it is definitely No Small Task(tm) to come up with something elegant in this area. | ||
jnthn | masak: Don't see the point. | 16:29 | |
flussence | .oO( isn't that the whole point of null__P? ) |
16:30 | |
moritz | jnthn: what do you run to try to bootstrap in the qbootstrap branch? | 16:31 | |
is that just 'make bootstrap-files'? | |||
and then 'make' again? | |||
dalek | p/qbootstrap: 5d63533 | jnthn++ | src/QRegex/Cursor.nqp: Match objects should have the cursor associated with them. |
16:32 | |
p/qbootstrap: 33cc834 | jnthn++ | src/QHLL/Grammar.pm: Get quote parsing to work again under QRegex. Now we parse and pass some of NQPs test suite again. |
|||
masak | skids: no, which is maybe why no-one's done it yet. | ||
jnthn | moritz: It's not that far along yet | ||
masak | skids: still, it sounds like a worthwhile thing to have. | ||
jnthn | moritz: Current work is to make it pass make test again :) | ||
moritz: Only then is it time to consider make bootstrap-files | |||
moritz: Basically, in that branch stage1 is the equivalent of what nqpq builds in master. | 16:33 | ||
moritz | masak, skids: a good first step might be to make regexes/tokens introspectable | ||
jnthn: ok | |||
jnthn | moritz: stage2 is thus built fully with QRegex (e.g. NQP::Grammar is compiled with QRegex) | 16:34 | |
moritz: There's a src/QHLL which is only used in stage2 - it's where I'm doing the updates to HLL::Grammar mostly. | |||
moritz | masak, skids: then you could write a generator that takes something of the same structure as the parse tree, and turn it back into something that the grammar would match | ||
jnthn | moritz: Once we're done, NQPQ and HLLQ go away, they're just around during migration. | ||
moritz: Now we can run various of the test suite using QRegex, feel free to join in triage. | 16:35 | ||
moritz | jnthn: I'll take a look, but will also look at testneeded tickets -- maybe I can be more productive in that area | 16:36 | |
jnthn | moritz: Probably easier to be productive there, yes. | ||
masak | grrr... dir() and open() don't follow least-surprise when it comes to paths. dir() returns pathless filenames, and open() expects pathful filenames. | 16:38 | |
skids | moritz: I suppose the true sticking point would be reversing { make <expr> } which might be an indication that more reversable alternative constructs for putting stuff in .ast might be desireable. | 16:40 | |
moritz | skids: right, that bit isn't very declarative at the moment | 16:42 | |
nom: ::T; | 16:45 | ||
p6eval | nom cfe49f: OUTPUT«===SORRY!===Could not locate compile-time value for symbol T» | ||
moritz | nom: ::T; class T { }; | ||
p6eval | nom cfe49f: OUTPUT«===SORRY!===Could not locate compile-time value for symbol T» | ||
moritz | nom: class T { }; ::T | 16:46 | |
p6eval | nom cfe49f: ( no output ) | ||
16:50
shinobicl___ left
|
|||
dalek | ast: 8c77b69 | moritz++ | S14-roles/parameterized-type.t: RT #68134 |
16:51 | |
16:55
shinobicl___ joined
17:02
zhangkaizhao left
|
|||
dalek | kudo/nom: 054d533 | masak++ | src/core/IO.pm: [src/core/IO.pm] .read should accept Cool:D Not just Int:D. |
17:03 | |
masak | I spectested the above patch, but it's possible there's no spectest for .read("42") or whatever. | ||
I'll test that locally now. | 17:04 | ||
fsergot | nom: sub s( @ints ){ return [+] @ints; }; say "1: {s((1,2,3))}"; | ||
p6eval | nom cfe49f: OUTPUT«1: 6» | ||
fsergot | nom: sub s( @ints ){ return [+] @ints; }; say "1: {s(1,2,3)}"; | ||
p6eval | nom cfe49f: OUTPUT«===SORRY!===CHECK FAILED:Calling 's' will never work with argument types (int, int, int) (lines 1, 1) Expected: :(Positional @ints)» | ||
fsergot | Maybe We can do something with this? | 17:05 | |
masak | ah. getting "This type cannot unbox to a native integer" | ||
fsergot | nom: my @ints = 1,2,3; say @ints.perl; | ||
p6eval | nom cfe49f: OUTPUT«Array.new(1, 2, 3)» | ||
masak | jnthn: given a Cool, how do I cast it into an Int that can later be unboxed to a native integer. .Int ? | ||
fsergot | It is Array :) | ||
jnthn | .Int | ||
masak fixes | |||
jnthn | fsergot: That compile time failure is correct. You're passing it three args. Write *@ints in the signature to do what you want. | 17:06 | |
fsergot | jnthn++: thanks | 17:07 | |
TimToady | and you got an Array from the assignment, not from the RHS, which is a Parcel | ||
fsergot | TimToady++ | 17:08 | |
TimToady | well, actually you got an Array from the declaration, and the assignment merely populated it :) | 17:09 | |
dalek | p/qbootstrap: 66618fc | jnthn++ | src/ (2 files): Restore some basic rxtrace functionality. Unlike the previous version, this is zero cost if you don't enable it. |
||
TimToady | TimToady-- | ||
jnthn | Also, nice that Rakudo caught that one at compile time ;) | ||
TimToady | .oO("That trick never works!") |
||
though in this case it'd be nice if it said "Too many arguments" | 17:10 | ||
jnthn | Yeah | 17:11 | |
TimToady | not every newbie is going to be able to read signatures that well | ||
and fsergot++'s mistake is quite natural, even if you aren't a newbie anymore | 17:12 | ||
kshannon | jnthn++ # rxtrace :) | 17:14 | |
17:15
wallberg left
|
|||
kshannon | Here's a silly nom bug: | 17:16 | |
nom: say 27 ** 0.33333333333333333333333 | |||
p6eval | nom cfe49f: OUTPUT«3» | ||
kshannon | nom: say 27 ** 1/3 | ||
p6eval | nom cfe49f: OUTPUT«9» | ||
dalek | kudo/nom: 02ddac6 | masak++ | src/core/IO.pm: [src/core/IO.pm] accept Cool but cast to Int There, that should make us Postel-compliant. :-) |
17:17 | |
masak | "Be liberal in what you accept, and conservative in what you send." -- jon postel | ||
kshannon: precedence. | |||
kshannon: ** binds tighter than / | |||
kshannon | nom: say 27 ** (1/3) | ||
p6eval | nom cfe49f: OUTPUT«3» | ||
masak | kshannon: and whitespace isn't significant. | ||
kshannon | I swear I already tried that :( | ||
That's what I get for coding at 4am | 17:18 | ||
masak | some enterprising soul could eradicate 'rule multisig' from src/Perl6/Grammar.pm in Rakudo. | 17:23 | |
jnthn | Is it gone from STD? | ||
kshannon: Yes, just used it to find an issue :) | 17:24 | ||
17:24
birdwindupbird left
|
|||
masak | jnthn: no, it's still in STD.pm6. | 17:24 | |
TimToady | given that these days we consider sigs to be intermixable with other traits, it's a completely unnecessary syntax | 17:25 | |
if we really want multiple signatures, we can just put two of 'em | |||
17:25
birdwindupbird joined
|
|||
TimToady | std: sub foo ($a,$b) ($b,$a) {...} | 17:26 | |
p6eval | std dc62e1d: OUTPUT«Potential difficulties: Useless redeclaration of variable $b (see line 1) at /tmp/oCNQvcvIQr line 1:------> sub foo ($a,$b) (⏏$b,$a) {...} Useless redeclaration of variable $a (see line 1) at /tmp/oCNQvcvIQr line 1:------> sub foo ($a,$b… | ||
TimToady | heh | ||
well, the syntax is allowed | |||
don't need to implement it for 6.0 though | |||
masak | TimToady: I de-spec'd that part in 2011, though. | 17:27 | |
dalek | p/qbootstrap: 814b46f | jnthn++ | src/how/NQPClassHOW.pm: Implement non-:local case of .^methods in NQP's ClassHOW. |
||
p/qbootstrap: 682544b | jnthn++ | src/NQPQ/Grammar.pm: Remove stray proto in NQP grammar. |
|||
p/qbootstrap: 862bcc7 | jnthn++ | src/QRegex/Cursor.nqp: Don't need to explicitly pass :local(0) - it's the default. |
|||
TimToady | yes, I know | ||
you despec'd the | syntax | 17:28 | ||
but treating the sig like just another trait remains | |||
and there are good reasons for wanting traits in front of the sig from time to time | |||
masak | oh, I thought the | syntax and multisig were exactly the same thing. | ||
TimToady | multisig is the name of the | syntax | 17:29 | |
masak | wright. | ||
right* | |||
TimToady | but I realized a few weeks ago that we still had multiple sigs possible without | | ||
17:29
Trashlord joined
|
|||
TimToady | for now we can just block it, until we decide it's implementable | 17:29 | |
masak | as above. yes, I just realized too, reading STD.pm6 :) | ||
I don't mind traits before the signature, but I don't see the point of multiple signatures. | 17:30 | ||
I think they're a bad idea. | |||
TimToady | I think they're a better idea than either repeating yourself or defining a single-use trait | 17:31 | |
moritz | what's so bad about multi sub infix:<+>(Date $d, Int $n) | (Int $n, Date $d) { Date.new($d.Int + $n) } # or so? | ||
TimToady | effectively, it's just two subs sharing a body | ||
moritz | rakudo: multi foo() { nextsame }; foo() | 17:32 | |
p6eval | rakudo 02ddac: ( no output ) | ||
moritz | is that right? | ||
masak | moritz: think so. | ||
jnthn | We've been back and forth quite a few times on nextsame. I seem to remember that we ended up with the tests and Rakudo in a consistent state, but I forget which one it was :P | ||
masak | it's consistent with how 'next' works. | 17:33 | |
TimToady | yes, next turns into last at the end :) | ||
masak | lastsame ;) | ||
TimToady | lastcall discards the rest of the list but returns | 17:34 | |
masak | I can definitely see the allure of 'infix:<+>(Date $d, Int $n) | (Int $n, Date $d)' and similar small examples. I still think it's a feature with only marginal benefit and lots of implementation complexity. | 17:35 | |
TimToady | which is why we're not requiring it yet | ||
masak | considering how the alternative 'infix:<+>(Int $n, Date $d) { $d + $n }' isn't so bad. | ||
TimToady | it might turn out to be trivial | ||
masak | or someone could write a module to generate such signatures, and do a better job at it. | 17:36 | |
jnthn | Somebody already did implement is symmetric trait (colomon++ iirc) | ||
masak | I for one would like to see an 'is commutative' trait. | ||
TimToady hates it as insufficiently general, even though I originally proposed it | 17:37 | ||
masak | 'symmetric' is a weird name for that, symmetric is things like '$x == $x' | ||
TimToady | and I feel sorry for generations of math pupils whose teachers misprounounced it as "communative" :) | 17:42 | |
masak | huh! doesn't seem to happen here in .se | 17:45 | |
ruoso | thinking about "map { } <== ... ", IIUC, that parses as "(map { }) <== ...", which means that map gets invoked without a list... and in that case should return a new closure which will actually run the map with the items received by the closure... does that make sense? | 17:48 | |
Or the compilation should do something completely different? | 17:49 | ||
jnthn | dinner & | 17:51 | |
ruoso | std: (map { }).(1,2,3) | ||
p6eval | std dc62e1d: OUTPUT«ok 00:01 122m» | ||
ruoso | perl6: (map { .say }).(1,2,3) | 17:52 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class List at /tmp/wFk1fSD9Cq line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2833 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2834 (module-CORE @ … | ||
..rakudo 02ddac: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'List' in <anon> at src/gen/Metamodel.pm:3368 in block <anon> at /tmp/C6ukQ6jiQi:1 in <anon> at /tmp/C6ukQ6jiQi:1» | |||
..pugs b927740: OUTPUT«*** Cannot cast from VList [] to VCode (VCode) at /tmp/8GVD9ZbkPH line 1, column 1 - line 2, column 1» | |||
moritz | perl6: &map.assumming({ .say }).(1, 2, 3) | 17:58 | |
p6eval | rakudo 02ddac: OUTPUT«Method 'assumming' not found for invocant of class 'Sub' in block <anon> at /tmp/tbcaIO8wVV:1 in <anon> at /tmp/tbcaIO8wVV:1» | ||
..pugs b927740: OUTPUT«*** No such method in class Sub: "&assumming" at /tmp/dRgYzwmG7Y line 1, column 1 - line 2, column 1» | |||
..niecza v13-149-gbf6b78c: OUTPUT«Unhandled exception: Unable to resolve method assumming in class Sub at /tmp/6Z9aFn4TCs line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2833 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 2834 (module-CORE @ 58)  at /… | |||
kshannon | ruoso, no <== provides the list. | 17:59 | |
"(map { }) <== ..." is not correct. | |||
The precedence is correct, but the feed operators need special treatment as their arguments aren't complete expressions, or at least the one it's pointing at isn't. | 18:00 | ||
moritz | wow, we don't seem to have tests for {call,next}{with,same} with subroutines at all | 18:01 | |
kshannon | "map { } <== ..." sorta parses as "map { } ( ... )" | ||
moritz | just methods | ||
... except together with wrap | 18:02 | ||
probably because it's not explicitly mentioned in S06 that those should work with subs too | 18:04 | ||
they should, right? | |||
nom: multi a($) { say 'Any' }; multi a(Int $) { say 'Int'; nextsame }; a(3) | |||
p6eval | nom 02ddac: OUTPUT«IntAny» | ||
kshannon | for @lazy { ... } | 18:08 | |
What's the best way to rewrite that so for doesn't eagerly grab all of @lazy before it runs the body | 18:09 | ||
moritz | it... shouldn't | ||
kshannon | Well nom is... | ||
golfing... | 18:10 | ||
moritz | nom: my @lazy = gather for 1..10 { take $_; say $_ } ; for @lazy { last } | ||
p6eval | nom 02ddac: OUTPUT«12345678910» | ||
moritz | nom: my @lazy := gather for 1..10 { take $_; say $_ } ; for @lazy { last } | ||
p6eval | nom 02ddac: OUTPUT«12345678910» | ||
18:11
thou joined
|
|||
moritz | indeed :/ | 18:11 | |
kshannon | I'm a bit worried it was my patch to .[ ] | 18:12 | |
moritz doesn't see any .[ ] in that code | |||
kshannon | Oops, I meant circumfix:<[ ]>, and I'm thinking it might be called somewhere in the implementation of 'for' | 18:16 | |
colomon | nom's for has been doing that for quite a while now | ||
kshannon | quite a while = days, weeks, or months ? | 18:17 | |
colomon | months, I think | 18:18 | |
18:18
birdwindupbird left
|
|||
kshannon | Oh. Well that lets me off the hook :) | 18:18 | |
colomon | for *is* lazy for known infinite sources, so I assumed the current status was intentional. | 18:19 | |
TimToady | it is allowed to work ahead in batches for efficiency; maybe this falls in that category | 18:22 | |
kshannon | well, how can I massage a gather into "known infinite" :) | ||
colomon | TimToady: that actually vaguely rings a bell, now that you mention it. I vaguely recall pmichaud doing something about batching 1000 at a time... | 18:23 | |
kshannon | Which reminds me, github.com/perl6/roast/blob/master...-10.t#L172 | 18:24 | |
Is that still correct, as it only works when the take [ ... ] is eager. | 18:25 | ||
TimToady | should not matter, since the join will eventually eager it | 18:28 | |
kshannon | Yeah, but the while loops forever producing lazy lists... | 18:31 | |
the outer while. | |||
18:32
shinobicl___ left
|
|||
TimToady | well, you can always throw in an explicit 'eager' | 18:37 | |
you are, after all, relying on side effects there... | |||
18:39
benabik joined
|
|||
dalek | ast: b7433f7 | (Kris Shannon)++ | integration/99problems-01-to-10.t: Shouldn't be relying on laziness side effects. |
18:39 | |
ast: 43749dc | (Kris Shannon)++ | integration/99problems-01-to-10.t: Shouldn't be relying on side effects here either. |
18:41 | ||
moritz | nom: multi b(Int $) { say 1; callsame; say 3 }; multi b($) { say 2 }; b(2); | 18:55 | |
p6eval | nom 02ddac: OUTPUT«123» | ||
moritz | nom: multi b(Int $) { say 1; nextsame; say 3 }; multi b($) { say 2 }; b(2); | ||
p6eval | nom 02ddac: OUTPUT«12» | ||
dalek | ast: caf3d2c | moritz++ | S06-multi/redispatch.t: tests for multi subs + {next,call}l}{with,same} |
19:00 | |
ruoso | kshannon: in that case <== is not simply a infix op... it needs to be a completely different category | ||
19:02
sayu left
19:05
snearch left
|
|||
kshannon | ruoso: S06:Feed Operators: "Syntactically, feed operators expect to find a statement on either end" | 19:06 | |
19:06
kaare__ left
19:07
buubot_backup left
|
|||
dalek | kudo/nom: 327fc92 | moritz++ | t/spectest.data: run new redispatcher tests |
19:08 | |
ruoso | so it's not the same as any other infix op | 19:09 | |
moritz | correct | 19:10 | |
TimToady | I don't think that S06 quote is correct anymore, however | ||
but feeds are a bit macroish | |||
ruoso | ok... but does the current infix logic allow such macroish behavior? | ||
TimToady | well, && and || are macros too :) | 19:11 | |
so, yes and no | |||
ruoso | because the macroish subst of <== is quite substantial | ||
moritz | down to 691 open rakudo tickets | 19:12 | |
ruoso | later& | 19:14 | |
moritz | what does infix fff do? | 19:16 | |
S03 says "sed style", but I don't know sed | |||
TimToady | the difference is whether you check again on the same entry, or wait till the next time | ||
sorear | good * #perl6 | 19:17 | |
TimToady | with the one it's possible to go true and then false again on one entry | ||
colomon | o/ | ||
moritz | "on one entry"? | ||
TimToady | one call to ff or fff | 19:18 | |
kshannon | nom doesn't seem to have fff :( | 19:21 | |
TimToady | niecza: for 1..10 { if $_ == 4 fff $_ == 4 { .say } } | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«45678910» | ||
TimToady | niecza: for 1..10 { if $_ == 4 ff $_ == 4 { .say } } | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«4» | ||
TimToady | that's the difference | ||
moritz | so... fff always checks the left and right side and xors, whereas ff only checks one side? | ||
TimToady | it's not xor | ||
niecza: for 1..10 { if $_ == 4 fff $_ == 5 { .say } } | 19:22 | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«45» | ||
TimToady | note you still get the 5 | ||
the right side says whether it flips state *after* this time | |||
the only difference is when it starts checking the right side | |||
think of it in terms of line number ranges | |||
if you want 4..5 then it includes line 5 | 19:23 | ||
sorear | EOBACKLOG | ||
TimToady | usually you want ff semantics, so it's the shorter one | 19:24 | |
same in p5 with .. vs ... | 19:25 | ||
19:39
GlitchMr joined
|
|||
GlitchMr | bash-3.1$ echo {P,p}{{erl,hp},ython} | 19:39 | |
phenny | GlitchMr: 25 Dec 21:22Z <tadzik> tell GlitchMr you should've tried qwebirc on a Kindle ;) | ||
GlitchMr | Perl Php Python perl php python | ||
I still don't understand... | |||
wait... | |||
:P | |||
That's serious delay :P. | |||
Whatever. | 19:40 | ||
(I guess it's because I haven't said anything since then...) | |||
colomon | right | 19:46 | |
GlitchMr | Personally, I like Perl because of good documentation :). | 19:49 | |
19:49
thou left
|
|||
GlitchMr | Compare: search.cpan.org/~makamaka/Text-CSV-...ext/CSV.pm | 19:49 | |
and: docs.python.org/library/csv.html | |||
And that isn't core module... :P | |||
perldoc.perl.org/CGI.html :P | |||
docs.python.org/library/cgi.html | 19:50 | ||
And this | |||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' } }; say t { /B/ ff /D/ }, <A B C D E F>; | 19:56 | |
p6eval | nom 327fc9: OUTPUT«Method 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:7239 in sub infix:<ff> at src/gen/CORE.setting:8502 in block <anon> at /tmp/v4klOM4CwO:1 in block <anon> at /tmp/v4klOM4CwO:1 in method reify at src/gen/CORE.setting:… | ||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' } }; say t { .say; /B/ ff /D/ }, <A B C D E F>; | ||
p6eval | nom 327fc9: OUTPUT«AMethod 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:7239 in sub infix:<ff> at src/gen/CORE.setting:8502 in block <anon> at /tmp/J7zrdkZXIC:1 in block <anon> at /tmp/J7zrdkZXIC:1 in method reify at src/gen/CORE.settin… | ||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' } }; say t { .say; /B/ ff True }, <A B C D E F>; | ||
p6eval | nom 327fc9: OUTPUT«AMethod 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:7239 in sub infix:<ff> at src/gen/CORE.setting:8502 in block <anon> at /tmp/eT4SzDlv3M:1 in block <anon> at /tmp/eT4SzDlv3M:1 in method reify at src/gen/CORE.settin… | ||
moritz | hurm | 19:57 | |
somehow the /B/ match doesn't get the right $_, even though .say sees it | |||
or any other idea what might be wrong here? | |||
GlitchMr | ff? | ||
moritz | GlitchMr: flip flop. See S03 | 19:58 | |
GlitchMr | Some Perl 6 operators are weird for me... whatever :). | ||
It gives flexibility... | 19:59 | ||
19:59
thou joined
|
|||
GlitchMr | @a >>>>> $b | 20:00 | |
... ok... | |||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' } }; say t { .say; /B/ || True }, <A B C D E F>; | ||
p6eval | nom 327fc9: OUTPUT«ABCDEFABCDEF ABCDEF ABCDEF ABCDEF ABCDEF ABCDEF» | ||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' }; $r }; say t { .say; /B/ || True }, <A B C D E F>; | 20:01 | |
p6eval | nom 327fc9: OUTPUT«ABCDEFABCDEF» | ||
moritz | nom: sub t($c, @a) { my $r = ''; for @a { $r ~= $c($_) ?? $_ !! 'x' }; $r }; say t { .say; /B/ ff True }, <A B C D E F>; | ||
p6eval | nom 327fc9: OUTPUT«AMethod 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:7239 in sub infix:<ff> at src/gen/CORE.setting:8502 in block <anon> at /tmp/v2G_Y9mp9n:1 in block <anon> at /tmp/v2G_Y9mp9n:1 in method reify at src/gen/CORE.settin… | ||
GlitchMr | But seriously, who will use so many operators... many of those have limited usage... | ||
sorear | std: sub foo(Any ::T $x) { } | 20:03 | |
p6eval | std dc62e1d: OUTPUT«Potential difficulties: $x is declared but not used at /tmp/7Ds6nAqqgA line 1:------> sub foo(Any ::T ⏏$x) { }ok 00:01 121m» | ||
sorear | rakudo: sub foo(Any ::T $x) { } | ||
p6eval | rakudo 327fc9: ( no output ) | ||
moritz | GlitchMr: www.google.com/search?q=site%3Aperl...+flip+flop # lots of people do | ||
nom: $_ = 'a'; /a/ ff /a/; | 20:04 | ||
p6eval | nom 327fc9: OUTPUT«Method 'match' not found for invocant of class 'Any' in method Bool at src/gen/CORE.setting:7239 in sub infix:<ff> at src/gen/CORE.setting:8502 in block <anon> at /tmp/YknKE09sGg:1 in <anon> at /tmp/YknKE09sGg:1» | ||
sorear | Perl 6 has been described as an operator-oriented language | ||
moritz | nom: $_ = 'a'; /a/ || /a/; | ||
p6eval | nom 327fc9: ( no output ) | ||
moritz submits rakudobug | 20:05 | ||
sorear | nom: $_ = 'a'; m/a/ ff m/a/ | ||
p6eval | nom 327fc9: ( no output ) | ||
sorear | I think I see the problem | ||
moritz | sorear: what is it? | 20:06 | |
ah, probably the sub infix:<ff>($a as Bool, $b as Bool) | 20:07 | ||
sorear | moritz: 'ff' is probably calling a helper sub, which calls .Bool on the arguments ... but $_ doesn't exist in the helper sub | ||
moritz | tries to coerce the regex to Bool, but no $_ present anymore | 20:08 | |
sorear | nom: (say 1) ff (say 2) | ||
p6eval | nom 327fc9: OUTPUT«12» | ||
sorear | niecza: (say 1) ff (say 2) | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«12» | ||
sorear | niecza: (say 1; False) ff (say 2) | ||
moritz | niecza: $_ = 'a'; /a/ ff /a/ | ||
p6eval | niecza v13-149-gbf6b78c: OUTPUT«Rebuild in progress» | ||
sorear | niecza: (say 1; False) ff (say 2) | 20:09 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«1» | ||
sorear | nom: (say 1; False) ff (say 2) | ||
p6eval | nom 327fc9: OUTPUT«12» | ||
sorear | std: my $x (5); | 20:10 | |
p6eval | std dc62e1d: OUTPUT«ok 00:01 122m» | ||
moritz | what is that? | 20:11 | |
a sub-signature? | |||
sorear | yes | 20:13 | |
why are sub-signatures allowed on variable_declarators? | 20:14 | ||
moritz | nom: my $x (6) | ||
p6eval | nom 327fc9: OUTPUT«===SORRY!===Confused at line 1, near "my $x (6)"» | ||
moritz | sorear: probaby just an omission | ||
sorear | Not a comission? | ||
moritz | rakudo: $a = (my $a) | 20:23 | |
p6eval | rakudo 327fc9: OUTPUT«===SORRY!===Variable $a is not predeclared at line 1, near " = (my $a)"» | ||
Woodi started to like ff :) | |||
tadzik | you see? :) Not that bad after all | 20:24 | |
Woodi | is there a multi-stage ff maybe ? :) | ||
20:24
snearch joined
|
|||
Woodi | tadzik: found nice tutorial :) www.perlmonks.org/?node_id=525392 | 20:25 | |
eg. /^start/ ff /^level 1/ ff [more levels] ff /^end/ # ? | 20:27 | ||
sorear | well, you need to use p6regex syntax there ... /^ 'level 1' / | 20:28 | |
moritz | Woodi: and what would that do? | ||
Woodi | eg. parse area file for mud :) | 20:29 | |
[ff] [/^ 'start' ], ..., /^ 'end' /] ? | |||
MUD like Diku or ROM :) | 20:30 | ||
something like that wont keep 0/1 state but rather keep state of actual matcher | 20:32 | ||
hmm, then branching can be added :) so probably should be called 'module Graph' or 'Automata' :) | 20:34 | ||
20:38
Patterner left
20:41
shinobicl___ joined
20:43
ksi joined,
Psyche^ joined,
Psyche^ is now known as Patterner
20:45
zby_home joined
20:46
birdwindupbird joined
20:57
sudokode joined
21:01
ponbiki joined
21:02
snearch left
21:04
GlitchMr left
|
|||
[Coke] | 815 test failures in spectest on niecza. | 21:08 | |
masak: (be liberal in what you accept) - no. that way lies madness. | 21:09 | ||
21:12
thou left
21:13
shinobicl___ left
|
|||
sorear | bah | 21:20 | |
dalek | ecza: 45ad814 | sorear++ | / (3 files): Make signature-setting system a bit more flexible |
||
ecza: fc233bd | sorear++ | src/ (6 files): Mergeback; add some new Sig fields |
|||
sorear | [Coke]: got a list of failing files? | 21:26 | |
colomon | woah, 815?! | 21:27 | |
[Coke] | sorear: it was from test_summary; doing an update and a regular spectest to see what's what. | ||
sorear | integration/advent2009-day14 has some tests that are just plain wrong | 21:28 | |
like testing that the result of 1/60000 + 1/60001 is a Num | |||
21:28
yath left
|
|||
[Coke] | ... and that just finished with a single failure in t/spec/S02-types/parcel.t (#14) | 21:28 | |
21:28
yath joined
|
|||
[Coke] will rerun that test summary output. | 21:29 | ||
sorry about the false alarm. :P | |||
21:29
spine left
|
|||
colomon | sorear: that reminds me, I was thinking we might want to add a FatRat.t module. :) | 21:30 | |
masak | [Coke]: I'd be interested to hear more about that. to me, that's the raison d'être for Cool -- we want the strictness of a type system but also the flexibility and promiscuous punning of the Perl 5 core types. | 21:32 | |
sorear | rakudo: sub foo ($x (1) (2)) { } | 21:33 | |
p6eval | rakudo 327fc9: OUTPUT«===SORRY!===Cannot have more than one sub-signature for a parameter at line 1, near ") { }"» | ||
[Coke] | masak: ah, but if Cool is spec'd, then you can still be strict. | 21:34 | |
I'm referring to the madness of, say, HTML. | |||
21:36
birdwindupbird left
|
|||
masak | [Coke]: ah, you see, my quote was to be taken in context. | 21:37 | |
:) | |||
I was going to give an explanation of why HTML turned out to be so bad. but I can't actually envision a way in which it could've turned out better... :) | 21:38 | ||
browsers all had an evolutionary advantage from being liberal with tag soup. | 21:39 | ||
doy | well, that's the problem | ||
"be liberal in what you accept" makes your software in particular a lot better | 21:40 | ||
masak | and the web probably wouldn't have been as successful as it is today if it weren't for the liberalness. | ||
doy | it just makes things as a whole worse | ||
masak | so you're saying it's a zero-sum game between your software and... everything else? :) | 21:41 | |
doy | i'm saying it's a tragedy of the commons type situation | 21:43 | |
(: | |||
masak | the more I develop, the more I find I want my applications to fail fast during development, yet be very robust during production. | 21:47 | |
and I find that the former leads to the latter. | |||
sorear | ==masak | 21:48 | |
masak | but it's a challenge to teach novices that both sides of the coin are necessary :) | ||
sorear | it's useful to have switches available to control robustness | ||
-Werror and use warnings ':FATAL' are both awesome but shouldn't appear in shipped code | 21:49 | ||
masak | actually, the kind of robustness needed during production still doesn't mean "ignore errors", it just means that the program no longer pretends that the user and the developer are the same person. | ||
so it should smile at the user and scream at the developer :P | |||
jnthn back from dinner and beer | 21:50 | ||
sorear | o/ jnthn | ||
masak | jnthn! \o/ | ||
jnthn | masak! \o/ | ||
d'y know, I just had a nice stout in Malmoe ;) | |||
masak | hey, me too! :) | 21:51 | |
jnthn | ooh, I can type Malmö now :) | ||
masak | that's better. | ||
sorear | mäsak, too? | ||
jnthn | yäs. | 21:52 | |
sorear | silly freenode not allowing utf-8 nicks | ||
anyways, jnthn, I was thinking about the "but" issue | |||
if we're going to allow things like $obj does (EXPR)($arg), then it's not really possible to improve on AST munging | 21:53 | ||
the nextterm solution would most likely restrict us to the identifier case, which I think would be Bad | 21:54 | ||
in particular I'm thinking of $obj does func($arg)($role-arg) ; you can't know where the role ends and the argument begins without using EXPR in some way | |||
jnthn | Well, it'd have to be more than the identifier case anyway, since you can supply a list of roles to compose | 21:55 | |
I've *no* idea how you'd initialize an attribute of them in that case though... | |||
21:56
PacoAir left
|
|||
masak | I don't think I would've preferred "mäsak". "masak" feels like my online identity, "mäsak" feels like my last name and the way someone would address me in military service... :) | 21:56 | |
moritz++ # ticket triaging | 21:58 | ||
fsergot | nom: say (1,2) Z (3,4) Z (5,6); | 22:01 | |
p6eval | nom 327fc9: OUTPUT«1 3 5 2 4 6» | ||
fsergot | nom: say (1,2) X (3,4) X (5,6); | ||
p6eval | nom 327fc9: OUTPUT«1 3 5 1 3 6 1 4 5 1 4 6 2 3 5 2 3 6 2 4 5 2 4 6» | ||
22:02
mj41 left
|
|||
colomon | niecza: say (1,2) Z (3,4) Z (5,6); | 22:07 | |
p6eval | niecza v13-149-gbf6b78c: OUTPUT«1 3 5 2 4 6» | ||
22:09
az5112 joined
22:13
Kharec joined
|
|||
Kharec | hi there | 22:13 | |
Kharec is a new perl6 adept :) | |||
tadzik | hello Kharec ! | 22:14 | |
Kharec | I'm building my rakudo for squeeze :) | ||
masak | hi Kharec! | 22:16 | |
az5112 | "1" + "1" = 2; "1" div "1" CHECK FAILED Calling 'infix:<div>' will never work with argument types (str, str) (line 1) | 22:17 | |
Is this by design? Why + works and div does not? | |||
(rakudo) | |||
Kharec | masak: hi | ||
masak | az5112: div only works on specific types, for example Int/Int. | 22:19 | |
jnthn | I think the spec has some language on that too. | ||
Kharec | maybe you can convert your str as int? | ||
masak | az5112: whereas the usual + - * / tend to coerce to Numeric first. | 22:20 | |
Kharec hasn't wrote any line of perl6 right now. I'm about to learn it. | |||
jnthn | Yes, just do .Int on it | ||
S03 says "Not coercive" for div | |||
az5112 | OK, I was expecting all operators would do type coercion. | ||
jnthn | Which suggests Rakudo is doing what the spec says here | ||
az5112 | Ok, just checking :) | 22:21 | |
And what is the best way to turn a string to an int (I multiplied by 1) | |||
Woodi | Kharec: you know Perl5 ? | ||
tadzik | nom: say "55".Int.perl | ||
p6eval | nom 327fc9: OUTPUT«55» | ||
tadzik | az5112: ^ | ||
az5112 | tadzik: thanks | 22:22 | |
Kharec | Woodi: Yes! I'm writing C, perl5 and python3 code | 22:23 | |
and a bit of C++ | |||
Woodi | so you will have no start problems with Perl6 :) | 22:24 | |
Kharec | I hope so, thanks :) | ||
Woodi | btw. why you just today want P6 ? :) | 22:25 | |
Kharec | It seems to be a very powerful and beautiful language :) | ||
It's not for professional purposes. | 22:26 | ||
Woodi | good :) so you can hobbystic help in development :) | ||
masak | nom: say (+"55").^name | 22:27 | |
p6eval | nom 327fc9: OUTPUT«Int» | ||
masak | az5112: that's another way. | ||
az5112: prefix:<+> "numifies", but it does it in quite a smart way and finds the narrowes type that'll fit. | |||
Kharec | Woodi: maybe. I've got a lot of job in dev yet, i'm a mageia contributor | ||
Woodi | Kharec: the central point of perl6 is documentation/specyfication. you can check it at perl6.org | 22:28 | |
masak | Kharec: Perl 6 is indeed powerful and beautiful. I don't think that much about it any more, except when I switch over to other languages :P | ||
Woodi | and ask here too | ||
Kharec | ok! Is there a complete PDF to learn it correctly? | 22:29 | |
Woodi | the enciclopedia size html pages :) | ||
22:29
fsergot left
|
|||
x3nU | there's book github.com/perl6/book/ | 22:30 | |
az5112 | masak: I first tried Int $aa and int $a (thought I say it somewhere on the web) but that did not work. "1".Int looks quite elegant. | ||
x3nU | and synopsis | ||
perlcabal.org/syn/ | |||
masak | az5112: 'Int $a' used to be the way you did casting. it's deprecated. | 22:31 | |
Kharec | thanks all! | ||
good night! | |||
22:31
Kharec left
|
|||
masak | phenny: tell Kharec may I humbly recommend strangelyconsistent.org/blog/june-1...and-output for learning Perl 6? all of the posts can be found at strangelyconsistent.org/blog/list-of-posts | 22:32 | |
phenny | masak: I'll pass that on when Kharec is around. | ||
masak | man, I need to build an index of those posts :) | ||
or even, *shudder*, a category system... | |||
22:48
Salaysia joined
22:51
fsergot joined
22:52
donri left
|
|||
fsergot | How can I calculata an expression contained in string? | 22:52 | |
e.g. "2+2" | |||
tadzik | either write an expression parser, or use eval :) | ||
Woodi | 2GB is to small to compile rakudo ?? | 22:53 | |
tadzik | shouldn't be | ||
close your web browser though :) | |||
fsergot | tadzik, would You like to show me how do it using eval? :) | 22:54 | |
tadzik | nom: say eval "2+2" | 22:55 | |
p6eval | nom 327fc9: OUTPUT«4» | ||
tadzik | that way I guess :) | ||
fsergot | nom: my $expr = "2+2; say eval $expr; | ||
Woodi | I compile remote, free 1500+ MB, OpenBSD | 22:56 | |
p6eval | nom 327fc9: OUTPUT«===SORRY!===Confused at line 1, near "my $expr ="» | ||
fsergot | ehh | ||
jnthn | missing @ | ||
er | |||
fsergot | nom: my $expr = "2+2"; say eval $expr; | ||
jnthn | missing " | ||
p6eval | nom 327fc9: OUTPUT«4» | ||
sorear | isn't the rakudo build around 3GB now? | ||
tadzik | is it? | ||
jnthn | Not heard anybody give that kind of figure | ||
sorear | dunno, I try to avoid building rakudo ... | 22:57 | |
tadzik | moritz was saying something about 1.8 some time ago | ||
22:57
pochi left
|
|||
jnthn | tadzik: Sounds more like it, for 64-bit. | 22:58 | |
Woodi | is such amount of memory realy necessary ? | ||
22:59
bkolera joined
|
|||
jnthn | Woodi: At the moment, that's what building Rakudo needs. I'll be less in the future. | 22:59 | |
Woodi | jnthn: you stated actual state :) | 23:00 | |
23:00
thou joined
|
|||
Woodi | but I say 'OK', becouse no idea how to help | 23:01 | |
jnthn | er, it'll be less... | ||
Woodi: Well, some of the top ROADMAP items will help. Beyond that I probably need to hack up a memory profiler to understand the usage better. | 23:02 | ||
Woodi | jnthn: I hoped about some magic-build-time-split-output trick... | 23:05 | |
jnthn | Woodi: I'd rather spend my time solving the real underlying issues. If Rakudo can't reasonably compile an amount of code the size of the setting without needing tricks, that's a problem. | 23:06 | |
Woodi | anyway two more notes from openbsd try: nqp test with parrot optimized failed on bigint test and something openbsd-security specific: pastebin.com/CrGXUQSW | 23:08 | |
no chance some Makefile-lvl changes can change mem usage ? | |||
tadzik | maybe if you remove --optimize=3? | 23:09 | |
jnthn | Woodi: no | ||
Woodi | tadzik: you saying about mem or bigint ? :) | 23:10 | |
tadzik | Woodi: mem | ||
jnthn | Woodi: (openbsd-security) if those functions are suitably portable, patches to switch to them are fine | 23:11 | |
Woodi | jnthn: at least two of them are strict openbsd. probably pragmas/macros in C code needed | 23:12 | |
jnthn | ah | ||
23:13
packetknife joined
|
|||
Woodi | I will try to look closer on that strlcpy/strlcat tomorow. | 23:14 | |
but now good night ppl | 23:15 | ||
tadzik | g'night | ||
jnthn | 'night, Woodi | ||
23:16
Salaysia left
|
|||
sorear | I'm not calling Perl 6 production-ready until it's possible to compile and load 100,000 lines of code in <256 MB of memory in 5 minutes or less | 23:20 | |
23:21
jferrero left,
jferrero joined
23:22
HarryS left
|
|||
masak | a reasonable goal, I think. | 23:22 | |
sorear: what's the memory consumption and total time right now? | 23:26 | ||
sorear | masak: I haven't tried on anything quite that large yet ... STD.pm6 (~6500 loc) takes just under a minute with about 300MB | 23:27 | |
actually it's probably more like 1.5 minutes now, compiler speed has regressed a bit and I'm not sure why :| | |||
(niecza) | |||
masak | so... 6.5 kLOC in 1.5 minutes. that would make 100 kLOC take 23 minutes. | 23:32 | |
23:32
az5112 left
|
|||
masak | so a 5x speedup would be required. | 23:32 | |
23:33
Mowah left
|
|||
masak | I wouldn't mind a page like perl6.org/compilers/features but for these kinds of numbers, and goals. | 23:34 | |
23:36
wolfman2000 left
23:39
ponbiki left
|
|||
colomon | sorear: have you looked at implementing parsing portion of the <2/3> change? right now it's causing failures in rat.t and complex.t. | 23:44 | |
dalek | ecza: 323ddd3 | sorear++ | src/ (2 files): Implement parser/translation for sub-signatures and where |
23:45 | |
ecza: 29d510e | sorear++ | lib/ (2 files): Refactor binder to allow binding standalone signatures |
|||
sorear | colomon: what parsing portion? | ||
colomon | niecza: say <2/3> | ||
p6eval | niecza v13-152-gfc233bd: OUTPUT«2/3» | ||
23:46
thou left
|
|||
colomon | niecza: say <2/3>.WHAT | 23:46 | |
p6eval | niecza v13-152-gfc233bd: OUTPUT«Str()» | ||
sorear | colomon: Why are you inserting <2/3> into the source code? | ||
colomon | I'm not. But the number tests check if you can eval the output of .perl and get the same thing | ||
sorear | oh, rat.t is using eval :( | ||
colomon | and right now, you can't in niecza | ||
sorear | rakudo: say <2/3>.perl | 23:47 | |
colomon | fudging it isn't a major issue, mind you | ||
p6eval | rakudo 327fc9: OUTPUT«"2/3"» | ||
sorear | I'll get on that later ... it depends on val() and constant folding, but I think i have those mostly figured out | ||
colomon | sorear++ | 23:48 | |
sorear | constant folding because I really don't want to make for <a b c> { ... } any slowe | ||
23:50
ksi left
|
|||
sorear | rakudo: sub foo(2) {}; foo(3) | 23:52 | |
p6eval | rakudo 327fc9: OUTPUT«Constraint type check failed for parameter '' in sub foo at /tmp/luUHmnf87I:1 in block <anon> at /tmp/luUHmnf87I:1 in <anon> at /tmp/luUHmnf87I:1» |