»ö« 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.
sorear lue!!! 00:03
diakopter rn: class A { has &.foo = sub { say 455 } }; A.new.foo.(); A.new.foo = sub { say 32 }; A.new.foo.() 01:13
p6eval niecza v22-14-g136ddcf: OUTPUT«455␤455␤»
..rakudo 714593: OUTPUT«455␤Cannot assign to a readonly variable or a value␤ in block at /tmp/1rcRVxgkUb:1␤␤»
diakopter hm
sorear diakopter: needs "is rw" 01:46
known nieczabug 01:47
diakopter oh 01:49
diakopter benabik: what's new in parrotland 02:05
benabik diakopter: Various attempts to fix up I/O, and then fix those fixes, as far as I know. I've been rather out of it. My PhD program is a bit more demanding of my time than my MS was. 02:06
shachaf Hmm, Parrot is still around?
diakopter shachaf: what would replace it? :) 02:07
shachaf diakopter: Well, plenty of irreplaceable things are no longer around. 02:08
diakopter ;) 02:10
diakopter shachaf: do you work on VMs? 02:12
shachaf Nope, though I occasionally look at them from a distance. 02:13
diakopter me2
shachaf I went to a few talks about Parrot years ago.
[Coke] hopes it wasn't his. 02:27
japhb [Coke], why's that? 02:31
sorear, Can all versions of niecza be built with the newest ZIP file? 02:33
sorear japhb: No
japhb I'm preparing to build a lot (potentially all) releases of niecza, and would like to avoid wasting network bandwidth to download a separate ZIP for every release if I don't have to. 02:34
sorear, awww. OK
sorear Now I'm curious :D 02:35
diakopter benchmark!
shachaf japhb: Can't you get the git repository and use tags? 02:36
sorear shachaf: the bootstrap binaries are not checked into git. perhaps they should be?
it's about 30M of zip files
japhb diakopter has of course guessed correctly. 02:37
shachaf Oh, I see what the question was now.
Never mind.
[Coke]: I think it was Allison Randal and chromatic. 02:38
japhb shachaf, I can do that for getting the source tree (which I am -- I'm making bare clones of all components I'm benchmarking, and then just doing a LOT of checkouts), But unfortunately niecza wants to download a ZIP file of a pre-built version of itself for bootstrapping during the build process. 02:38
shachaf japhb: Right, I see now.
japhb sorear: That would just make the git repo really darned big, I think, without much benefit to users. 02:40
I'm already having to work around Rakudo wanting to pull a 30 MB NQP repo and a 150 MB Parrot repo, without a way to override the origin URL. :-/ 02:41
s/pull/clone/
My solution is going to be to checkout each Rakudo from a local clone, then check out nqp and parrot trees into the rakudo checkout before even running Configure.pl in Rakudo. 02:43
(from other local clones, of course)
japhb sorear, is there any point in trying to figure out which ZIPs can build multiple releases, or is that rare enough to be not worth the potential optimization? 02:47
diakopter there's not that many releases 02:49
japhb diakopter, 23 so far. But I expect that once this procedure is ironed out, other people will want to run the tests on their own platforms (HW/OS/etc.), so any savings I find now will benefit everyone who runs the benchmark suite. 02:50
sorear japhb: at a rough guess I'd say that each zip can build an average of 3 releases 02:59
japhb sorear, hmmm. What's the best way to tell if a given zip is going to work with a particular release? Or were you good about only bumping the zip rev when you needed to? 03:26
sorear japhb: best way = TIAS, sorrhy. 03:27
sorear i bump whenever there is an advantage to doing so 03:27
which is usually "ASAP" because many niecza releases are better than the one before 03:28
japhb sorear, fair enough. 03:29
CharellKing you find the bugs for the perl6 project or design some libraries for it ? 03:58
sorear I don't follow. 03:59
dalek rl6-bench: 09d1e76 | (Geoffrey Broadwell)++ | components.json:
Reorder components.json so components are listed in sorted order
04:40
rl6-bench: ab72549 | (Geoffrey Broadwell)++ | bench:
Display known components in config command output
rl6-bench: 4092f98 | (Geoffrey Broadwell)++ | bench:
Don't check out any tags for a component if no tag regex is defined
rl6-bench: 6451e9a | (Geoffrey Broadwell)++ | components.json:
Add nqp and parrot components to components.json
rl6-bench: 296b8fc | (Geoffrey Broadwell)++ | bench:
Display already cloned message during setup if cloning already complete for a given component
dalek rl6-bench: c76c6ef | (Geoffrey Broadwell)++ | bench:
Factor out some common boilerplate from individual commands into explode-components()
05:00
rl6-bench: f6a057c | (Geoffrey Broadwell)++ | bench:
Convert more commands to use latest explode-components(): build just drops some boilerplate, extract-releases converts from manual component calculation; fetch adds the ability to specify components
CharellKing Hi 05:08
sorear Hello CharellKing
CharellKing Heihei, you are always here 05:09
Now I hava a rest 05:13
it's 13:13 now
moritz good morning 05:24
sorear o/ moritz 05:26
japhb o/
diakopter phenny: tell TimToady I think rosettacode.org/wiki/Man_or_boy_test#Perl_6 could be improved dramatically in efficiency by putting the assignment to &B (closure creation) inside the else block. Also maybe use ?? !! 05:34
phenny diakopter: I'll pass that on when TimToady is around.
dalek rl6-bench: bb03ad1 | (Geoffrey Broadwell)++ | bench:
Considerably nerf clean and realclean commands
05:37
diakopter japhb: nerf? 05:38
oh. 05:39
japhb :-) 05:40
dalek rl6-bench: 9ab1c92 | (Geoffrey Broadwell)++ | bench:
Flip default to True for explode-components() flag that turned out to always be turned on by caller
05:55
rl6-bench: eb6fc7e | (Geoffrey Broadwell)++ | bench:
Move all utility subs down below all command multis; no actual code changes, just moving lines and two new comments as section markers
grondilu rn: .say if True for <mixing if and for>;
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«mixing␤if␤and␤for␤» 05:56
diakopter ooo found a real bug 06:09
golfing it
diakopter nm 06:11
my error 06:12
rn: say (sub A($k is copy,&c,&d,&e,&f,&g) {$k <=0??f+g!!(sub B {A(--$k,&B,&c,&d,&e,&f)})()})(10,{1},{-1},{-1},{1},{0})
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«-67␤»
diakopter golfed man or boy
rn: say (sub A($k is copy,&c,&d,&e,&f,&g) {$k <=0??f+g!!(sub B {A(--$k,&B,&c,&d,&e,&f)})()})(12,{1},{-1},{-1},{1},{0})
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«-291␤»
diakopter rn: say (sub A($k is copy,&c,&d,&e,&f,&g) {$k <=0??f+g!!(sub B {A(--$k,&B,&c,&d,&e,&f)})()})(15,{1},{-1},{-1},{1},{0})
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«-3250␤»
CharellKing maybe nobody can't appear error 06:16
diakopter ? 06:17
CharellKing before you take out your works, what you can do is checking and checking 06:21
sorear CharellKing: I do not understand you 06:22
CharellKing hah
it's chinese english
sorry 06:23
chinese english means most of chinese speak english with the habit of chinese language 06:24
it's same as that before you speak chinese, you convert your english to chinese in your brain 06:28
bonsaikitten CharellKing: for greater goodness! 06:30
diakopter rn: say (sub A(\k is copy,\c,\d,\e,\f,\g) {k <=0??f+g!!(sub B {A(--k,&B,c,d,e,f)})()})(10000,{1},{-1},{-1},{1},{0}) # answer is gist.github.com/3944439 but would take more heap space than atoms in the universe 06:49
p6eval rakudo 714593: OUTPUT«Cannot assign to a non-container␤ in sub prefix:<--> at src/gen/CORE.setting:2913␤ in sub B at /tmp/j_1elykgmZ:1␤ in sub A at /tmp/j_1elykgmZ:1␤ in block at /tmp/j_1elykgmZ:1␤␤»
..niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Writing to readonly scalar␤ at /tmp/ENM9vIZCDM line 1 (B @ 4) ␤ at /tmp/ENM9vIZCDM line 1 (A @ 4) ␤ at /tmp/ENM9vIZCDM line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/niecza/l…
diakopter er
diakopter rn: say (sub A($k is copy,&c,&d,&e,&f,&g) {$k <=0??f+g!!(sub B {A(--$k,&B,&c,&d,&e,&f)})()})(10000,{1},{-1},{-1},{1},{0}) # answer is gist.github.com/3944439 but would take more heap space than atoms in the universe 06:50
p6eval niecza v22-14-g136ddcf: OUTPUT«(timeout)» 06:51
..rakudo 714593: OUTPUT«maximum recursion depth exceeded␤current instr.: 'print_exception' pc 88386 (src/gen/CORE.setting.pir:42460) (src/gen/CORE.setting:9089)␤called from Sub 'prefix:<-->' pc 53870 (src/gen/CORE.setting.pir:25720) (src/gen/CORE.setting:2910)␤called from Sub 'B' pc 438 (…
grondilu r: my $x = 0, 1; my $y = ^2; say "$x $y"; 07:22
p6eval rakudo 714593: OUTPUT«0 0 1␤»
grondilu r: my $x = 0, 1; my $y = ^2; say "$x, $y";
p6eval rakudo 714593: OUTPUT«0, 0 1␤»
grondilu expected $x to equal $y 07:23
moritz your expectations were wrong
first, item assignment has tighter precedence than infix:<,>
grondilu oops, I totally forgot that 07:24
moritz and if you write my $x = (0, 1); then it's still a Parcel
and ^2 is a Range
grondilu ok
FROGGS r: my $x = 0..1; my $y = ^2; say "$x, $y"; 07:26
p6eval rakudo 714593: OUTPUT«0 1, 0 1␤»
FROGGS ^2 is pretty cool actually 07:26
kresike good morning all you happy perl6 people 07:35
azawawi kresike: good morning 07:41
brrt hi kresike 07:41
kresike azawawi, brrt, o/ 07:42
azawawi star: use URI; 08:12
p6eval star 2012.07: ( no output )
azawawi r: use URI;
p6eval rakudo 714593: OUTPUT«===SORRY!===␤Could not find URI in any of: /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/site/lib, /home/p6eval… 08:12
azawawi rakudo: use URI; 08:13
p6eval rakudo 714593: OUTPUT«===SORRY!===␤Could not find URI in any of: /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/site/lib, /home/p6eval…
cognominal my $a='a'; say $a ~ "b" # what is the syntax if I want to shove the $a under the double quote to avoid the tilda? 08:18
moritz "{$a}b" 08:25
azawawi i dont know if this is a bug or feature... perl6 --doc=html test.p6 vs perl6 --doc=HTML test.p6 08:26
FROGGS azawawi: what happens?
azawawi the html or HTML make perl6 require Pod::To::html or Pod::To::HTML
moritz that's a feature
tadzik yep 08:27
FROGGS ahh
I see
tadzik you can have any Pod::To and --doc will look for it
azawawi what's the one bundled in perl6 by default?
moritz Text
moritz star: use Pod::To::HTML; 08:27
p6eval star 2012.07: ( no output )
moritz and star includes HTML too
cognominal moritz++ # I dont know why I kept wanting writing it "${a}b"
doy "${a}b" is how it works in perl5 and sh 08:28
cognominal doy++ # that's why, may be it could be supported as well in Perl 6 or give a more sensible error message even if the other syntax is of more general use 08:32
rn: my $a='a'; "${a}b"; 08:33
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Unsupported use of ${a}; in Perl 6 please use {$a} at /tmp/4Ox2EvUcyk line 1:␤------> my $a='a'; "${a}⏏b";␤␤Parse failed␤␤»
..rakudo 714593: OUTPUT«===SORRY!===␤Non-variable \$ must be backslashed at line 2, near "${a}b\";"␤»
cognominal niecza++
jnthn morning o/ 09:09
moritz \o 09:10
masak morning, #perl6 09:17
moritz \masak/
masak \:D/ 09:18
dalek pan style="color: #395be5">perl6-examples: ff087ef | (Gerhard R)++ | euler/prob009-gerdr.pl:
[euler/prob009] add O(N) version
09:26
brrt why does python break my flow of thought so many times 09:29
answer, because of the huge number of keywords
and 'special' functions
tadzik funny, I was just writing some python yesterday 09:30
I mainly didn't like assignment being a statement rather than an expression
brrt that, too
that really was ehm… a surprise 09:31
tadzik and no ++ and +=
brrt i can't recall a language that really split statements and expressions
tadzik and the way to print() without a trailing \n... seriously?
brrt C, in a way, but assingments?
tadzik in Go x++ is a statement
I can live with that 09:32
you can put it in for anyway
brrt oh, yes, that is true, they had a reason for it
tadzik I can understand that
brrt because of the whole post-preincrmeent thing
i liked that in c, felt kind of hacky
tadzik I can understand assignment being statement too, but understanding it doesn't make me like it :)
brrt i use assignment-as-expression literally all the time 09:33
.. except in python
tadzik oh, and the fact that if you stringify a list, it calls __repr__ on individual elements, not __str__ 09:34
whywouldyoudothat.png
but rambling aside it wasn't that bad of an experience 09:35
shachaf tadzik: What, in Python?
tadzik shachaf: yeah
shachaf That makes sense to me.
tadzik no to me )
tadzik :) 09:35
brrt python is friendly, but it has some weird and annoying habits
shachaf You want ["abc","def"] to be displayed as "[abc,def]"?
tadzik I define __str__ for my objects. Then I stringify the list of objects, and I get stuff like <object Something 1293814>
shachaf Well, I'm not sure a general-purpose __str__ for lists makes sense. What should it do? 09:36
(Note: I don't even use Python.)
tadzik okay. I expect that if I define stringification for my objects, the method will be used when they need to be stringified
when I stringify a list, I expect it to stringify its elements 09:37
that's not happening, and that confuses me
brrt probably you should use a list comprehension?
tadzik possibly
brrt speaking of hacky special purpose things
tadzik I'm sure there's a Right Way to do it that's not confusing :)
I'm probably just doing things wrong 09:38
brrt yes, but if you're like me, having to find out the 'right way' from the internet documentation is annoying
also, foo.append() and foo.pop, what sense is thta 09:39
that
masak tadzik++ # "whatever floats your goat" :D 09:59
tadzik masak: littlewhitelion.com/wp-content/uplo...r-goat.jpg 09:59
masak <jnthn> Perl ain't too much into making hard things impossible though. :) 10:00
yes, this was my thesis yesterday. though I still concede diakopter has a point.
eiro hello
masak tadzik: oh, wow. of course people actually did that. :P
eiro! \o/
eiro s:g/T/U/; what's up guys ? 10:01
tadzik hello eiro
eiro oops 10:01
masak eiro: are you transcribing DNA into RNA? :P 10:04
eiro masak, yep :) 10:13
it will be some part of the perl6 article. but this code fail. i don't know why for now 10:14
masak rn: my $_ = 'gattaca'; s:g/t/u/; .say
p6eval niecza v22-14-g136ddcf: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $_ (see line 0) at /tmp/VtdfrNwtGK line 1:␤------> my $_ ⏏= 'gattaca'; s:g/t/u/; .say␤␤gauuaca␤»
..rakudo 714593: OUTPUT«===SORRY!===␤Redeclaration of symbol $_␤at /tmp/xkL6iUzOX9:1␤»
masak er. 10:15
rn: $_ = 'gattaca'; s:g/t/u/; .say
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«gauuaca␤»
masak \o/
rn: my $dna = 'gattaca'; my $rna = $dna.subst(rx/t/, 'u', :g); say $rna 10:20
p6eval rakudo 714593, niecza v22-14-g136ddcf: OUTPUT«gauuaca␤»
masak rn: my $dna = 'gattaca'; my $rna = $dna.subst(rx:g/t/, 'u'); say $rna
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Regex modifier g not valid on regex literal at /tmp/hDlckGp871 line 1:␤------> a = 'gattaca'; my $rna = $dna.subst(rx:g⏏/t/, 'u'); say $rna␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot…
..rakudo 714593: OUTPUT«===SORRY!===␤Adverb g not allowed on rx␤at /tmp/yL9qniiiUs:1␤»
masak oh, interesting. didn't know that.
eiro i don't like the pythonic way :) s/// fits my vision of the world
eiro brb 10:21
masak different usages for different use cases, I guess :) 10:26
I've been migrating away from "clone data, then mutate it step by step" as a model for string manipulation.
prefer to defined whole steps as whole transformations without side effects. 10:27
define*
moritz so, what is your model now? parse and re-assemble?
masak what I just said. whole steps, each of which is essentially a transformation. 10:28
so parsing (or whatever) proceeds in stages. 10:29
Juerd You'll learn to stop cloning data anyway, when your strings reach hundreds of megabytes :)
masak heh :)
Juerd God didn't give us cheap RAM to waste it all on caches.
masak moritz: the other day I thought I'd cheat and do things the old, sloppy way, by just s///-ing the same string until I had what I wanted. about one hour into development, that way of doing things had properly painted me into a corner. so I fell back to doing things with a parser. 10:30
the problem with repeated s/// is that there's no distinction between "old data, transform this" and "new data, don't touch this". 10:31
they're all in the same string.
Juerd Unless it's all in one big s///g
I'm guilty of having written multi-page s[]{}ge expressions. 10:32
This was before the regex engine was re-entrant, so the same code could probably be much leaner in modern day Perl 5
masak was gonna say. 10:33
with today's Perl 5 regex features, you could probably write a decent parser that way.
using empty named captures to mark up tokens, for example.
Juerd Yeah, renumbering sucked enormously 10:34
masak though I wouldn't say that clone-and-rewrite is worthless. here's a striking example of when it clearly wins: strangelyconsistent.org/blog/speed-...-6-million 10:41
masak heh. "In a very real way, this program solves the problem by eating it." :) 10:46
arnsholt masak: Not only can you write a recursive descent parser with the new regex features, it's how Regexp::Grammars works AFAIK 10:51
masak nod. 10:59
FROGGS masak: what are t4 configurations? 11:00
masak FROGGS: see strangelyconsistent.org/blog/counti...igurations
FROGGS k
masak wow, that is less than a year ago. feels like a different life. 11:01
FROGGS heh 11:01
colomon huh. my good old case-replace program which has worked for ages and ages is suddenly getting weird results with the latest rakudo. Like .lines is arbitrarily inserting newlines in my code. (This is under Rakudo.) 11:27
moritz .lines is know to have problems :( 11:28
r: say lines()[0]
p6eval rakudo 714593: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunfts␤»
colomon loop is basically for $*IN.lines() -> $test is copy { say $text; }
moritz r: say lines().lines[0[
p6eval rakudo 714593: OUTPUT«===SORRY!===␤Unable to parse expression in subscript; couldn't find final ']' at line 2, near ""␤»
moritz r: say lines().lines[0]
p6eval rakudo 714593: OUTPUT«No such method 'lines' for invocant of type 'List'␤ in block at /tmp/94sw5Ax3ya:1␤␤»
moritz r: say lines()[0].lines[0]
p6eval rakudo 714593: OUTPUT«Land der Berge, Land am Strome,␤»
colomon don't have time to investigate due to $work, switching to niecza is an adequate workaround for me atm. 11:31
jnthn Why on earth did lines start to have problems? I thought we backed out the switch to the new Parrot I/O stuff, which I know has line issues... 11:39
masak maybe some workaround in Rakudo for the new Parrot I/O remained after we backed out the switch? 11:48
jnthn hm, perhaps
I think the Parrot IO issue in question may have been fixed recently. 11:49
(the stdin one)
eiro back 11:58
jnthn n: my $a = 1; my @foo = << '$a' "$a" lol :wut >>; say @foo.perl 12:12
p6eval niecza v22-14-g136ddcf: OUTPUT«["'1'", "\"1\"", "lol", ":wut"].list␤»
jnthn if I understand S0 correctly, the output should have been ["\$a", "1", "lol", :wut] ? 12:14
jnthn er, S02 :) 12:15
masak .oO( S0, the secret synopsis. it says when Perl 6 will be released ) 12:17
jnthn: yeah, that's my understanding too. 12:18
jnthn Niecza got green for quote words in features, so I thought I'd check it gave what I expected... :)
masak jnthn: I believe this deficiency of the current impl is already RT's.
jnthn Then started wondering who was right :)
masak: Note I did "n" above. I'm looking at what it'd take the get Rakudo to do << ... >> right.
masak ah. 12:19
dalek pan style="color: #395be5">perl6-examples: e18dc35 | (Gerhard R)++ | euler/prob009-gerdr.pl:
[euler/prob009] tighten loop constraint and add explanation
12:31
[Coke] got a little further with partcl-nqp; stole how to do an HLL mapping from nqp itself (yay) but can't seem to hll map an nqp class (awww) 12:46
[Coke] get a "Null PMC access in type()" when trying to map to a TclString. 12:55
masak [Coke]: that could be anything. it just means that the mapping didn't work. 13:25
dalek p: d65184d | jnthn++ | src/HLL/Grammar.pm:
Translate quote_EXPR and peek_delimiters to NQP.
p: 8716278 | jnthn++ | src/QAST/Operations.nqp:
Add findcclass to go with findnotcclass.
p: 597cb7e | jnthn++ | src/stage0/ (9 files):
Update bootstrap.
p: 334de3b | jnthn++ | src/HLL/Grammar.pm:
Port split_words to NQP.
jnthn [Coke]: I'm wonder if it's that Parrot's hll_map doesn't quite knows what to with an NQP class. 13:26
jnthn > my $a = 1; my @foo = << '$a' "$a" lol :wut >>; say @foo.perl 13:44
Array.new("\$a", "1", "lol", "wut" => Bool::True)
\o/
masak \o/ 13:47
moritz \o/ 13:47
masak jnthn: << "$a $a" >> ?
jnthn > my $a = 1; my @foo = << "$a $a" >>; say @foo.perl 13:48
Array.new("1 1")
masak \o/
jnthn++
jnthn Probably somewhere it's not perfect, but it's a lot righter than it was and it hurts no spectests. 13:49
In fact, 3 todos pass.
dalek kudo/nom: c0ac36d | jnthn++ | src/Perl6/ (2 files):
Prepare for splitting up <...> and <<...>>.
13:51
kudo/nom: 8abdf74 | jnthn++ | src/Perl6/ (2 files):
First crack at doing << ... >> quotes properly.

Respects nested quoting (which follow proper interpolation rules by single vs double quotes) and leaves colonpairs intact.
masak yay 13:52
PerlJam just had a weird moment ... 14:00
I have several windows open, some with perl 5 and some with perl 6. I was switching between windows and couldn't tell right off which Perl I was looking at. 14:01
dalek ast: 81a684c | jnthn++ | S02-literals/quoting.t:
Unfudge some quoting tests for Rakudo.

Also a fix to avoid a test that's long failed on Win32 doing so (a
  \r issue).
jnthn Well, all those pass so I'm gonna give us green on it for features. :) 14:01
dalek atures: b711785 | jnthn++ | features.json:
Rakudo updates.
14:05
moritz I think <<2 3>> should produce a parcel of IntStr objects, or so
jnthn Yeah, that whole allomorphy thing is a separate bunch of stuff and shows up in more places than just <<...>> 14:05
moritz right, MAIN args for example 14:07
and, what was the name? val(), I think
jnthn val() yeah 14:07
jnthn That's in ROADMAP 14:07
I think... 14:08
yes, it is
masak val() is like a data version of eval() 14:08
jnthn Yeah
japhb++ has his name next to it on ROADMAP 14:09
masak so now we just have to think of a cute way "e" stands for in "eval". :P something like "more than just data".
s/way/thing/
moritz execution 14:10
jnthn executable
moritz execution + data = win
erm, = eval :-)
masak ;) 14:13
dalek kudo/nom: 74a8835 | jnthn++ | docs/ChangeLog:
Update ChangeLog.
14:14
dalek rlito: 2aefb24 | (Anthony Hinsinger)++ | src5/lib/Perlito5/Javascript (2 files):
Fixed a bug in javascript function p5get_class_for_method
14:21
rlito: f73a4c8 | (Anthony Hinsinger)++ | perlito5.pl:
Re-bootstrap perlito5.pl with javascript bug fixed
rlito: a96fa40 | (Flavio S. Glock)++ | / (3 files):
Merge pull request #14 from atoy40/master

Bug in javascript function p5get_class_for_method
dalek p: 323c6fa | jnthn++ | src/pmc/owned (2 files):
Add some missing provides directives.

Fixes parametric role precompilation bug from RT#115240.
15:24
tadzik jnthn, jnthn
did you have a moment to look at this Bailador-related bug I sent you?
kresike bye folks 15:27
dalek kudo-debugger: 68f1a36 | jnthn++ | lib/Debugger/UI/CommandLine.pm:
Fix off-by-one in tracepoints.
15:28
jnthn tadzik: Is it pre-comp related? 15:39
jnthn blug: 6guts.wordpress.com/2012/10/24/raku...r-updates/ 15:40
masak \o/ jnthn++ 15:41
dalek kudo/nom: 7bc0961 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for a pre-comp fix.
15:42
japhb Oooh, sounds like I actually need to throw some tuits at val/*Str 15:52
masak <@gitinfo> Yes, if you understand the implications of FETCH_HEAD it can technically be done, but really it is easier to just fetch the whole remote 15:57
oops, ww. 15:58
moritz so pmc inheritance doesn't inherit "provides"-directives? 16:02
jnthn moritz: Apparently not.
moritz: Surprised me.
japhb jnthn++ # << >> 16:04
jnthn++ # blog
jnthn++ # debugger improvements
:-)
jnthn Things on my todo list for the coming couple of weeks: quote adverbs, heredocs, interactive mode cleanup (get rid of last remaining .pir source file in NQP on the way, handle native lexicals properly, etc.), try and kill the remaining pre-comp bugs in RT. 16:05
japhb alt.pir.die.die.die
Sounds like an excellent todo list 16:06
jnthn Oh, and work out the last kinks on my precedence traits work that keep us from passing S06-traits/precedence.t.
japhb :-) 16:07
jnthn japhb: tuits thrown at val would be awesome :)
japhb Are there existing tests for the allomorphic types? 16:13
TimToady IntStr does not appear in roast 16:14
phenny TimToady: 05:34Z <diakopter> tell TimToady I think rosettacode.org/wiki/Man_or_boy_test#Perl_6 could be improved dramatically in efficiency by putting the assignment to &B (closure creation) inside the else block. Also maybe use ?? !!
rindolf Hi all. 16:15
jnthn japhb: heh, I just discovered the same as TimToady...
japhb Will trade implementation for tests. ;-) 16:16
TimToady phenny: tell diakopter Man_or_boy isn't about efficiency, but correctness.
phenny TimToady: I'll pass that on when diakopter is around.
japhb (Hi au!)
masak finds himself writing 'my $local_sub = sub { ... };' in Perl 5 nowadays, just because he is so used to lexically scoped subs from Perl 6 16:19
doy (perl 5.18 will be getting real lexical subs!) 16:21
japhb W00t! doy, that is excellent news. 16:22
masak oh right, it will. 16:24
by default, or with 'my sub'?
doy with 'my sub'
masak that's what I seemed to recall.
tadzik jnthn: it is 16:28
jnthn tadzik: I think it's related or same cause as one that's already in RT, iirc. 16:37
tadzik mhm 16:37
jnthn dinner, bbl 16:38
diakopter TimToady: ok, but the P6 version is so much slower than the other versions; I thought it needed some help 16:40
phenny diakopter: 16:16Z <TimToady> tell diakopter Man_or_boy isn't about efficiency, but correctness.
TimToady that's fine, but I just now edited it for a bit more readability; golfing is not something we push in P6 16:44
diakopter ok 16:45
TimToady is tempted to make the else line read: !! do .() given my &B = { A(--$k, &B, &x1, &x2, &x3, &x4) } 16:46
but perhaps that multiplying entities
*that's 16:47
diakopter that does give the benefit of fewer nail clippings
TimToady but harder for a newbie to grok, I fear 16:48
masak man or boy is not about newbies being able to grok :P 16:48
diakopter heh
TimToady there is that too
if it's about CS professors being able to grok, then the do/given might look elegant to someone 16:49
moritz /msg jnthn seems I accidentally sent you an email I wanted to send to somebody else. Please just ignore it. 16:50
dammit
diakopter fyi here is Knuth's way to compute the output without computing it... I got it up to k=4700 before DrRacket ran out of memory (just for the huge integers I guess, not stack space) weinholt.se/hacks/man-or-boy.scm 16:50
moritz not well concentrated today :-)
diakopter I accidentally accidentally
TimToady moritz: that's a cute (almost-)autopun
if you'd just said "message" instead of "email"... 16:51
moritz TimToady: :-)
diakopter ..not that I have any clue how to read that Scheme program 16:52
moritz like any other program, really :-) 16:53
diakopter /o\ yes I know my code reading skills are bad :P
dalek pan style="color: #395be5">perl6-examples: 3705102 | (Gerhard R)++ | euler/prob021-gerdr.pl:
[euler/prob021] add problem 21
17:06
kudo/nom: 26c0aaa | moritz++ | src/core/stubs.pm:
fix error reporting for not-found dynamic variables
17:07
TimToady pnr: my @a = <The quick brown fox>; @a[1,2] .= reverse; say @a; 17:13
p6eval pugs: OUTPUT«Thebrownquickfox␤»
..niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: Unable to resolve method reverse in type Parcel␤ at /tmp/qdv5sM8r7p line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4216 (module-CORE @ 579) ␤ at /…
..rakudo 26c0aa: OUTPUT«The brown quick fox␤»
TimToady pnr: my @a = <The quick brown fox>; say @a[1,2].WHAT 17:15
p6eval pugs: OUTPUT«Array::Slice()␤»
..rakudo 26c0aa, niecza v22-14-g136ddcf: OUTPUT«Parcel()␤»
TimToady LHF in niecza to get Parcel.=reverse to work, maybe
supernovus hmm, just updated rakudo, and now when trying to run it, I get this: Serialized data too short to read a version number (< 4 bytes) 17:20
current instr.: '' pc 981 (src/gen/perl6.pir:346) (src/main.nqp src/gen/main-version.nqp:46)
moritz supernovus: do you have old, pre-generated PIR files anywhere?
supernovus Not that it should be loading. I'll do a full distclean and rebuild from scratch. 17:21
moritz r: class A { has $.name handles <Str>; }; say A.new(name => 'bla') 17:24
p6eval rakudo 26c0aa: OUTPUT«A.new(name => "bla")␤»
masak diakopter: I believe moritz' comment generalized to all people reading all programs, not you reading all programs.
diakopter I know; I was kidding
moritz too, mostly
masak diakopter: oh! :)
moritz IMHO ack and git-grep are invaluable when reading opaque source code 17:25
masak rn: my @a = <The quick brown fox>; @a[2, 3] .= rotate; @a[3] .= ucfirst; say @a 17:26
p6eval niecza v22-14-g136ddcf: OUTPUT«The quick fox Brown␤»
..rakudo 26c0aa: OUTPUT«No such method 'rotate' for invocant of type 'Parcel'␤ in method dispatch:<.=> at src/gen/CORE.setting:940␤ in block at /tmp/eJ1P16gYJU:1␤␤»
masak Niecza++
masak submits rakudobug
moritz somehow we have a problem in our type system
masak I agree-ish. 17:27
TimToady only one?
moritz if Parcel doesn't automatically get those methods it should have, it means we lack a common role or so
masak aye.
moritz TimToady: only one that is obvious from these examples
supernovus Fwew, 'make distclean && make install' worked.
TimToady or Parcel should be delegating unrecognized methods to List maybe 17:29
moritz r: class A { has $.name handles <gist>; }; say A.new(name => 'bla')
p6eval rakudo 26c0aa: OUTPUT«bla␤»
TimToady possibly delegate to List via Any 17:31
moritz www.perlmonks.org/?node_id=1000670 # /me couldn't resist a p6 answer to a p5 question 17:35
masak "delegate unrecognized methods"? are you suggesting we reinvent parts of inheritance, badly? 17:38
jaffa4 current compilation speed of rakudo is about 250 lines/s
masak what was sorear's target? 2000 lines/s ? 17:40
jaffa4 Are you asking me?
masak I'm asking the room. but if you know, feel free to answer :) 17:41
jaffa4 for niecza?
arnsholt moritz: I like how you exploit a stable sort. Barring special performance criteria, I think that's perhaps the cleanest approach 17:43
grondilu I'm editing the french Perl6 article and when I was about to mention the synopsis(es), I noticed there is no copyright or license in them. Aren't they copyrightd by the Perl foundation or something? 17:47
masak jaffa4: yes, for Niecza. 17:54
jaffa4 masak, what is its speed now?
masak jaffa4: I don't know. I don't even know which of Niecza and Rakudo parses files faster these days. 17:55
masak would be an interesting comparison to make. 17:59
moritz grondilu: I'd say it's copyright by the authors, and under the Artistic License 2
masak ...which, even though it's a software license, probably works fine here... 18:01
jaffa4 niecza gives better error messages 18:04
It noticed an undeclared variable which Rakudo did not notice
flussence niecza's repl isn't quite as nice though. or fast to start. 18:07
(I guess that'll change once it gets its own serialisation) 18:09
masak jaffa4: oh! was the variable inside a string?
jaffa4 yes
masak oh, phew. known one. 18:10
agree about the error messages, though. Rakudo is slowly getting better there.
(as it converges on STD.pm6)
moritz well, parse errors
jaffa4 Like a camel?
moritz I find rakudo's runtime errors generally a bit better
masak hm, troo.
supernovus is there a known problem with $socket.read() at the moment? 18:11
moritz supernovus: I think so, yes
diakopter TimToady: does rosettacode log you out after not very long?
jaffa4 I wonder if this was called the way of rocket.
nomen est omen? 18:12
masak jaffa4: you're making very little sense, I'm afraid.
jaffa4 Rakudo = the way of Camel. 18:13
TimToady is sorely tempted to allow shadowing of types/methods/etc. only if you shout the scope declarator: MY class Int {...}; HAS method new {...}
masak jaffa4: are you implying that including the word "rocket" in the name may have made the implementation faster?
jaffa4 who knows?
moritz knows 18:14
TimToady if you polish your car it runs better, everyone knows that :)
jaffa4 I am playing with the idea
masak no, no, if you *rename* your car.
TimToady diakopter: you want to click the remember-me-for-30-days button
moritz be careful not to rename your care over file system boundaries, that's generally not supported 18:15
diakopter I don't know where to find a Polish car
jnthn In Poland?
TimToady diakopter: no, no, just put it into reverse polish
jnthn TimToady: OH MY...
diakopter rpn: do {} 18:16
p6eval rakudo 26c0aa, niecza v22-14-g136ddcf, pugs: ( no output )
jaffa4 r: print "${b}_somethingelse"; 18:16
p6eval rakudo 26c0aa: OUTPUT«===SORRY!===␤Non-variable \$ must be backslashed at line 2, near "${b}_somet"␤»
jnthn TimToady: We could always spell MY as supercede or something... :)
jaffa4 r: print "{${b}}_somethingelse"; 18:17
p6eval rakudo 26c0aa: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name␤at /tmp/h41clHX8WL:1␤»
jaffa4 r: print "{$b}_somethingelse";
p6eval rakudo 26c0aa: OUTPUT«===SORRY!===␤Variable $b is not declared␤at /tmp/62fqCQdhsc:1␤»
jnthn jaffa4: {$b} is what you're looking for.
TimToady except supercede is supposed to be a globalish thing, just as augment is supposed to augment for everyone
jnthn TimToady: Hm, true
jaffa4 jnthn: ok
diakopter C# calls it non-sealed 18:18
jnthn std: ${b}
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unsupported use of ${b}; in Perl 6 please use $b at /tmp/mNaWkBi1io line 1:␤------> ${b}⏏<EOL>␤Parse failed␤FAILED 00:00 41m␤»
diakopter wait.
TimToady I think it'd be good to mark intent to override/shadow somehow, and it needs to be something that is not as dehuffmanized as "is override"
diakopter scratch that last. stupid today.
moritz rats, cats, seals
jnthn Hm, where on earth does STD emit that message from... 18:19
TimToady: The problem with putting anything like this in a trait is that by the time we see the trait it's kinda too late.
diakopter jnthn: I found it the other day...
jnthn diakopter: I was expecting it to be in variable...
std: my $b; say ${b}
p6eval std 64edd1c: OUTPUT«===SORRY!===␤Unsupported use of ${b}; in Perl 6 please use $b at /tmp/uK6FCbtjLn line 1:␤------> my $b; say ${b}⏏<EOL>␤Parse failed␤FAILED 00:00 42m␤» 18:20
diakopter 'new' preface?
.m/e ducks
diakopter ducks
TimToady jnthn: line 2351 or so 18:21
masak <jnthn> TimToady: We could always spell MY as supercede or something... :)
jnthn: this was what I thought, too!
moritz regex special_variable:sym<${ }> {
TimToady but there are good reason to shadow a parent's method if you're doing it on purpose
we just need to capture intent 18:22
moritz for methods it's very common
for built-in classes less so
masak for methods it's the default.
if I didn't want shadowing, I'd declare my methods multi.
I'm not sure I agree about a strong parallel between method shadowing and class shadowing, actually. 18:23
they work in different scoping dimensions, for one.
TimToady but see "regex new"
masak not even sure I want to solve that problem. 18:23
moritz well, the problem is that people seem to think that regexes live in some kind of other dimension than methods
masak just make it behave not too confusingly when people do declare a 'new' rule... 18:24
moritz it's mostly an educational problem, IMHO
masak TimToady: we used to have a *much* bigger namespace exposed through grammars (in Rakudo), and it was hurting us.
TimToady yes, outlaw it unless they declare intent to shadow
masak today, not so much. 'new' is an exception, I think.
TimToady: outlaw seems to have been diakopter's line yesterday. 18:25
moritz methods from Any used to cause problems. Now it's only Mu
masak .oO( get rid of those top types of the type hierarchy, they're just causing problems ) :P 18:26
moritz yeah, let's run on category theory instead
masak .oO( your distaste of type hierarchies is an instance of the free monoid ) 18:30
sorear o/ 18:32
PerlJam It's too bad "new" isn't spelled "NEW" (or something else less likely to be used by ordinary unsuspecting folk 18:33
)
masak sorear! \o/ 18:34
sorear: what's the parsing speed, in lines/s, of Niecza nowadays? 18:35
flussence
.oO( that should be cycles per line... )
sorear dunno 18:43
dalek kudo/nom: 0e866af | jnthn++ | src/Perl6/Grammar.pm:
Better error for ${whale}.
18:52
bbkr whoever_invented_Failure_type++ # this is very useful part of language 19:19
azawawi hi 19:19
jnthn: ping
masak bbkr: I'm still a little afraid of Failure and its semantics. seems to me the idea behind it is to separate the error reporting from where the error happened. though to be honest, I haven't yet been burned by it, or seen someone else get burned by it. 19:22
moritz well, occasionally it has burned me, because we don't have sink context yet 19:24
and thus occasionally a Failure is silent that shouldn't be
moritz maybe with QAST now being firmly in place, I should take another stab at sink context 19:27
bbkr masak: my use-case takes place in JSON::RPC::Client. when one request fails it throws exception of specific type, for example JSON::RPC::Error::InvalidParams. but JSON-RPC also has something called batches and client may get array of responses, some of them may be ok but some should be converted to exceptions. Failure allows to implement clean way of catching them while iterating over response results, like @response = $client.some_batch_call(); for @response -> $res 19:28
ponse { try { $response.perl.say; CATCH { when JSON::RPC { say "ooops" } } }
bbkr so in general failure is handy when you have exceptions in some kind of data structure 19:29
i'm not sure what "sinks" are, but in my case Failure did the trick 19:30
masak why wouldn't plain exceptions work here?
sinks are what's called "void context" in Perl 5. 19:31
azawawi phenny: tell jnthn web-based rakudo debugger api are a great idea. Hopefully i could integrate them into Padre and Farabi6 :)
phenny azawawi: I'll pass that on when jnthn is around.
masak that is, you call something without doing anything with the return value.
bbkr because exception object retuned somewhere in array cannot throw himself when accessed
azawawi tadzik: ping 19:32
tadzik azawawi: pong
jnthn azawawi: pong 19:33
phenny jnthn: 19:31Z <azawawi> tell jnthn web-based rakudo debugger api are a great idea. Hopefully i could integrate them into Padre and Farabi6 :)
jnthn azawawi: Yes, the idea is if it's a web based API everybody can integrate :)
azawawi tadzik: suppose panda install Some::Module breaks down because of a new commit at Some::Module
azawawi tadzik: like what happened to me just now (Farabi6.... because of HTTP::Easy) 19:33
tadzik yeah, that sometimes happens :) 19:34
azawawi tadzik: is there a way to install it from another github? :) 19:34
tadzik hmm
you can install from a local directory
tadzik or tune your ~/.panda/projects.json 19:34
azawawi what the command for that?
tadzik panda install ./path/
wollmers hi all 19:35
tadzik hello wollmers
grondilu made a lot of changes on the french perl6 wikipedia article. Check it out if you speak/understand french. 19:37
masak wollmers: long time no see.
azawawi tadzik: q{panda --help} no tell me that :) 19:38
sorear hi wollmers. do I know you?
azawawi tadzik: any chance you could add that info to panda --help ? 19:39
wollmers Sometimes I would like to use a prolog-like style to describe problems in Perl. Does Perl6 support this paradigma (rule-based, logic programming) or are there plans to do it?
masak grondilu: under "Types de données", I think the type names should all start with a capital letter: Int, Num, Str.
tadzik azawawi: I don't know. Can you? :P
sure I can
masak wollmers: you can already exploit the regex engine for Prolog-like semantics. 19:40
wollmers: by having it bracktrack on failure.
azawawi tadzik: thx
grondilu masak: ok but native types are types as well.
masak sure. 19:41
but I'm not sure we have a 'str'.
tadzik azawawi: I'll just open a ticket for now
jnthn masak: Rakudo is fairly sure it has one ;)
wollmers masak: Yes, regexes can backtrack. But what's about the 'or' (alternative rules) and bidirectional parameters? 19:42
masak grondilu: sub faire_quelquechose(Str $chose, Int $autre) { ... } # the _ is not visible on the Wikipedia page
wollmers: regexes have | and || for 'or'
wollmers: I don't know offhand what could emulate bidi params.
grondilu: same with my_split further down.
masak rn: class Point is rw { has $.x }; my Point $p .= new; say $p.x = 42 19:43
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Unhandled trait rw for this context at /tmp/WoR1BfgyH7 line 1:␤------> class Point is rw ⏏{ has $.x }; my Point $p .= new; say $p.␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE…
..rakudo 0e866a: OUTPUT«42␤»
wollmers masak: OK, maybe I should try typical Prolog examples in Perl6-rules.
masak sorear: ^^ 19:44
wollmers: that would be cool/helpful.
grondilu masak: I can see the underscores, but ok I'll change to single dash
masak grondilu: for some reason they don't show up here.
azawawi so basically LWP::Simple is not so simple to install via panda :) 19:45
masak "Expressions rationnelles". huh. had I had to guess what the translation is in French, I would've guessed "régulières" 19:46
though "fermetures" is spot on, and cute :)
as is "contrôle de flot" :D
masak rn: my int @integers = 0..Inf; say "alive" 19:47
p6eval rakudo 0e866a: OUTPUT«No such method 'STORE' for invocant of type 'Int'␤ in block at /tmp/jzOT2iXzlt:1␤␤»
..niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Malformed my at /tmp/AgFEfHLbPl line 1:␤------> my⏏ int @integers = 0..Inf; say "alive"␤␤Parse failed␤␤»
masak grondilu: ^ this is probably not a good example.
eiro tablets.perl6.org/appendix-e-exciting.html is there an error there ? 19:48
@content = lines "poetry.txt";
grondilu rn: my int @ = 0 .. *;
masak "jonctions"! :D
p6eval niecza v22-14-g136ddcf: OUTPUT«===SORRY!===␤␤Malformed my at /tmp/CxvNG8GE1I line 1:␤------> my⏏ int @ = 0 .. *;␤␤Parse failed␤␤»
..rakudo 0e866a: OUTPUT«No such method 'STORE' for invocant of type 'Int'␤ in block at /tmp/yh3vk5r3hC:1␤␤»
eiro .say for lines "/etc/passwd"; # it says "/etc/passwd" 19:49
masak grondilu: for some reason, the underscore in get_tint is visible.
grondilu masak: I don't know about that.
eiro rn: lines "/etc/passwd"
p6eval rakudo 0e866a, niecza v22-14-g136ddcf: ( no output )
masak grondilu: for all(@array) { ...} # this is copied from the English Wikipedia page. just as wrong there. that's never going to work.
eiro rn: lines("/etc/passwd").join("")
p6eval rakudo 0e866a, niecza v22-14-g136ddcf: ( no output )
masak eiro: 'say' 19:50
eiro: also, please don't give actually malicious people too many ideas... 19:51
grondilu not even in future?
masak grondilu: not even in future.
grondilu masak: ^
mathw hello hello
grondilu ok
masak grondilu: it's a big misunderstanding of parallelism. please remove it.
mathw! \o/
eiro haha :) sorry masak: it was just the example i use on my own system :) 19:52
masak grondilu: junctions autothread, but you won't get a parallel for loop by looping over a junction. you'll just get autothreading and a loop over one element.
eiro: I don't know if the risk is actually that big here. but better safe than sorry. :)
eiro yep 19:53
grondilu masak: removed. Do you have an example of parallelism with junctions?
masak grondilu: I think 'hyper for @normal_array { ... }' is the syntax.
grondilu: junctions are meant to be (potentially) parallel by default.
eiro btw: i'm unable to use lines
sirrobert grondilu: Just FYI, the hash in your META.info for SSL is malformed (raw.github.com/grondilu/openssl/ma...META.info) 19:54
phenny sirrobert: 20 Oct 10:13Z <moritz> tell sirrobert raw.github.com/sirrobert/Semantic-.../META.info has a space in "name ":, that's no good
sirrobert Thanks, phenny-- I fixed that =) 19:54
;)
mathw hi masak, everyone 19:55
sirrobert hallow mathw 19:55
jnthn eiro: lines on a string just splits the string into its lines. 19:56
eiro: Pass it an IO object if you want it to read the lines from that.
grondilu sirrobert: I don't see what's wrong in it 19:56
sirrobert grondilu: you have... "source-url" : [email@hidden.address]
I think the format should use: "git://github.com/sirrobert/Masquerade.git" 19:57
(I wasn't able to install the SSL module, anyway, and I think that's the issue)
if not, ignore me =) just in case it's helpful.
tadzik anyone planning to go to GPW 2013? It's in Berlin 19:58
eiro jnthn, that's what i tried to say: the exemple is not good 19:59
sirrobert too long a drive this year, tadzik =)
grondilu sirrobert: edited and pushed on github
eiro (i think)
sirrobert grondilu: cool
eiro also there is an unfair comparaison with perl5 20:00
$a = defined $b ? $b : $c; $a = $b // $c;
grondilu sirrobert: If you're interested in this module, be aware that it doesn't work with non-ascii strings. I wasn't able to fix that.
sirrobert grondilu: thanks for the heads-up ... I was just looking around for now.
masak tadzik: when is it?
tadzik masak: 13-15 of March 20:01
eiro is there a documentation that compares perl5 and perl6 the way the coffeescript does? ( coffeescript.org/ ) 20:02
it would be really usefull for perl5 programmers
masak tadzik: sounds possible, although $future is a bit hazy right now.
eiro: I once saw such a document in the Pugs repo, yes. 20:03
eiro: maybe it's in the Mu repo now.
wollmers masak: Looking at rosettacode.org/wiki/Fibonacci_sequence the Perl6-recursive using multi looks better then the Prolog example. But what's about maheshexp.wordpress.com/2006/09/23/...og-part-2/ for example written by a Perl6 expert? 20:04
Su-Shee in case some of you are planning THE ULTIMATE TESTING FRAMEWORK: www.amd64.org/support/automated-tes...cture.html (Perl..) 20:04
eiro if someone confirms it's an error: i fix the tablets repo 20:05
diakopter eiro: it appears the coffeescript comparisons compare the coffeescript input to what JS the coffeescript compiler outputs. Why would Perl 5 be on there for Perl 6? 20:06
eiro diakopter, it's just about the 2 colums rendering 20:07
masak Su-Shee: that looks... rather impressive. 20:08
sirrobert r: class A { }; role B { }; say (A does B).new.perl;
p6eval rakudo 0e866a: OUTPUT«Cannot use 'does' operator with a type object.␤ in sub infix:<does> at src/gen/CORE.setting:11788␤ in block at /tmp/hEaw7fiCwK:1␤␤»
eiro tablets.perl6.org/appendix-e-exciting.html < diakopter this is closer in terms of content
Su-Shee masak: we're actually speechless next door.. it looks like the candy store of testing and it's some serious perlish perl, moose based, good use of modules, readable code from what I see while browsing around..
sirrobert What's the best way to create an instance of an object doing a certain role before passing in constructor params? 20:09
eiro (but i really would like to be more fair with perl5)
sirrobert r: my %p = (a=>1); class A { }; role B { }; say (A does B).new(|%p).perl;
p6eval rakudo 0e866a: OUTPUT«Cannot use 'does' operator with a type object.␤ in sub infix:<does> at src/gen/CORE.setting:11788␤ in block at /tmp/p0cIolgIha:1␤␤»
Su-Shee masak: and it's... VAST (I think :)
jnthn sirrobert: Try "but" there. 20:11
sirrobert r: my %p = (a=>1); class A { }; role B { }; say (A but B).new(|%p).perl;
p6eval rakudo 0e866a: OUTPUT«A+{B}.new()␤»
sirrobert huh, ok
jnthn Maybe the error should say that :)
sirrobert heh
jnthn sirrobert: does mutates an existing object.
sirrobert: You can't mutate a type object.
sirrobert ok, I was using "but" and "does" slightly differently 20:12
with a different interpretation (that worked =)
thanks
jnthn sirrobert: If you didn't already see it, 6guts.wordpress.com/2012/10/24/raku...r-updates/ 20:13
masak Su-Shee: looking at the CPAN Pod right now. cool.
sirrobert aha! great
jnthn++: thanks 20:14
Su-Shee masak: I'm installing heavily :)
sirrobert jnthn: I have the 2012-09 rakudo star installed... how do I get the updated debugger? 20:14
masak metacpan.org/release/Task-BeLike-AMD # of *course* I want to be like AMD!
Su-Shee masak: Task::Tapper installs the whole shebang (I think..) 20:15
wollmers Su-Shee: also github.com/ingydotnet/testml-pm -- a portable test case language (usable across programming languages) looks like a nice idea. That way it would be possible to have one set of test cases (e.g. for some standard like Unicode).
jnthn sirrobert: Easiest way: wait a couple of days for this month's R* release :) 20:16
sirrobert jnthn: heh, deal
Su-Shee wollmers: I wasn't actively looking, I just gotting pointed to this Tapper thingie and were impressed so I spread it :)
tadzik so, what is this Tapper thing all about?
sirrobert jnthn: have you put any thought to a good way to add breakpoints to code in file (rather than in debugger-runtime)? 20:17
jnthn sirrobert: I'm wondering about trying to hijack comments in some way. 20:18
Su-Shee tadzik: well it looks like the ultimate testing framework infrastructure thingie with EVERYTHING.
Su-Shee tadzik: I can't really tell yet, it still installs 20:19
masak tadzik: oh, just a very awesome-looking big testing framework that AMD built.
tadzik a central TAP database
so like CPANTesters? :)
tadzik Internally it is based on technology known from the CPAN testing infrastructure, extending it with automation and advanced querying. 20:19
fair enuff
LIKE
I want that for emmentaler :)
sirrobert jnthn: yeah... I had an idea that you might make a Perl6::Debug module that exports "bp", "tp" functions (or maybe proto functions?) then handle them specially in the debugger.
Su-Shee tadzik: skim throught it, much more I think. it looks like everything from running, queueing, setting up, spreading, reporting 20:20
masak tadzik: engage stealing mode. :D 20:20
jnthn sirrobert: That's another option. But I'm not so keen on it.
sirrobert jnthn: I think it would be important for the debugger keywords to have very short names
jnthn: Why's that?
masak for future IRC archaeologists: I wasn't talking about *actual* stealing. just open source.
masak sometimes feels the future backlogging him, and gets fidgety 20:21
jnthn sirrobert: If you are debugging a module, you may add Perl6::Debug. Then you ship your module, accidentally leaving the use declaration in. Somebody tries to install it and boom.
Unless they have Perl6::Debug too, then it's just a wasted module load.
masak not fidgety as in cleptomaniac, just mildly uncomfortable. :P
sorear plaigerize!...that's why God gaveyoueyes!...but call it reasearch 20:22
masak Lehrer++
eiro 'night perl6 people
jnthn o/ eiro
sirrobert: How would something like: 20:23
#?bp
sirrobert jnthn: it wouldn't break though, would it? If you defined things like: sub bp () {}
jnthn #?tp "foo is $foo"
And the like?
sirrobert jnthn: yeah, that would work
jnthn I mean, the way I implement things I can go peeking at comments. 20:23
sirrobert jnthn: cool; I think that's plenty short
jnthn sirrobert: I'm worried about people shipping code that accidentally depends on a debugger, or having to remember to add the declaration, or importing short names that may collide with other things they want short names for in their domain. 20:24
sirrobert jnthn: also, if it's easy (I see you already know what line you're executing), is it possible to add line numbers before each line of code?
sorear thinks it's _k_leptomaniac
sirrobert jnthn: that makes sense
s/possible/easy/ 20:25
jnthn sirrobert: I was hoping the range it gives you just above the code snippet was enough.
sirrobert jnthn: it is... but I code with line numbers, so it takes some extra cognitive work =) Maybe a ENV setting?
jnthn I suspect it's only so long before the debugger gets things that people want to configure, yeah... 20:26
masak sorear: I think you're right.
masak checks the etymology
sirrobert jnthn: better than an env var, actually, would be a conf file (~/.perl6-debug, or the like)
masak sounds Greek.
jnthn sirrobert: Yeah 20:27
sirrobert jnthn: anyway, thanks a LOT. Most useful ecosystem add-on for me so far.
jnthn sirrobert: Feel free to file an issue about the line number thing you want.
diakopter lolz IRC archaeologists
jnthn I'm reluctant to make it the default, but I can quite happily do it as an option.
(it's not hard) 20:28
masak both "kléptēs" and "manía" are Greek, originally. "theft madness". 20:28
sirrobert jnthn: cool, will do.
masak or "thief madness", more exactly.
sirrobert jnthn: if I have some cycles, would you want me to fork/modify/pull-request? 20:29
or prefer that I just add issues?
jnthn sirrobert: If you want to contribute code also, that's fine :)
sirrobert cool =)
TimToady 'kléptō' means "I steal" 20:31
kurahaupo κλεπτψ? 20:32
TimToady that's a psi, not an omega
jnthn
.oO( gee, that's some really messed up cyrill...oh, wait... )
sorear needs more diacriticals
masak TimToady: dictionary.com had the word coming from grc:'kleptes', en:'thief'. 20:34
kurahaupo ooops, that'll teach me to touch-type on a USA-ASCII keyboard: the ψ and ω are on the (adjacent) C & V keys
sorear masak: Your strange neologism for today is "kleptography"
masak 'thief writing'? 20:35
I like it, but I have no idea what it means :)
kurahaupo bad cheques?
masak :D 20:36
sorear nothing to do with the crime which is known in the US as "mail fraud", either
kurahaupo the process of writing a keylogger? 20:37
TimToady masak: a better translation of kleptes might be "stealer", since they didn't keep a separate word for it as English does 20:43
and my gut feeling is that the verb is the more basic 20:44
masak I'll take your word for it. 20:45
that "-es" ending, is it productive in ancient Greek? 20:46
PerlJam many years from now someone will be reading the encyclopedia galactica and find an entry that reads "because Larry Wall said so" 20:47
TimToady it's just a typical noun ending
diakopter reading will exist in the future? 20:48
sorear diakopter: Yes
TimToady we can't have readonly variables without it
PerlJam diakopter: perhaps it will be more like "thought transcription" but we'll call it reading anyway
sorear Whatever the dominant means of paging information into your local storage is, it will be called reading
PerlJam sorear: we'll have pages in the future? ;) 20:49
sorear also, I suspect history will remember TimToady mostly as the author of patch(1) :/
TimToady yes, you have it right, and the SF authors have it wrong: they always make up a new word for the thing, and what people do is just reuse the old word
sorear TimToady: to be fair I never gave it any thought until Gloria++ brought up newsletters and mailboxes cerca YAPC::Europe 20:50
TimToady sorear: well, whether they remember me for patch may depend on whether you finish niecza :D
masak Gloria++
what's funny about words being re-used is that you can spend the whole future making puns between the old meanings and the new. 20:51
PerlJam sorear: that's tantamount to saying that they'll forget Perl
TimToady they'll forget patch too :)
masak "Did you check your *mailbox*. No, not that one!" <laughter> 20:52
diakopter patch? you mean that thing git does?
PerlJam TimToady: you only think that people reuse words because you keep using Perl for different things ;>
masak diakopter: that's either mean or funny :)
TimToady masak: the two are not mutually exclusive
diakopter masak: or ignorant
masak diakopter: right. 20:53
TimToady I dunno
masak but "darcs" would've been more apt than "git", because git calls'em "commits".
PerlJam diakopter: in a way you're right. There are a number of people who come to #git asking is there's a way to apply a patch without git.
s/is/if/
mathw 'patch'? :)
PerlJam mathw: oddly, that's always the answer. 20:54
mathw I wonder why...
masak well-named command.
geekosaur *eyeroll* 20:55
diakopter masak: I didn't intend to be hurtful/mean
geekosaur (probably not eyerolling as hard as TimToady is...)
sorear diakopter: apparently TimToady was one of the first people to think of using diff output as programmatic instructions for _robustly_ modifying source code
TimToady masak: diakopter was merely channelling the naive user there, but forgot the quotes 20:56
sorear diakopter: then a few years later someone else wrote a couple of shell scripts on top of patch, called it the Concurrent Versioning System, and the rest is history
diakopter yes. it was a joke. :D
masak diakopter: don't worry, I saw what you were doing. :)
PerlJam sorear: parsing diff output was harder back then. TimToady was the only one crazy enough to do it ;)
TimToady I was the only one who didn't think, "Gee, if I want to automate this, I'd just use 'diff -e' to spit out an ed script." 20:57
I suspect if diff hadn't had the -e option, someone would have written patch much earlier
sorear yeah but diff -e generates _line numbers_ 20:58
I think the real genius of patch is --fuzz
TimToady no it doesn't
grondilu rn: say 4668235368676520077888364252103.is-prime
p6eval rakudo 0e866a, niecza v22-14-g136ddcf: OUTPUT«False␤»
grondilu rn: say my @ = 4668235368676520077888364252103.is-prime 20:59
p6eval rakudo 0e866a, niecza v22-14-g136ddcf: OUTPUT«False␤»
grondilu shouldn't it give me the list of prime divisors in list context?
TimToady no, since it doesn't know them
sorear TimToady: GNU diffutils 2.8.1 on Mac OS X 10.7.5 with the basic -e option produces commands like 7,15c 21:00
TimToady that's an ed script
sorear did pre-GNU diffs produce regex output?
PerlJam grondilu: wouldn't that be called something more like "factor" ? 21:01
masak PerlJam++
grondilu indeed, my bad 21:03
(still, is-prime could do its best and give me some, if not all) 21:04
flussence rn: sub prefix:<h>(\string) { string.trans(« < > & " » => <&lt; &gt; &amp; &quot;>) }; h'<blink>' 21:05
rn: sub prefix:<h>(\string) { string.trans(« < > & " » => <&lt; &gt; &amp; &quot;>) }; say h'<blink>' 21:06
p6eval rakudo 0e866a, niecza v22-14-g136ddcf: ( no output )
rakudo 0e866a, niecza v22-14-g136ddcf: OUTPUT«&lt;blink&gt;␤»
sirrobert r: role B { }; role C { }; class A does B does C { }; say A.new.^mro; 21:07
p6eval rakudo 0e866a: OUTPUT«A() Any() Mu()␤»
sirrobert What manner of introspection sorcery can I do to see that A.new has roles B and C?
sorear grondilu: is-prime uses the Rabin-Miller probabilistic primality test, which does not produce *any* prime factors in the vast majority of casxes
flussence star: use URI::Escape; sub prefix:<%>(\string) { uri_escape(string) }; say %'oranges & lemons' 21:08
p6eval star 2012.07: OUTPUT«===SORRY!===␤Malformed parameter␤at /tmp/6idibSzeUe:1␤»
grondilu sorear: ok
sirrobert r: role B { }; role C { }; class A { submethod BUILD { self does B; self does C; }; say A.new.^mro;
p6eval rakudo 0e866a: OUTPUT«===SORRY!===␤Unable to parse expression in block; couldn't find final '}' at line 2, near ""␤»
TimToady grondilu: that is not the job of is-prime, and you really want something more like rosettacode.org/wiki/Count_in_factors#Perl_6
sirrobert r: role B { }; role C { }; class A { submethod BUILD { self does B; self does C; } }; say A.new.^mro;
p6eval rakudo 0e866a: OUTPUT«A+{B}+{C}() A+{B}() A() Any() Mu()␤»
sirrobert for some reason it works for that version, but not for the other ...
flussence star: use URI::Escape; sub prefix:<ue>(\string) { uri_escape(string) }; say ue'oranges & lemons' 21:09
p6eval star 2012.07: OUTPUT«===SORRY!===␤Malformed parameter␤at /tmp/z8Y9HxeGIa:1␤»
flussence oh.
star: use URI::Escape; sub prefix:<%>($string) { uri_escape($string) }; say %'oranges & lemons'
p6eval star 2012.07: OUTPUT«oranges%20%26%20lemons␤»
flussence wait, that ain't right...
flussence q{ } should translate to q{+}, according to this source code... 21:10
sorear grondilu: note, the rabin-miller test runs in time Õ( N**2 ) where N = chars($num.base(2)) 21:11
the best known algorithm that _does_ give a factor runs in time O( exp(cbrt(N)) ) 21:12
also, it's based on maths that I don't understand D:
diakopter rn: sub prefix:<h . >(\i) { i }; say h.h.h.h.5
p6eval rakudo 0e866a: OUTPUT«===SORRY!===␤Confused␤at /tmp/CYeOn2v66d:1␤»
..niecza v22-14-g136ddcf: OUTPUT«5␤»
masak waitwait. math that sorear doesn't understand? o.O 21:13
sorear the general number field sieve is... something 21:14
diakopter rn: sub postfix:< >(\i) { i*2 }; say 5 21:16
p6eval niecza v22-14-g136ddcf: OUTPUT«(timeout)»
..rakudo 0e866a: OUTPUT«5␤»
havenn Started going through Perl6 book porting code to Ruby, just to learn. Was surprised how similar they look to each other: gist.github.com/3928203
diakopter sorear: timeout ^^ 21:16
masak havenn: nice! 21:20
havenn: wow, but 'Hash.new 0' looks weird from a Perl 6 perspective. I read it and think "hey, that's two terms in a row!"
flussence
.oO( but that's an Array! )
21:21
masak havenn: you're right -- the two look very similar in structure and syntax.
havenn masak: Hrmm, yeah, could have made that one line (@matches = @sets = Hash.new(0)) or @matches = {}; @matches.default 0 21:21
masak: In Ruby somehow you've got to get the default value of the Array set, or it won't add. :) 21:22
diakopter rn: sub postfix:< >(\i) { i+i}; sub prefix:<(>(\i){i*i}; sub postfix:<)>(\i){i+4}; sub postfix:<(>(\i){i-4}; say ((((((5)()))((())(()))))( 21:23
p6eval niecza v22-14-g136ddcf: OUTPUT«(timeout)»
..rakudo 0e866a: OUTPUT«4188271851027274266670020743752976432915773724299403513508038881183728210190544679681␤»
masak havenn: oh! default.
havenn: I thought it was the initial length, which seemed a bit redundant.
havenn: in Perl 6, the default is whatever the first operation is. if it's '+=', the default is 0. 21:24
havenn masak: Yeah, too many classes have += in Ruby, so it doesn't know what you're trying to do.
diakopter masak: too bad it won't let me prefix<)> 21:26
masak havenn: right. Perl is operator-oriented, so it knows infix:<+> is to do with numbers. 21:27
diakopter why aren't *fix:<here> regexes at here 21:28
masak why should they be? you're declaring names. 21:28
masak good night, #perl6 21:31
havenn The Pythonista version looks nothing at all like Perl6 or Ruby >.>: gist.github.com/3928203 21:52
jnthn sleep & 22:04
grondilu just watched an interesting video with a guy saying "code is art": www.youtube.com/watch?v=6akcfoJ05Aw 22:26