»ö« 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! | tinyurl.com/p6contest
Set by moritz_ on 28 December 2010.
00:00 jhuni joined
sorear pmurias: if 1 {} else -> $c {} # the else block is unreachable, so $c contains nothing 00:00
pmurias: if 0 {} else -> $c {} # $c contains 0
pmurias: if False {} else -> $c {} # $c contains False
pmurias: S04:293 00:01
dalek ast: 6ba8ab4 | pmurias++ | S04-statements/if.t:
fix the plan and fudging reasons
00:04
masak reading the tripe that HIB0U writes, I have an urge to optimize Rakudo out of *spite*. 00:05
masak takes a step away from reddit/p
colomon optimize! optimize! optimize!
Tene He's rather hateful. :( 00:06
coldhead haters are gonna hate 00:07
masak too bad our hugs don't reach all the way to reddit.
pmurias sorear: should we use a single repo on github instead of merging everything?
arnsholt That guy seems to be beyond help
sjohnson masak: haha
flussence I'd rather poison him with sugar-coated niceness, at least it'd make us look good in comparison :) 00:08
sjohnson hugme's bot only goes so far
masak flussence++
sjohnson err, hugs
arnsholt Too bad the name is actually kinda cool
masak flussence: even better, be *genuinely* nice to him.
flussence: that'll mess him up!
:P
flussence heh
colomon rakudo: my $a = 1 => 10; say $a.value++; say $a 00:11
p6eval rakudo : OUTPUT«10␤1 11␤»
sorear pmurias: sounds good 00:13
pmurias: done 00:14
masak sleep &
00:14 masak left
pmurias takadonet: doesn't the fibonnaci sequence start from 0? 00:20
00:20 rindolf left
sorear pmurias: you have push capability 00:21
colomon pmurias: that depends on who you ask. 00:22
pmurias colomon: ?
sorear pmurias: last two patches from you look good 00:23
colomon I've seen it given both as 0, 1 and 1, 1.
And at least one somebody today defined it as starting 1, 2
sjohnson OT Q: anyone recommend knuth's art of computer programming stuff? i'm looking to beef up my practical knowledge.
pmurias sorear: i did the pull request to see if i can merge my changes through the github gui
;)
00:25 hercynium left
TimToady rakudo: say 1/0 == 1/0; say 1/0 === 1/0 00:25
p6eval rakudo : OUTPUT«Bool::True␤Bool::False␤»
pmurias sorear: i'll merge by commits and finish the elsif ... -> ... tommorow 00:26
g'night
00:26 pmurias left, Patterner left 00:28 Psyche^ joined, Psyche^ is now known as Patterner
TimToady rakudo: say (1/0).WHAT === (1/0).WHAT 00:28
p6eval rakudo : OUTPUT«Bool::True␤»
TimToady thinks 1/0 === 1/0 ought to return True too
00:33 yarrak joined 00:36 molaf left 00:43 timbunce left
colomon 's head is swimming with the possibilities for masak's p4. 00:43
00:46 risou joined
fith rakudo: say 1/0 ; say 0/0 00:48
p6eval rakudo : OUTPUT«Inf␤Divide by zero␤ in 'infix:<div>' at line 3711:CORE.setting␤ in 'Rat::new' at line 4096:CORE.setting␤ in 'infix:</>' at line 4185:CORE.setting␤ in main program body at line 22:/tmp/PvoU4vyR_f␤»
fith rakudo: say 1/0
p6eval rakudo : OUTPUT«Inf␤»
fith rakudo: say 0/0
p6eval rakudo : OUTPUT«Divide by zero␤ in 'infix:<div>' at line 3711:CORE.setting␤ in 'Rat::new' at line 4096:CORE.setting␤ in 'infix:</>' at line 4185:CORE.setting␤ in main program body at line 22:/tmp/yDrLBDmG7b␤»
00:48 masonkramer joined 00:50 soroush joined
wolverian rakudo: class Foo { has $.bar } Foo.new 00:50
p6eval rakudo : OUTPUT«===SORRY!===␤Confused at line 22, near "class Foo "␤»
wolverian rakudo: class Foo { has $.bar }; Foo.new
p6eval rakudo : ( no output )
wolverian how do I mark an attribute as required?
00:50 soroush_ left 00:56 Patterner left
sorear rakudo: class Foo { has $.bar = die "bar is required"; }; Foo.new # beleive it or not, this is the current recommendation 00:59
p6eval rakudo : OUTPUT«bar is required␤ in <anon> at line 22:/tmp/eugwVfUQHX␤ in main program body at line 22:/tmp/eugwVfUQHX␤»
01:00 Tedd1 left 01:01 Psyche^ joined, Psyche^ is now known as Patterner
wolverian sorear: thanks. not the most obvious way. :) 01:02
01:05 am0c left 01:06 Patterner left 01:08 QinGW joined 01:12 roen joined 01:13 Psyche^ joined, Psyche^ is now known as Patterner
diakopter TimToady: is this still the proper type annotation for a fully/strongly-typed subroutine? or has another/better one arisen? Callable[:(--> int)] 01:18
well, for a closure 01:19
my $a = sub (--> int) { return 5 };
my Callable[:(--> int)] $a = sub (--> int) { return 5 }; 01:20
colomon rakudo: say 3 !%% 2 01:23
p6eval rakudo : OUTPUT«===SORRY!===␤Infix !% is deprecated in favor of infix %% at line 22, near "% 2"␤»
colomon std: say 3 !%% 2 01:25
p6eval std 625303c: OUTPUT«ok 00:01 120m␤»
01:33 awwaiid left, am0c^ joined 01:42 Patterner left, Psyche^ joined 01:43 Psyche^ is now known as Patterner
diakopter std: say 3 ![%%] 2 01:45
p6eval std 625303c: OUTPUT«ok 00:01 120m␤»
diakopter std: say 3 ![4] 2
p6eval std 625303c: OUTPUT«===SORRY!===␤Negation metaoperator not followed by valid infix at /tmp/_as7GXnWbh line 1:␤------> say 3 ![⏏4] 2␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤Parse failed␤FAILED 00:01 120m␤»
diakopter rakudo: say 3 ![%%] 2
p6eval rakudo : OUTPUT«Bool::True␤»
diakopter colomon: ^^ 01:46
colomon diakopter++
though 3 % 2 == 1 is probably clearer, and what I ended up using. :)
diakopter 3 % 2 coerced to bool is right too I think 01:47
arnsholt I've gone wih 3 % 2 == 1 01:48
(Assuming you're working on what I think =)
colomon would it be p4?
or rather, are you thinking p4? 01:49
arnsholt p2, actually
colomon oh, right, it was important for p2, too. But I finished that on my first day of vicodin haze.
01:50 Eth4n left
arnsholt Not sure I'll use modulo for p4, though 01:51
01:52 Patterner left 01:53 Eth4n joined
colomon rakudo: say [2 => 3, 4 => 5].grep(*.value ~~ 2..3).perl 01:57
p6eval rakudo : OUTPUT«()␤»
01:57 lichtkind left
colomon rakudo: say [2 => 3, 4 => 5].grep({$_.value ~~ 2..3}).perl 01:57
p6eval rakudo : OUTPUT«(2 => 3)␤»
02:04 ethan_ joined 02:05 ethan_ left, Psyche^ joined, Psyche^ is now known as Patterner, Eth4n left, Eth4n joined 02:10 Patterner left 02:20 roobie| joined, rgrau joined 02:22 Psyche^ joined, Psyche^ is now known as Patterner 02:24 cdarroch left 02:26 roobie| left 02:31 Patterner left 02:43 am0c^ left 02:46 Psyche^ joined, Psyche^ is now known as Patterner 02:51 lidden left 02:59 shi left 03:02 Patterner left 03:05 andmott joined
andmott Greetings 03:05
colomon o/
03:09 Psyche^ joined, Psyche^ is now known as Patterner 03:17 Tene left 03:18 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner 03:23 Patterner left
sorear hello andmott 03:24
std: 2.^&say
p6eval std 625303c: OUTPUT«ok 00:01 122m␤»
andmott hi
03:34 am0c joined 03:36 Psyche^ joined, Psyche^ is now known as Patterner
dalek ecza: 6dbdce4 | sorear++ | / (2 files):
Allow binding $/ and $! in signatures
03:38
ecza: b0d9226 | sorear++ | test2.pl:
Test for binding $/
ecza: b508f75 | sorear++ | / (4 files):
Implement method calls with computed names
03:48 Psyche^ joined 03:49 Patterner left, Psyche^ is now known as Patterner 03:56 awwaiid joined 03:58 stkowski left 03:59 Patterner left, Psyche^ joined
sorear Is $/.ast a lvalue? 04:00
04:01 Psyche^ is now known as Patterner
andmott Does perl6 change the concatenation operator from . to ~ ? 04:07
04:07 agentzh joined
flussence andmott: yes 04:08
also, appending a string to a variable is ~= in p6, which might seem confusing at first but it's really just the same thing as +=. 04:09
andmott Cool thanks 04:10
Do you know if the decision to change concatenate to another character was because of the . being used in obect oriented syntax? 04:12
04:12 Patterner left 04:13 cottoo joined 04:14 cotto left
sorear andmott: I think so 04:15
andmott cool 04:16
04:18 Psyche^ joined, Psyche^ is now known as Patterner
sorear andmott: it's probably in A02 04:20
(you have read the Apocalypses, yes?)
04:23 cottoo left, cottoo joined
lue hello! o/ 04:31
04:32 Patterner left 04:33 Psyche^ joined, Psyche^ is now known as Patterner
dalek ecza: 20bd9a4 | sorear++ | / (8 files):
Implement regex abstract objects
04:47
04:49 orafu left, orafu joined, Patterner left 04:51 Psyche^ joined, Psyche^ is now known as Patterner 04:57 Patterner left 05:06 Psyche^ joined 05:07 elliott joined 05:10 Psyche^ left 05:11 Psyche^ joined, Psyche^ is now known as Patterner
sorear std: class Foo; method parse($text, :$rule = 'TOP', :$actions) { } 05:16
p6eval std 625303c: OUTPUT«Potential difficulties:␤ $text is declared but not used at /tmp/iRcha9OIO5 line 1:␤------> class Foo; method parse(⏏$text, :$rule = 'TOP', :$actions) { }␤ok 00:01 123m␤»
05:16 Eth4n left 05:17 Eth4n joined, [Coke] left 05:22 Patterner left 05:28 Tene joined, Tene left, Tene joined 05:33 Psyche^ joined, Psyche^ is now known as Patterner 05:38 Patterner left 05:39 Psyche^ joined, Psyche^ is now known as Patterner 05:42 elliott left 05:46 am0c left 05:48 Patterner left 05:56 soroush_ joined, soroush left 05:57 felliott left
dalek ecza: ba795bf | sorear++ | / (4 files):
Implement action methods
06:09
06:10 plobsing left 06:13 kanishka joined 06:25 Psyche^ joined 06:29 Psyche^ left 06:30 Psyche^ joined, Psyche^ is now known as Patterner 06:35 cjk101010 joined 06:48 Alias joined 06:51 lue left 06:53 lue joined, kanishka left
sorear I wonder how I should expose File::Spec / FindBin like functionality in Perl6 06:54
06:54 kanishka joined 06:55 kaare joined 06:56 kaare is now known as Guest13644 06:57 Patterner left 07:04 bacek left, Guest13644 is now known as kaare_ 07:09 Psyche^ joined, Psyche^ is now known as Patterner 07:15 Patterner left
dalek ecza: 97134d2 | sorear++ | lib/CLRBackend.cs:
Reintroduce rawscall
07:20
07:53 nakashiman joined 07:54 nakashiman left 07:59 Psyche^ joined 08:00 Psyche^ is now known as Patterner
dalek ecza: 049d8e5 | sorear++ | / (4 files):
Add a native JSON interface
08:00
08:06 Gahrian joined
coldhead what does a .cs extension denote? 08:07
c sharp! i see 08:08
08:14 Patterner left
sorear yes 08:16
08:19 envi left 08:21 orafu left 08:22 orafu joined 08:24 envi joined 08:26 Chillance left 08:27 gimix joined 08:28 gimix left 08:35 Psyche^ joined, Psyche^ is now known as Patterner 08:39 BinaryImp joined, jimmy1980 joined 08:40 LeifD joined
LeifD in a sequence, 0,1, function ..., is it possible from inside function get at all the previous values? 08:43
08:43 Patterner left 08:48 kanishka left 08:51 Psyche^ joined, Psyche^ is now known as Patterner 08:55 Trashlord left 08:57 Trashlord joined 08:58 Patterner left 09:03 kanishka joined 09:12 sftp left, sftp joined 09:28 jhuni left 09:29 Psyche^ joined, Psyche^ is now known as Patterner 09:39 Alias_ joined, timbunce joined
moritz_ diakopter: go right ahead 09:39
09:41 Alias__ joined, Alias left 09:44 Alias_ left, justatheory left 09:45 Patterner left
moritz_ LeifD: if the function has a signature of *@a, yes 09:53
LeifD Thanks 09:54
moritz_ rakudo: .say for 'a', 'x', -> *@a { 'b' ~ @a.join } ... *.chars == 5
p6eval rakudo : OUTPUT«a␤x␤bax␤baxbax␤baxbaxbaxbax␤baxbaxbaxbaxbaxbaxbaxbax␤baxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbax␤baxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbax␤baxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxbaxba…
moritz_ rakudo: .say for 'a', 'x', -> *@a { 'b' ~ @a.join } ... *.chars > 10 09:55
p6eval rakudo : OUTPUT«a␤x␤bax␤baxbax␤baxbaxbaxbax␤»
moritz_ yes, stupid sequence, but it works
LeifD :)
09:58 roen left, Psyche^ joined, Psyche^ is now known as Patterner
moritz_ rakudo: .say for 1, 4, 9, * * 2 + 1 ... 100 09:59
p6eval rakudo : OUTPUT«(timeout)39␤79␤159␤319␤639␤1279␤2559␤5119␤10239␤20479␤40959␤81919␤163839␤327679␤655359␤1310719␤2621439␤5242879␤10485759␤20971519␤41943039␤83886079␤167772159␤335544319␤671088639␤1342177279␤2684354559␤5368709119␤10737418239␤21474836479␤42949672959␤85899345919␤171798691839␤34359738367…
10:03 QinGW left, Gertm joined 10:05 jimmy1980 left 10:08 Patterner left 10:09 Psyche^ joined, Psyche^ is now known as Patterner 10:14 Patterner left
sorear out 10:15
10:16 Gahrian left 10:17 lukas___ joined 10:30 soroush_ left 10:34 Psyche^ joined, Psyche^ is now known as Patterner, glow joined
LeifD is it possible to, inside a for loop, restart it? 10:41
11:03 timbunce left 11:14 roen joined 11:18 daxim joined 11:30 Patterner left 11:31 coldhead left 11:32 pmurias joined, Psyche^ joined, Psyche^ is now known as Patterner
lopnor hello #perl6, 11:37
I read www.reddit.com/r/perl/comments/dr8z...d_context/
where can i read specification about 'but' keyword/
?
11:41 agentzh left
pmurias the specs can be found at perlcabal.org/syn/ 11:50
lopnor ah,
i found this perlcabal.org/syn/S06.html#Properties_and_traits
is this that?
pmurias S14:287 11:51
perlcabal.org/syn/S14.html#line_287 that is 11:52
lopnor thank you!
that article suggests it is the replacement of wantarray in perl5, 11:53
is it okay to use ?
11:54 rgrau left
pmurias lopnor: where does it suggests that? 11:55
lopnor pmurias: www.reddit.com/r/perl/comments/dr8z...d_context/
here.
pmurias lopnor: you mean in the comments? 11:57
lopnor ah, sorry, yes. in the comment. 11:58
www.reddit.com/r/perl/comments/dr8z...xt/c12cyrp
this is the permalink for the comment that suggests 'but' for 'wantarray'. 11:59
11:59 Gertm left, roobie| joined
tadzik hmm, funny 12:00
rakudo: my @a = 1, 2, 3 but 'foobar'; say @a; say @a.perl; 12:01
p6eval rakudo : OUTPUT«123␤[1, 2, 3]␤»
tadzik rakudo: my @a = 1, 2, 3 but 'foobar'; say @a.Str
p6eval rakudo : OUTPUT«1 2 3␤»
tadzik rakudo: my @a = 1, 2, 3 but 'foobar'; say ~@a
p6eval rakudo : OUTPUT«1 2 3␤»
tadzik hrm, I wonder what moritz_ was up to
pmurias rakudo: my $a = 1,2,3 but 'foobar';say $a; 12:02
p6eval rakudo : OUTPUT«1␤»
pmurias lopnor: it seems that use of but isn't implemented yet
tadzik :)
lopnor mmm,
oh, 12:03
i wrote "return @a but @a[0];"
in my code 12:04
pmurias rakudo: sub foo {my @a=1,2,3,4;return @a but @a[0]};say foo()
p6eval rakudo : OUTPUT«1234␤»
pmurias rakudo: sub foo {my @a=1,2,3,4;return @a but @a[0]};say foo()+1
p6eval rakudo : OUTPUT«5␤»
lopnor so, it doesn't work:) 12:05
thank you for testing!
12:06 [Coke] joined
lopnor so, should i make new class that inherits array? 12:07
tadzik better think why do you really need this :) 12:08
lopnor I'm just porting perl5 codes including wantarray :) 12:09
tadzik ah
what code is that?
lopnor plack
tadzik oh!
lopnor web interface
dalek ecza: 7383a1c | pmurias++ | / (2 files):
Merge branch 'master' of github.com/pmurias/niecza
12:10
12:10 yarrak left
pmurias lopnor: i think you should just skip the wantarray part 12:10
lopnor multi keyword for method allows multi arguments, 12:11
colomon lopnor++
lopnor how about multi return types?
pmurias lopnor: if somebody is brave enough to implement that 12:12
it will allow that
lopnor so NYI?
ok, thank you so much for the guidances. 12:13
i'm doing my job porting plack on github.com/lopnor/p6-plackdo
please try that if you are interested in that. 12:15
thank you.
pmurias lopnor: re NYI i thought it's specced as conjenctural (things that might we would like but are not sure if are resonably implementable) maybe it's not specced at all 12:16
lopnor: but in general case it's hard for a subroutine to know it's expected type 12:17
lopnor yes, it would be
12:20 noganex_ joined 12:22 sftp left, sftp joined 12:23 noganex left 12:24 rgrau joined 12:25 adu joined, adu left 12:26 ggoebel left 12:27 espadrine joined 12:29 masonkramer left, masonkramer joined 12:31 ggoebel joined 12:35 sftp_ joined, sftp left 12:37 ggoebel left 12:39 soroush joined 12:40 uasi joined
uasi rakudo: my @a = 1, 2, 3; @a does 'foobar'; say ~@a; 12:40
p6eval rakudo : OUTPUT«foobar␤» 12:41
12:41 roobie| left
lopnor ちょw 12:41
12:42 ggoebel joined 12:45 noganex_ is now known as noganex
lopnor rakudo: my $a = [1, 2, 3]; say $a; 12:46
p6eval rakudo : OUTPUT«1 2 3␤»
12:47 mtk joined
lopnor rakudo: my $a = [1, 2, 3]; say ~$a; 12:47
p6eval rakudo : OUTPUT«1 2 3␤»
lopnor rakudo: use Test; my $a = <foo bar baz>; is $a, 'foo'; 12:48
p6eval rakudo : OUTPUT«not ok 1 - ␤# got: 'foo bar baz'␤# expected: 'foo'␤»
12:48 lukas___ left, sbp left, sbp joined
lopnor rakudo: use Test; my $a = [<foo bar baz>]; is $a, 'foo'; 12:48
p6eval rakudo : OUTPUT«not ok 1 - ␤# got: 'foo bar baz'␤# expected: 'foo'␤»
lopnor my @a = <foo bar baz>; $b = @a but @a[0]; say $b; say $b[2]; 12:51
my @a = <foo bar baz>; my $b = @a but @a[0]; say $b; say $b[2];
rakudo: my @a = <foo bar baz>; my $b = @a but @a[0]; say $b; say $b[2]; 12:53
p6eval rakudo : OUTPUT«foo␤baz␤»
lopnor this is what i needed. 12:54
12:56 mtk left
uasi lopnor: you should bind the return value like this 12:56
rakudo: sub foo() { my @a = <a b c>; @a but @a[0] }; @a := foo; say ~@a;
p6eval rakudo : OUTPUT«===SORRY!===␤Symbol '@a' not predeclared in <anonymous> (/tmp/mu65xQSerW:22)␤»
uasi sub foo() { my @a = <a b c>; @a but @a[0] }; my @a := foo; say ~@a;
oops 12:57
rakudo: sub foo() { my @a = <a b c>; @a but @a[0] }; my @a := foo; say ~@a;
p6eval rakudo : OUTPUT«a␤»
lopnor uasi: where is the spec on ':=' ? 13:00
13:00 risou left
lopnor sorry too many questions.... 13:01
13:02 roen_ joined, roen left 13:05 mtk joined
uasi lopnor: S03:2237 13:05
moritz_ := is probably in S03 (like all operators)
lopnor ah, i also grepped with "grep ':=' t -lr|grep bind"
thank you! 13:06
moritz_ you might also like 'ack', which is a perl based grep replacement which ignores .svn and .git dirs by default (among other things) 13:07
betterthangrep.com/ 13:08
lopnor year:)
moritz_ fwiw my "perl 6 in 2010" post attracted about 6k additional visitors on my website so far 13:14
13:14 mtk left
moritz_ so the effort was worth it 13:16
13:17 sftp joined 13:18 jimfuller joined, sftp_ left
dalek ast: a4cde9f | pmurias++ | S04-statements/if.t:
tests if the conditions of an if are checked in order
13:18
pmurias moritz_: should i remove useless uses of eval from the test suit 13:19
i.e. one that guard against parsefailures
moritz_ pmurias: if they are truely useless, yes
13:19 jimfuller left
moritz_ but beware that eval_{lives,dies}_ok also do other stuff: the execute in a different lexical scope 13:20
13:22 mtk joined
dalek ast: 6bbfbef | pmurias++ | S04-statements/if.t:
remove needless use of eval
13:32
pmurias moritz_: see commit for what i mean
moritz_ pmurias: but it doesn't test the same thing 13:33
it's fine
but it doesn't implicitly test the return value of the block as the old version did 13:34
is do { if ( my $x = 2 ) == 3 { $x } }, 2, '...'; would be the exact translation 13:35
13:40 robinsmidsrod left 13:47 BinaryImp left, felliott joined 13:51 cjk101010 left, cjk101010 joined 13:52 robinsmidsrod joined 14:04 envi left 14:21 am0c joined
pmurias moritz_: should Test.pm tests be part of roast? 14:25
[Coke] My daughter has a t-shirt with the fibonacci sequence on it - with cartoon bunnies for each number in the seq... 14:27
14:28 Axius joined
Axius perl6: say 24 * 34; 14:40
p6eval pugs, rakudo : OUTPUT«816␤»
14:44 glow left 14:49 wamba joined 14:52 wamba left 14:55 MayDaniel joined 15:08 wamba joined 15:12 uasi left 15:16 uasi joined 15:25 Patterner left 15:26 plobsing joined 15:30 espadrine left 15:39 rgrau left, rgrau joined 15:40 cjk101010 left 15:51 shi joined 16:07 glow joined 16:09 icwiener joined 16:10 mtk left
takadonet moritz_: good to hear that you got lots of visitors (backlogging) 16:13
pmurias sorear: does a Op::Let carry a performance cost? 16:14
16:14 mtk joined 16:24 Axius left 16:34 yarrak joined
[Coke] a perl5 wtf for your enjoyment: 16:35
thedailywtf.com/Articles/Classic-WT...nfamy.aspx 16:36
16:36 MayDaniel left
daxim <corelist> Time::Piece was first released with perl 5.009005 (released on 2007-07-07) # hmm, later than I remembered 16:38
16:42 andmott left
flussence
.oO( it'd be nice if there was an easy way to add printf format handlers )
16:54
pmichaud good morning, #perl6 16:55
flussence 'lo
dalek ar: 4610e67 | pmichaud++ | skel/docs/announce/2010.12:
Add 2010.12 release announcement text.
16:58
TimToady rakudo: my @a := (1, 2, 3) but 'foobar'; say @a; say ~@a; 17:01
p6eval rakudo : OUTPUT«123␤foobar␤»
TimToady tadzik: ^^ you had a precedence problem
17:03 shi left
dalek ar: 8af04bf | pmichaud++ | / (2 files):
Makefile and version number updates.
17:04
17:06 Psyche^ joined, Psyche^ is now known as Patterner
takadonet pmichaud: you are alive!!! 17:07
colomon star release! \o/ 17:08
(or at least, progress towards it)
dalek ast: f5d6fc8 | pmurias++ | S04-statements/if.t:
fudging for niecza
17:12
17:12 felliott left 17:13 timbunce joined
moritz_ pmurias: the question about "should Test.pm be in roast" gives rise to another question: "if yes, which?" 17:13
dalek ecza: a07a966 | pmurias++ | src/Niecza/Actions.pm:
imlemented else .. -> $foo {...} and elsif ... -> $foo {...}
17:15
pmichaud I expect each implementation of Perl 6 will have its own Test.pm while it's bootstrapping, and eventually converge to a largely shared copy
pmurias what i want to be in roast is Test.pm tests
pmichaud only if Test.pm becomes spec at some point 17:16
17:16 shortcircuit joined
pmichaud more to the point, only if the Test.pm API is spec 17:16
(which I think is reasonable)
moritz_ it needs to be, really
masak is working on it, I think 17:17
pmichaud I'm fine with starting the test suite before we have the spec :-)
moritz_ there are test.pm tests in mu 17:18
they just need to be reviewed and copied
pmichaud one of the earlier reviews of synopses chapters had testing as synopsis 24, fwiw 17:20
so the test.pm tests could go into roast/S24-...
17:23 snearch joined
dalek ecza: c9d17a7 | pmurias++ | lib/Test.pm6:
[Test.pm6] remove support for "plan *"
17:28
moritz_ why? 17:29
dalek ast: 472a495 | pmurias++ | S24-testing/ (9 files):
copy over S24-testing from mu
17:30
pmurias moritz_: what does plan * do?
moritz_ pmurias: it declares that you start testing, but without knowing the number of tests in advance 17:31
I often write scripts that have sub MAIN() { ... }; sub MAIN('test') { use Test; plan *; } 17:32
I expect the latter to produce a test error if no tests are run, and if no done_testing occurs
pmurias if no done_testing occurs there is a test error 17:33
moritz_ yes, but only if you plan *;
pmurias no
moritz_ if you don't plan anything, why should it be an error?
pmurias the tap harnesses raise one
by running a test file you start testing 17:34
plan * is a noop with TAP 17:35
moritz_: there even is no such thing in Test::More 17:36
17:36 cdarroch joined, cdarroch left, cdarroch joined
moritz_ should read TAP specs 17:38
colomon Speaking of testing, what's the status of ufo these days?
takadonet colomon: works for me for my modules 17:39
[Coke] pmurias: "no_plan" 17:40
?
colomon I was thinking it might make sense to enhance it with a new testing rule: Scripts in the "bin" subdirectory that contain the string 'MAIN("test")' should also be tested when you issue "make test".
pmurias [Coke]: no_plan is deprecated
[Coke]: we don't want that in Perl 6 at all
colomon is really loving having test code in his scripts, too, using the MAIN("test") 'trick' 17:41
pmurias [Coke]: done_testing is the no_plan replecement 17:42
* replacement 17:46
17:47 kanishka left 17:48 sftp left, timbunce left 17:49 estrabd joined 17:54 sftp joined
colomon rakudo: <a b c>.kv.grep(*.value eq 'b').perl.say 17:54
p6eval rakudo : OUTPUT«Method 'value' not found for invocant of class 'Int'␤ in <anon> at line 22:/tmp/MQa179li0N␤ in <anon> at line 22:/tmp/MQa179li0N␤ in 'Block::ACCEPTS' at line 6061:CORE.setting␤ in <anon> at line 1491:CORE.setting␤ in <anon> at line 1␤ in 'Any::join' at line 1␤ in 'List::perl…
colomon rakudo: <a b c>.kv.grep(-> $key, $value { $value eq 'b'}).perl.say
p6eval rakudo : OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in <anon> at line 2:/tmp/zf7niq0yBg␤ in 'Block::ACCEPTS' at line 6061:CORE.setting␤ in <anon> at line 1491:CORE.setting␤ in <anon> at line 1␤ in 'Any::join' at line 1␤ in 'List::perl' at line 2772:CORE.setting␤ i…
colomon rakudo: <a b c>.pairs.grep(*.value eq 'b').perl.say 17:55
p6eval rakudo : OUTPUT«(1 => "b")␤»
17:55 am0c left 17:58 sftp left, roen_ left 18:03 shi joined
colomon Ack, where's Damian's super-prompt in p6 when you need it? 18:03
moritz_ on github
colomon is it?!?
moritz_ github.com/pmichaud/io-prompter 18:04
TimToady rakudo: say pick 1,2,3,4,5; say pick 1..5
p6eval rakudo : OUTPUT«3␤␤»
colomon is it working atm?
moritz_ might need some polishing to work with curerrent rakudo
TimToady ^^bug
flussence I have a silly idea, what do you guys think? gist.github.com/760066 18:05
moritz_ submits rakudobug
flussence: might need a :g here and there 18:06
or maybe .trans instead of .subst
18:06 justatheory joined
moritz_ yes, should be trans 18:07
flussence yeah, that part was just there as filler :)
colomon has to decide whether to let io-prompter distract him from p4 right now...
moritz_ colomon: I didn't really write a proper UI for p4 18:08
and if somebody enters something invalid, there's an error, and he/she can restart the game :-)
18:08 timbunce joined
colomon that would certainly make matters easier. 18:08
[Coke] the io_prompter code doesn't run. Can one change INC from the rakudo command line? 18:09
moritz_ [Coke]: not yet, only with @*INC.push or PERL6LIB=...
rakudo: use Test; ok 1, "a\nb";
p6eval rakudo : OUTPUT«ok 1 - a␤b␤»
moritz_ that's a bad idea 18:10
should produes ok 1 - a\n# b
[Coke] lots of Useless declaration of has-scoped regex in a module; add our or my to install it in the lexpad or namespace
18:10 kaare_ left 18:11 kaare_ joined
pmichaud someone please file TimToady's pick bug, if not filed already 18:14
moritz_ 19:05 * moritz_ submits rakudobug 18:15
dalek ecs: 7a4e195 | moritz++ | S24-testing.pod:
Very draft-y, very early S24 - testing

It is mostly meant as an encouragement for others to fill out the gaps. If you want to do so, and don't have commit access yes, please tell me your github ID.
pmichaud moritz_++ (didn't see that, thanks)
18:16 pmurias left
colomon rakudo: say +" 42" 18:17
p6eval rakudo : OUTPUT«42␤»
18:17 pmurias joined
pmurias moritz_: why do want to have 'plan *' as it's a nearly a noop in rakudo's Test.pm too 18:18
?
moritz_ pmurias: because it's used quite often in the test suite 18:19
or at least it was used often last I looked
flussence I see it as the test equivalent of "..."
colomon finally managed to beat his p4 code after three tries.
pmurias moritz_: it can be removed with no loss
flussence (maybe it *should* be "plan ...;") 18:20
pmurias it should be removed
it's cargo culted from before done_testing existed
moritz_ pmurias: so you keep saying, and I kinda agree. Still I'd like to have a way to start testing without knowing the number of tests somehow
flussence it'd be more useful to replace the * with \d+, but I see your point :)
pmichaud would anyone object to pmurias removing all of the "plan *" from the test suite? 18:21
moritz_ and it seems to me that plan * should be the way
pmichaud forgiveness > permission, if so
moritz_ would not object
flussence can test files be split up into small countable sections and * parts, or is it a single plan per file? 18:22
(though I guess that's an argument for splitting up the files themselves)
moritz_ flussence: I think there's recent-ish support for subtest groups in TAP, but I don't really know anything about it 18:23
dalek kudo: 80c16ae | moritz++ | Test.pm:
[Test.pm] restrict types of first arg to {eval_,}{lives,dies}_ok
18:27
kudo: a52525d | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get some testing
[Coke] moritz_: danke. didn't get around to rerunning spec test after exit fix.
dalek ast: c1e0191 | pmurias++ | / (26 files):
remove plan *
18:28
18:31 timbunce left 18:34 s1n joined 18:37 wamba left 18:47 zby_home joined
dalek ecs: 0f0b553 | pmurias++ | S24-testing.pod:
remove the mention of "plan *"
18:52
pmurias moritz_: plan * is exterminated ;)
18:53 sftp joined 18:54 macikgoz joined
moritz_ \o~ 18:55
TimToady your beret blew off 18:56
18:56 shi left 18:57 JodaZ left
[Coke] wonders if TimToady is following him on facebook, else how could he know about the beret. 18:57
. o O (perhaps I've said too much) 18:58
colomon moritz_: I'm declaring my p4 done enough for now.
pmichaud beret?
moritz_ colomon: then I should submit mine too :-) 18:59
colomon: I can always do a second submission if necessary
colomon moritz_: I haven't submitted anything yet, as far as I know he's not factoring in development speed, is he?
moritz_ colomon: no 19:00
colomon I'm figuring I'll try to get the last one (p5) done ASAP, then go back over the next couple of weeks and clean them up some.
dalek ecs: c923c6b | TimToady++ | S11-modules.pod:
EXPORT lives in lexical pad, not package

The EXPORT subpackage always lives in the lexical scope, and is not added to the package scope unless you explicitly request it.
pmurias TimToady: speccing Test.pm is ok?
19:01 aloha joined
TimToady that's okay for now, but I'd still like to get to a model someday where the tests can be written with native Perl 6 comparison operators 19:01
colomon you mean like ok test1 eq "desired results", "test1 works" 19:02
TimToady this might involve teaching fudge to do certain macro-ish transformations so that the values and operators are available to the message 19:03
moritz_ more like TEST $got eq $expected, "because I say so";
TimToady until an implementation can handle the macro-ish thing natively
[Coke] ASSERT condition :"reason" :SKIP
TimToady
.oO(uglification, derision...)
19:04
19:04 perimosocordiae joined
moritz_ the important part is that TEST should have access to $got and $expected, not just Bool::True or Bool::False 19:04
TimToady so it really needs access to the parser at the point of reducing the comparison op; but fudge could fake it in most cases 19:05
colomon could you just overload operator eq in Test.pm to get that? 19:06
TimToady but then how would it do the desired op instead of "eq"? 19:07
19:07 macikgoz left
colomon huh? 19:07
TimToady s/do/know to do/
colomon I'm assuming (for example) that eq is the desired op.
colomon is now wondering if a new Top metaop would be better... ;) 19:08
moritz_ TimToady: it would be the top level operator
TEST ?$foo -> top level op is prefix:<?> 19:09
TimToady well, sure, if we're doing it right
but that's where you need control of the parse
we could hardwire a macro into the language before we have general macro facilities 19:10
or we could fake it with fudge for now
in cases of ambiguity we could even force use of [op] to give fudge something to search for 19:12
pmichaud I think I'm making a command decision to move Rakudo's home away from its present hosting on rakudo.org
maybe testing should be a meta op :-)
TimToady Teq
sets $*GOT and $*EXPECTED :) 19:13
colomon now realizes that "colomon is now wondering if a new Top metaop would be better... " might have been interpreted as "top" rather than "T-op"
*T[op]
[Coke] AH.
pmichaud for some reason I'm selectively not-seeing the /me posts
moritz_ ok $got Teq $expocted
pmichaud they're there, I'm just not seeing them 19:14
19:14 Lorn joined
pmichaud anyone have any objections to hosting rakudo.org (or its new equivalent) on wordpress.com ? 19:15
or any other suggestions?
moritz_ is fine with wordpress.com
pmichaud maybe I'll bring it up during #phasers on Tue
I'll see about creating the new site, then propose it as a replacement 19:16
instead of having to ask people to decide a-priori
however, before I spend much time porting things to wordpress, I'd like to hear from other regular contributors if they have a preferential cms that we should use 19:22
colomon I've been very happy with wordpress.
specifically wordpress.com
pmichaud anyway, 2010.12 released :-) 19:23
colomon but I'm not exactly a hardcore power user of it.
\o/
[Coke] any changes since .11?
commits list on the compiler has been pretty quiet.
pmichaud not any significant ones
I've been pretty-well distracted the past few months 19:24
but doing the release today makes me itch to make some improvements
[Coke] I'm not trying to single you out. ;) 19:28
[Coke] will save that for the grant. ;) 19:29
19:29 Eth4n left, g3oM1 joined
colomon you're looking for a grant which singles out pmichaud ? ;) 19:30
"I proposal to keep pmichaud's nose to the grindstone throughout 2011."
19:32 glow left
pmichaud afk, errands 19:36
19:40 Eth4n joined, Eth4n left, Eth4n joined
moritz_ TimToady: sub pick has the signature ($num, *@values). So pick 1..4 can't work the way you want it to... what's the proper fix? 19:47
19:48 sftp left, sftp joined 19:53 daxim left
TimToady moritz_: hmm, you're right, probably notabug 19:53
colomon rakudo: say pick 4, 1..10 19:55
p6eval rakudo : OUTPUT«91106␤»
TimToady rakudo: say pick <== 1..10 19:56
p6eval rakudo : OUTPUT«Not enough positional parameters passed; got 0 but expected at least 1␤ in 'pick' at line 1811:CORE.setting␤ in main program body at line 22:/tmp/S_t0Kw8ph0␤» 19:57
19:58 MayDaniel joined, uasi left
moritz_ rakudo: say pick 1 <== 1..10 20:00
p6eval rakudo : OUTPUT«Any()12345678910␤»
moritz_ doesn't seem to curry properly
feed operator implementation is *VERY* basic in rakudo 20:01
20:01 Axius joined 20:15 robinsmidsrod left
flussence something broke that wasn't before 20:15
get_attr_str() not implemented in class 'Sub' in main program body at line 1:t/spec/integration/advent2009-day18.rakudo
just built that rakudo too. 20:17
20:17 robinsmidsrod joined
moritz_ with the recommended parrot rev? 20:18
flussence that's from that commit you just made, yeah
This is Rakudo Perl 6, version 2010.12-5-ga52525d built on parrot 2.11.0 RELEASE_2_11_0-343-g0264a39
moritz_ all clean here 20:19
flussence hm
colomon is building latest on his 64-bit box -- so he can check on the error without slowing down p5 development. ;) 20:20
20:21 dsp_ left
flussence wow, typing "50%" as a command in vim does exactly what it looks like. never knew that 20:23
moritz_ what else should it do? :-) 20:24
flussence I was trying all sorts of combinations of g prefixes, never thought to try the obvious...
sorear good * #perl6
moritz_ good now, sorear 20:25
20:26 glow joined
flussence aha, that test breaks on line 30... 20:27
dies_ok should be eval_dies_ok 20:29
sorear pmurias: Op::Let is not quite free, correct 20:30
pmurias sorear: hi
TimToady sorear: is_name was only for sigilless names, while is_known was for sigiled names. I don't know what other differences there might be. They could probably be merged... 20:31
20:33 envi joined
pmurias sorear: not sure if i should attempt to emit Op::Let only where nessesary or should we make the optimizer take care of such stuff 20:33
20:37 perimosocordiae left 20:38 perimosocordiae joined 20:39 dsp_ joined
sorear pmurias: Op::Let is semantically unpleasant, so its use should be minimized 20:41
pmurias: there's definitely room for a copy propagation pass, though; lower levels call CgOp::letn quite a bit
pmurias what does semantically unpleasant mean? 20:42
sorear variables introduced by Op::Let are not visible in closures, cannot be found using &caller, etc 20:43
TimToady it means if you like it you have no taste :)
allbery_b or you need to step away from the keyboard 20:44
pmurias sorear: that's good, having the compiler add new lexicalls visible to the user just to avoid evaluating something twice seems very wrong 20:46
allbery_b hm 20:47
strikes me that (1) this being perl, as much of the machinery as possible should be visible (if not easily); (2) this being perl 6, said machinery should be well behaved 20:48
moritz_ it strikes me that if you make too much of the internal workings of a Perl 6 compiler visible, you're torturing the innocent programmer beyond healing 20:51
20:53 wamba joined 20:54 jdv79 joined, wamba left
jdv79 jnthn: what happened to 6guts? i iamgine you're overwhelmed with the multiplatform stuff:) 20:54
20:54 wamba joined
pmurias 6guts? 20:55
jdv79 his blog
moritz_ jdv79: jnthn has been absent from p6 hacking for a while, so no wonder he didn't blog more
jdv79 oh
well, it makes sense then. thx. 20:56
pmurias allbery_b: actually i find it a great feaute of Perl 6 that it doesn't expose a naive dynamic implementation 20:58
21:00 mtk left
lue hello #perl6 o/ 21:03
21:05 RapierTG joined 21:06 glow left, RapierTG left 21:09 araujo left
TimToady rakudo: my $a = 1; $a //= say "oops"; 21:13
p6eval rakudo a52525: OUTPUT«oops␤»
TimToady that's one of the more irritating not-fixed-yet bugs, given how useful it is for caching 21:14
21:14 MayDaniel left
TimToady pugs: my $a = 1; $a //= say "oops"; 21:14
p6eval pugs: ( no output )
TimToady niecza: my $a = 1; $a //= say "oops";
p6eval niecza : OUTPUT«Cannot open assembly '/home/p6eval/niecza/obj/CLRBackend.exe': No such file or directory.␤"mono" unexpectedly returned exit value 2 at (eval 43) line 13␤ at /home/p6eval/niecza/src/CompilerDriver.pm line 265␤»
TimToady hmm
pmurias niecza: say 1; 21:15
p6eval niecza : OUTPUT«Cannot open assembly '/home/p6eval/niecza/obj/CLRBackend.exe': No such file or directory.␤"mono" unexpectedly returned exit value 2 at (eval 43) line 13␤ at /home/p6eval/niecza/src/CompilerDriver.pm line 265␤»
moritz_ niecza build fails
lib/CLRBackend.cs(421,38): error CS0411: The type arguments for method `Niecza.CLRBackend.JScalar.A<T>(int, object, System.Func<object,T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
21:27 Layla joined
tadzik ah, thanks timtoady 21:30
21:31 HarryS joined 21:34 masak joined
masak ahoy, zebras! \o/ 21:34
moritz_ good zebratime!
masak moritz_++ # S24 draft
Just Ducking Fooing what I've only talked about doing so far. 21:35
I'll see what I can do in terms of a rw review :)
tadzik masak: hey zebra :)
21:36 M_o_C joined
masak by the way, I think it's silly that S24 doesn't version itself, when all other synopses do. either we believe in versioning the synopses, or we don't. 21:36
21:37 araujo joined 21:39 Layla left
pmichaud 21:36 <masak> by the way, I think it's silly that S24 doesn't version itself, when all other synopses do. either we believe in versioning the synopses, or we don't. 21:44
which does masak++ believe?
and which does TimToady++ believe?
sorear moritz_: it seems that generic type inference was improved between mono 2.6 and mono 2.8
masak pmichaud: hm, I don't feel my opinion should weigh very heavily here...
sorear moritz_: and I accidentally relied on the 2.8 improvements 21:45
masak pmichaud: I neither believe or don't believe in those version numbers. maybe someone else has a use for them. I don't.
sorear moritz_: would you be willing to try again with a patch?
pmichaud masak: right -- I tend to think of git and/or svn revision numbers to be more useful
knowing the date of the last significant change is sometimes useful
but a revision number by itself seems less-than-useful at this point.
masak pmichaud: having said that, I'll happily keep updating them every time I make a significant patch to a synopsis. I'm simply not that bothered by the version numbers.
pmichaud: what I was arguing against was using it for some synopses but not for others. 21:46
pmichaud I'd say to live with the inconsistency for now, until someone cares enough to push it one way or the other :-)
masak will try :)
pmichaud since TimToady++ seems to keep them them up-to-date in some sense, I'd go with that for now :)
sorear o/ pmichaud 21:47
pmichaud o/ sorear 21:48
I'm glad to see niecza continues to progress
and I was especially happy to see the p6c announcement earlier this month
21:49 Eth4n left
sorear moritz_: does gist.github.com/760355 improve matters? 21:50
21:53 glow joined
moritz_ sorear: yes, it makes the build complete 21:54
niecza: say 1
p6eval niecza v1-35-gc9d17a7: OUTPUT«1␤»
masak pmichaud: I'm very happy about it too. niecza is the first Little Implementation that I feel I want to use for daily work.
niecza: say []
p6eval niecza v1-35-gc9d17a7: OUTPUT«␤»
masak rakudo: say [] 21:55
p6eval rakudo a52525: OUTPUT«␤»
moritz_ perl6: say 1 21:56
p6eval pugs, rakudo a52525: OUTPUT«1␤»
21:56 snearch left
masak hm, maybe add niecza there...? 21:56
moritz_ just what I thought :-)
21:57 Eth4n joined, soroush left
dalek albot: e94878e | moritz++ | evalbot.pl:
add niecza to "perl6:" list
21:57
colomon subclasses work in Rakudo, right?
moritz_ right 21:58
21:58 g3oM1 left
colomon p5 is making me go to ludicrous lengths at the moment. 21:59
dalek albot: 0dd2ef9 | moritz++ | / (2 files):
random script changes picked up from local p6eval modifications on the server
22:00
moritz_ evalbot control restart
22:00 p6eval joined, ChanServ sets mode: +v p6eval
moritz_ perl6: say 2 22:00
p6eval pugs, rakudo a52525, niecza v1-35-gc9d17a7: OUTPUT«2␤» 22:01
masak colomon: you haven't been using subclasses? have you only been using classes for their instantiation capabilities? 22:02
22:02 jhuni joined
colomon masak: we might be having a terminology problem. I mean, do classes local to classes work in Rakudo? 22:02
masak "inner classes"? 22:03
colomon though it's probably been a good six months since I've said "class A is B" in serious p6 code.
if you wish, sure.
masak ISTR that inner classes have some implementation problems still in Rakudo.
A12 posits that they be virtual, which I think is an idea still worth considering. 22:04
but it's not spec.
moritz_ afaict lexical classes work, but addressing inner classes is sometimes problematic
masak right. 22:05
rakudo: .say for " H", "OH" ~ * ~ "AI" ... *.chars > 10 22:09
p6eval rakudo a52525: OUTPUT« H␤OH HAI␤OHOH HAIAI␤OHOHOH HAIAIAI␤»
masak \o/ 22:10
new mini-contest: find inspiring and out-of-the-box uses of the sequence operator!
not just maths!
(no Amazon price this time, though)
*prize 22:11
cloud.github.com/downloads/rakudo/s....12.tar.gz gives a 403, as reported by lopnor++: twitter.com/lopnor/status/20574367729590273 22:12
pmichaud: ^
pmurias sorear: after reading doc/nam.pod, why should the core library define custom primitives instead of using the call CLR ops? 22:17
masak flussence: gist.github.com/760066 is intriguing. the nice thing about Perl 6 is that such things don't have to be built-in. that can all be done through a module that exports a sprintf multi with a :$class! named param. 22:18
flussence: I think the commas in your .trans calls should really be => 22:19
oh, and the latter two should have array []s around the strings.
see perl6advent.wordpress.com/2010/12/2...nd-beyond/ :) 22:20
flussence: also, if I were you, I'd do :class(Fmt::HTML), not :class<Fmt::HTML> 22:21
reason: compile-time checking of typenames. 22:22
pmichaud afk, returning home 22:24
masak hm. I see you people discussing test syntax in the backlog. I think it's really hard to beat &ok and pals. 22:26
but here's an idea I just had:
# hypothetical test code 22:27
lue
.oO(figures. The second I turn away from my IRC window for an extended period of time, activity blossoms. Second hello to #perl6 ! o/)
masak test { thing1() == $desired-result; thing2() == $other-desired-result; }
it's a 'test' block, a bit like a 'try' block. 22:28
it overloads all the comparison operators so that they behave differently, at least in sink context.
(how they know they're in sink context is left as an exercise to someone with a different hat on) :)
Tene masak: instead of overloading comparison operators, it could emit TAP for the rv of every statement. 22:29
test { check-a(); check-b(); $foo == 20; }
masak Tene: I couldn't parse what you wrote after "TAP".
Tene masak: each statement is an implicit ok()
masak Tene: 'rv'? ah, "return value".
yes, perhaps that's an even better idea. 22:30
Tene Yeah, I oa'd there. (over-abbreviated)
masak :P
I'm pondering how to get test descriptions into this nicely, though.
would comments be kosher?
I guess it's fair game since it's an altered language.
Tene masak: Comments wouldn't be horrible. A string argument to the test block wouldn't be horrible.
masak Tene: string argument to the test block could work, as long as the syntax makes sense. 22:31
test("testing flooblebarz")
Tene test "the stuff is good" { ...; ...; ...; }
masak and then it generates test messages for each test with increasing numbers.
Tene: yes, what you wrote. 22:32
22:32 shi joined
masak otherwise it looks like a function call. 22:32
I think we cracked it. :)
ship it!
Tene You can determine the number of tests by counting the number of statements at compile-time.
masak \o/ 22:33
unless there are for loops...
Tene Hmm... true... but you can detect the cases where you don't know.
22:33 soroush joined
masak yeah. 22:33
Tene You can also ignore places where the rv is actually used, simple assignments and the like. 22:34
That might be getting a bit too clever, though.
masak I'd argue for keeping those things out of test {} blocks.
Tene Fair enough. 22:35
masak maybe hiding could be accomplished by test { ...; INIT { ... }; ... } or something.
dalek ecza: 769101c | sorear++ | lib/CLRBackend.cs:
Avoid relying on 2.8-only inference
22:39
sorear pmurias: the call instructions are inherently CLR specific 22:40
22:41 zby_home left
lue backlogs to grok the conversation 22:42
pmurias sorear: but having a kitchen-sink pir like list of opcodes doesn't seem a very good option either
masak ok, the test-block idea is the first testing syntax that I consider to be an improvement on &ok et al. looking forward to when some implementation (niecza and/or rakudo) supports that level of slanging. 22:43
pmurias masak: test-block idea? 22:44
masak <masak> test { thing1() == $desired-result; thing2() == $other-desired-result; }
Tene masak: I really wish I had the time and energy to work on that. That's been fascinating to me for at least a year now. 22:45
masak Tene: me too. it's the edge Perl 6 will really have on other scripting languages. I wish I understood more about Rakudo internals to be able to push things forward.
22:47 ggoebel left
Tene masak: I understand it well enough, but I have trouble committing to a project that big. 22:47
masak has trouble committing long-term to a hobby project of any size :) 22:48
people actually using the stuff helps, though. proto and ufo found happy users.
sorear me too. 22:49
Tene back about a year ago, I was considering spending a month down in texas with pm, working on this.
masak I believe GGE might have been more of a success if people had known what to use it for. :)
Tene: sounds awesome.
Tene Didn't work out that way, unfortunately.
pmurias masak: re the test-block syntax how would you declare stuff in the block?
masak Tene: still not too late, I guess. 22:50
pmurias s/declare/set up/
sorear masak: if you can get me a concrete spec ...
masak pmurias: good question.
sorear: I'll see what I can do.
pmurias because it seems to just invert the setting up and testing
Tene pmurias: you'd do it outside the test block, or you'd inspect and ignore assignments.
sorear Perl 6 implementations already have to have a certain level of macroish behavior
&infix:<||> cannot be written as a sub as specced
sorear reads S24 22:51
masak Tene: just feels a bit inelegant to have to do { my $var1 = ...; my $var2 = ...; test { ...; ...; ...; } }
Tene masak: Sure.
masak maybe excluding assignments isn't such a bad idea.
pmurias is test {...;...;...} much better than test ...,...,... ? 22:52
22:52 ggoebel joined
masak hmmm. 22:52
pmurias test $a == 2,cond(),foo() > 5; ?
lue What reason is there for changing the test syntax? I didn't quite catch it, other than "make it better".
Tene pmurias: grammar changes are lexically-scoped.
moritz_ S24 isn't really a draft - it's a skeleton that you can start to fill in
lue: one reason is that currently there's only is() and is_deeply as comparison functions, and they are quite peculiar regarding their comparison function 22:53
pmurias Tene: what i'm suggesting is that having a multi argument ok is the same thing as the test block
moritz_ is() is string comparison, is_deeply() is infix eqv
Tene pmurias: Maybe. You'd have some trouble fitting a for loop in there, though.
moritz_ what about == and === and =:= and < and <= and lt and ~~ and .... 22:54
pmurias i'm not sure skipping ok is worth introducing a DSL
Tene pmurias: Sure. I don't think anyone here is asserting that it's obviously better. They're just trying to explore more of the solution space. 22:55
pmurias if we have macros we could replace is $foo,4 with ok $foo == 4
and still have good error messages 22:56
22:56 ggoebel left
lue I have a test that dies and stops the rest of the file from running. Would skip/todo be a better alternative than commenting it out? 22:57
22:57 skangas joined
sorear lue: lives_ok would be better 22:58
22:59 espadrine joined, espadrine left 23:00 jarfhy left
dalek ecs: fd2b8d3 | masak++ | S24-testing.pod:
Rewrote "Test plans" a bit

No fundamental changes, just wording.
23:01
masak oh, and I also added VERSION information... :)
23:02 ggoebel joined, skangas left 23:03 cdarroch left 23:04 skangas joined
lue lives_ok didn't help. It dies because the specific token I'm trying to use is NYI 23:05
23:05 Rhisa joined 23:06 Axius left, jarfhy joined, MysqlForumTroll joined
MysqlForumTroll Why isn't this Perl? 23:06
tadzik hugme: hug MysqlForumTroll
hugme hugs MysqlForumTroll and blushes
flussence put a bit more effort into it, we've heard them all :)
MysqlForumTroll Why can't I use a y-combinator in perl6? 23:07
sorear User error, I guess 23:08
23:08 skangas left
MysqlForumTroll I guess perl6 isn't for me then. 23:09
23:09 skangas joined
masak MysqlForumTroll: hi, you seem to have been reading reddit or HN. 23:10
it's not that you *can't* use a Y combinator in Perl 6. you certainly can.
flussence or possibly /., or 4chan
masak but you don't need to.
sorear niecza: sub y($f) { -> $x { $f(y($f), $x) } }; say y(sub (&fib, $x) { $x <= 1 ?? 1 !! fib($x-1) + fib($x-2) }, 5)
p6eval niecza v1-35-gc9d17a7: OUTPUT«Unhandled exception: Excess arguments to MAIN y, used 1 of 2 positionals␤ at (eval) line 0 (MAIN y @ 0)␤ at (eval) line 1 (MAIN mainline @ 1)␤ at /home/p6eval/niecza/lib/SAFE.setting line 1064 (SAFE C381_ANON @ 1)␤ at /home/p6eval/niecza/lib/SAFE.setting line 1064
..(SAFE module-…
sorear niecza: sub y($f) { -> $x { $f(y($f), $x) } }; say y(sub (&fib, $x) { $x <= 1 ?? 1 !! fib($x-1) + fib($x-2) })(5)
p6eval niecza v1-35-gc9d17a7: OUTPUT«8␤»
masak sorear++
sorear niecza: sub y($f) { -> $x { $f(y($f), $x) } }; say y(sub (&fib, $x) { $x <= 1 ?? 1 !! fib($x-1) + fib($x-2) })(7)
p6eval niecza v1-35-gc9d17a7: OUTPUT«21␤» 23:11
23:11 kaare_ left
masak MysqlForumTroll: there's your Y combinator. 23:12
sorear perl 6 is an eager language, so you need an η-converted Y combinator
MysqlForumTroll Cool
masak MysqlForumTroll: anything else we can do for you?
sorear that's the most likely error
masak we have more hugs, if you want.
MysqlForumTroll I only accept hugs from Madonna. 23:13
masak :)
MysqlForumTroll But I'm going to browse some Perl 6 syntax
23:13 wamba left
masak that's a wise policy in these troubled times. 23:13
23:13 ggoebel left
MysqlForumTroll What's a good async nginx module for Perl6? 23:14
sorear dreams of an easier way to type η
masak MysqlForumTroll: we're just booting up our module ecosystem, so there might not be one.
MysqlForumTroll: but you have reasonably good chances of hooking up with Perl 5 using something called 'blizkost'.
MysqlForumTroll masak: How are you guys doing web apps right now?
flussence sorear: altgr+g = ŋ (on my keyboard, in X11, gb layout)
masak poorly :/
tadzik or in a funny way 23:15
:)
masak flussence: that's not the same.
flussence it... oh. yeah, you're right
:(
masak MysqlForumTroll: speed is the major limiting factors for real-time web apps.
tadzik prefers the funny way, but he isn't writing anything seriour
masak .u ηŋ
phenny U+03B7 GREEK SMALL LETTER ETA (η)
U+014B LATIN SMALL LETTER ENG (ŋ)
MysqlForumTroll masak: Perl6 doesn't have it?
jasonmay oh speaking of making cool things in perl6
time to start on my MUD!
masak MysqlForumTroll: oh, Perl 6 itself is blazingly fast. but Rakudo is pretty slow... 23:16
jasonmay: I've been wanting to do that since 2004 :)
jasonmay: ...soon, soon...
23:16 lichtkind joined
masak (but feel free to start planning, by all means) 23:16
a MUD could rival #perl6 in cozy-placeness. 23:17
MysqlForumTroll masak: Maybe FastCGI would be okay
sorear masak: How do you measure the speed of Perl 6 itself?
masak sorear: I was mostly being obscure.
flussence std: 1
p6eval std 625303c: OUTPUT«ok 00:01 118m␤»
masak flussence: that's also an implementation.
MysqlForumTroll: there have been early attempts at things like FastCGI. it helps some, but not all the way. 23:18
flussence it's pretty fast considering that's got the overhead of perl5 :)
23:18 ggoebel joined
masak trying to find a particular Ovid blog post. 23:18
EOVIDTOOPROLIFIC
MysqlForumTroll I'm reading through Wikipedia's entry on Perl 6 23:19
dalek : f882c59 | lue++ | docs/feather/syn_index.html:
Made S24 accessible from perlcabal.org/syn
23:20
masak MysqlForumTroll: I'd advise you to take that article with a pinch of salt.
it's not entirely accurate, yet.
but I suppose it's still a good place to start. 23:21
jasonmay masak: I'll at least write a grammar to parse zone data from the Dirt days :D 23:22
masak jasonmay: sounds like a good place to start. :) 23:23
masak has a deja vu from that
jasonmay has written one with p5's Regexp::Grammars already, should be simplet o port
23:24 JodaZ joined
lue Dirt? 23:24
masak ah, it WASN'T Ovid, it was Alias: use.perl.org/~Alias/journal/39916 23:26
I shouldn't mix those two prolific bloggers and prominent Perl people up. :/
anyway, that's my exhibit A, so... 23:27
dalek ecs: 41307ce | masak++ | S24-testing.pod:
[S24] &done_testing is now &done

As Alias++ points out in this blog post, it should be named &done.
  use.perl.org/~Alias/journal/39916
23:28
jasonmay lue: en.wikipedia.org/wiki/AberMUD_famil...amily_tree
MysqlForumTroll anticipates ##perl7
jasonmay it's really the only code base I'm familiar with
masak MysqlForumTroll: for information about Perl 7, see perlcabal.org/syn/S01.html 23:29
sorear masak: What is your preferred resolution to #8 (REPL printing)?
MysqlForumTroll Woah.
masak sorear: I'm OK with it printing the last statement unbidden.
sorear: I'm not OK with it printing the first one.
dalek ecza: c7063c5 | sorear++ | niecza_eval:
Print result of last statement, not first, in REPL
23:31
masak sorear++
now I know how Aladdin must've felt :)
sorear it still works by textual manipulation 23:32
but now it adds say ( ) instead of just say do
masak eeew!
:)
you know if you *tell* me those things, I will break them more... :P
masak suddenly realizes why Aladdin was limited to three wishes... 23:33
23:34 ggoebel left
shortcircuit rakudo: my @rec_rand := @rec_rand.pick; say @rec_rand.pick; 23:35
p6eval rakudo a52525: OUTPUT«Any()␤»
shortcircuit While I can rationalize why I got that output...should that have given me an error instead?
masak moritz_: why should &pass and &flunk be the only ones with non-optional $desc parameters? 23:36
shortcircuit: I don't see anything wrong with it. 23:37
flussence shortcircuit: apart from the circular reference, all it's doing is .pick on an undefined array
masak rakudo: say [].pick
p6eval rakudo a52525: OUTPUT«Any()␤»
masak I could argue that that should return a Failure of some kind, though. 23:38
shortcircuit I suppose what I was expecting was that it would throw an exception on the circular reference.
masak shortcircuit: there's not really a circular reference.
shortcircuit: just a one-time rebinding.
23:39 ggoebel joined
shortcircuit rakudo: my @randgen := rand; say @randgen.pick; say randgen.pick; 23:40
p6eval rakudo a52525: OUTPUT«0.155705623651983␤Could not find sub &randgen␤ in main program body at line 22:/tmp/tsoguV88fN␤»
shortcircuit rakudo: my @randgen := rand; say @randgen.pick; say @randgen.pick;
p6eval rakudo a52525: OUTPUT«0.0878388733576401␤0.0878388733576401␤»
dalek ecs: a2a1d57 | masak++ | S24-testing.pod:
[S24] Re-worded 'Test functions' a bit

No changes in semantics, just made things more succinct.
23:42
23:42 M_o_C left
MysqlForumTroll What's the idea of using say instead of print? 23:44
masak rakudo: say 5; print 5
flussence It saves 4 characters.
p6eval rakudo a52525: OUTPUT«5␤5»
masak MysqlForumTroll: the ␤ is a newline. 'say' adds a newline after printing stuff. 23:45
flussence: count again :)
MysqlForumTroll I always use \n :p 23:46
flussence rakudo: say 'say'.chars; say 'print'.chars + '\n'.chars;
p6eval rakudo a52525: OUTPUT«3␤7␤»
masak flussence: I stand corrected. 23:47
MysqlForumTroll: and you may continue to do so, if you like.
MysqlForumTroll: many of us here don't. :)
MysqlForumTroll Cool
flussence of course you could be one of those horrible people who embed a literal newline in the string... 23:48
masak I still haven't decided which is more "proper" when actually using &print to output many things on the same line, to end it with a 'say "";' or with a 'print "\n";'...
flussence I've used say join "\n", @lines; a few times 23:49
masak for that I usually do '.say for @lines;'
23:49 lichtkind left
lue I would end the last print statement with \n"; [assuming use of double-quote, of course :) ] 23:50
flussence (I'm also guilty of using $, for that in p5)
masak lue: in the cases I'm talking about, the prior &print statements are usually in a loop of some kind.
pmurias MysqlForumTroll: say is also avalible in newer perl5's 23:51
MysqlForumTroll It's another way to do it :) 23:52
sbp make a routine called say_print. you pass it a Maybe and it randomly either does a say "" or prints a newline
23:52 Rhisa left
masak Perl 5 and Perl 6 are cross-pollinating each other. :) 23:52
sometimes both sides wish they could steal more stuff...
perigrin sometimes both sides with the other would steal more stuff :D 23:53
perigrin hides
sorear perl 6 stole a lot from perl 5 during its creation
masak that, too :)
a *lot*.
sorear perl 1..4 needs a name
lue
.oO(I should really finish the new banner for my blog so I can then get to my next post. Too bad Inkscape is a memory sinkhole :/)
masak good things copy semantics were in effect at the time of the "stealing".
sbp the antebellum perls
masak Perl "Classic".
sbp The Antebella 23:54
pmurias sorear: what does the nam sink op do?
dalek ecza: 1db99d8 | sorear++ | lib/Test.pm6:
Add &done as a synonym for &done_testing
perigrin sorear: "that recent unpleasent-ness"
sorear pmurias: evaluates its argument and throws it away
sbp thinks of a book title: Before the Camel, Before the Butterfly
masak sbp: I'm not too keen on conjuring up pictures of war with a name.
flussence lue: try Krita?
flussence ducks
sbp every war ends with a peace
masak it was never really a war.
just some friction. 23:55
we dismantled the war before it happened.
thankfully.
lue
.oO(which phaser did you use for the dismantling?)
masak lue: the privmsg phaser :) 23:56
lue Oh yeah. Forgot about the DCC phaser, don't use it much. <ontopic> 23:59