»ö« 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.
lue feels he should remove Exceptions from the depgraph generator. 1) They're obviously needed everywhere in src/core 2) The complete depgraph of src/core he just generated is a monster with exceptions. 00:05
masak indeed, it might be more informative to generate the thing without exceptions. 00:15
in a sense, they're orthogonal to the rest of the type system.
'night, #perl6
sorear knight masak 00:17
sorear o/ whiteknight 00:29
whiteknight hello sorear 00:58
flussence is there a FAQ for how LTM/TTIAR works, anywhere? www.reddit.com/r/programming/commen...?context=3 03:07
xenoterracide bleh 03:18
xenoterracide anyone tried using Dist::Zilla for Perl6? 03:21
xenoterracide privatepaste.com/f68cda11fe I could swear this worked whenever I was here last 03:29
privatepaste.com/e178c9e2b8 errors 03:31
skids xenoterracide: well, it should not work AFAICT. You can't override a multi signature like you can an only; it just adds another candidate, which is ambiguous with a single positional parameter. 03:40
xenoterracide oh how frustrating 03:49
I give up on full interface support
skids You can use the signature to accomplish it.
xenoterracide how do you figure
skids depending on how deep you need to go, either put a type restriction of ::?CLASS on the invocant, or use a where clause. 03:50
xenoterracide all I really want is to require certain signatures be provided by an implementation 03:51
skids Oh. Not quite sure of that... I think protos are just dispatchers? 03:53
sorear I still don't like the idea of an interface role trying to dictate such implementation details 03:54
I'm sure you can do it with a metaclass override
skids I suppose maybe there might be a use case in ORBA/ABI type stuff. 03:57
sorear maybe, but it's an awkward fit 03:58
xenoterracide sorear: I don't see it as dictating implementation details, just required interface... must provide 1 method that takes a string (or perhaps I should have said Stringy?) and another that takes an IO Handle 04:05
sorear xenoterracide: what if I provide a single method that takes either? 04:06
xenoterracide hmmm.... 04:07
sorear also, roles are allowed to provide default implementations; there ought to be a default implementation of the IO version in terms of the Buf version
Digesting a Str is not a well-defined operation since Perl 6 does not spec an encoding 04:08
xenoterracide idk, though I don't like the idea of doing if ( Str ) { ... } elsif ( IO ) { ... } all the time
that's the whole point of multi methods to me, is not doing that
sorear xenoterracide: multi dispatch in niecza is pretty slow and I'm the wrong kind of lazy, so I tend to write if chains instead of optimizing MMD
xenoterracide sorear: ah, sorry 04:09
sorear digesting a Str should start by encoding the string using UTF-EBCDIC 04:10
xenoterracide I'm using rakudo for now, though it's probably slow there too
sorear or UTF-7 with odd parity 04:11
xenoterracide UTF-7? why's that?
I'll be honest, Digest just looked like something interesting to work on so I kind of have no idea what I'm doing 04:12
sorear xenoterracide: snarkiness aside, the signatures should be (Buf) and (IO)
xenoterracide it is a good excuse to learn too much about unicode
sorear a deliberate feature of Perl 6 is that it almost never does implicit coercion between Buf and Str 04:13
because a large category of bugs in Perl 5 come about when you lose track of whether a given string contains octets or characters
skids xenoterracid: the strategy I used in Sum:: was not to even try to get different algs to all look alike, and write roles you can mix into the algs as appropriate to the underlying alg, to present the API you want for your application. 04:14
the individual alg modules expect arguments optimal to what they are underneath, and doc what they expect in the manpage. 04:15
xenoterracide skids: is Sum PP ? 04:18
skids PP?
xenoterracide Pure Perl
skids In fact yes, but not in principle. 04:19
I do have some working Zavolaj code for libmhash, but have not comitted it yet.
(Some of the algs are not usable yet due to speed/memory concerns -- Sum assumes laziness that isn't quite there yet so lists tend not to pipeline like it thinks they should.) 04:20
xenoterracide skids: I was thinking of just using NativeCode and building on glibc/openssl for now 04:22
however the things that I'm trying to do is make it so that the client code can look the same (or close to) regardless of algorithm 04:23
maybe you have to pass some things to the initial constructor
but after that most of these things seem to do the same things
but I'm not an expert in this area 04:24
skids Eventually I plan to offer prefab classes with the appropraite marshalling roles mixed in that behave consistently across the algs.
xenoterracide skids: why did you call it Sum::? 04:25
skids Because it covers digests, checksums, and eventually things like rolling hashes. 04:26
xenoterracide is not at all the thing that comes to mind when I think Sum:: 04:27
skids So Sum left more vernacular room.
it's fairly common to refer to digests/hashes as "sum"s. i.e. sha*sum cmdline names. 04:29
xenoterracide yeah I just think math though when I think sum Hash:: would be appropriate if perl didn't use it to mean Dictionary
just curious 04:30
skids I avoided Hash very purposefully just because of that :-)
xenoterracide I figured
for all of the less than satisfactory interfaces in perl 5, I've never had any complaints about Digest, and so I figured getting that with at least a NativeCode implementation of SHA based on OpenSSL is worthy. 04:32
Digest is mostly an interface not an implementation though 04:33
skids I think there will be plenty of P5 coders coming in wanting a feel-alike, yes. 04:34
xenoterracide I mean if there's really a better idea I'd love to understand it
sorear: why can't you ask strings what encoding they are? and why isn't the default UTF-8 04:35
sorear xenoterracide: a string doesn't have an encoding, it's just a list of integers 0-0x10FFF 04:36
10FFFF rather 04:37
skids So have you managed to tame Zavolaj in your impl yet? I could paste you what I had to do. It is not fast to get the data over to the C api within Zavolaj's current limitations. 04:40
xenoterracide me, no, I've not even begun to experiment 04:41
well with zavolaj, I've mostly been experimenting with Perl6 04:42
xenoterracide also why is it called Zavolaj, when it's 'use NativeCall;' 04:43
sorear: so will that make Unicode hard or easy in p6? 04:44
skids jnthn++ gets to name anything he writes as he sees fit :-) 04:45
sorear skids: was that to me? 04:46
xenoterracide: easy
skids no. explaining "Zavolaj"
xenoterracide skids: is what you had to do in your Sum Repo? I don't really expect anything to be /fast/ at this point
sorear skids: 20:40 < skids> So have you managed to tame Zavolaj in your impl yet? I could paste you what I had to do. It is not fast to get the data over to the C api within Zavolaj's current limitations. 04:47
skids no, I'll try to remember how to github branch, and push some semi-working files up.
sorear skids: is "your impl" = niecza?
skids Oh, no I was asking about Digest::
xenoterracide yeah I haven't really implemented anything yet
skids In niecza most everything I want to write blocks on Failure
xenoterracide I was mostly trying to find a way to make algorithms conform to an interface 04:48
and then I burned out
and played video games
a lot
and there will probably be more of that 04:49
skids has been resisting the borderlands2 temptation all night.
xenoterracide skids: I have to play borderlands 1 first
I have years of back gaming to catch up on 04:50
starting with Mass Effect
rurban_ rakudo and nap pass their test suites with parrot/threads. Just samples which use threads do not work yet, because of nqplexpad with proxies lexicals. 04:55
skids xenoterracide: I pushed some code to branch "NativeCall" in perl6sum. Have no idea as to whether I left it in any kind of working state. 05:00
xenoterracide skids: alright, I'll check it out 05:01
skids It's in lib/Sum/Zavolaj.pm6 and lib/Sum/MHash.pm6 The Adler.pm6 file uses it as a test case.
It is very ugly :-)
skids rurban_++ I know it's a while off but I'm actually eagerly looking forward to spending evenings lost in rakudo threading mysteries. 05:21
rurban_ see the nqp/gh67-threads branch 05:22
felher good morning, #perl6 05:33
FROGGS_ good morning 08:13
sorear o/ FROGGS 08:43
FROGGS hi 08:43
moritz \o 08:44
cedrvint hello #perl6 10:19
sorear: does Niecza support :bytes in regexp? 10:21
sorear no 10:22
cedrvint any roadmap about that?
moritz doesn't think :bytes makes much sense
sorear cedrvint: it will probably be removed from the spec
moritz consider / ^ [:bytes . ] \w /
cedrvint moritz: how could I parse binary format then? 10:23
sorear since perl 6 is encoding agnostic, it doesn't make much sense to mix :bytes and :!bytes
moritz what if the first character in $_ is a multi-byte character?
sorear rx:bytes // makes some sense though
moritz then \w would have to try to match the left-over continuation bytes, but that doesn't make any sense at character level
sorear but that's not :bytes *in* regexp :D
presumably rx:bytes regexps would be unmixable with non-bytes regexps 10:24
moritz cedrvint: you could decode as latin-1, and then match against the Str
sorear and a 'use re :bytes' pragma could be used to force :bytes mode, e.g. in a grammar for binary data
sorear ponders how viable this is 10:25
cedrvint sorear: it sounds great to me :) 10:26
sorear I wish I could find a source of motivation proportionate to the ideas 10:40
cedrvint sorear: Hachoir in Perl 6 ? bitbucket.org/haypo/hachoir/wiki/Home 10:44
and reverse engineering tools in Perl 6 10:45
sorear sleep& 10:51
masak g'day, #perl6 11:15
FROGGS_ hi masak 11:19
masak yay, I got Parsec working locally! \o/ 11:21
time to write a Parsec parser... :D
FROGGS needs to google Parsec 11:22
masak it's a Haskell parser combinator library.
FROGGS and I guess that sounds like fun? 11:24
masak excellent Saturday recreation, yes. 11:25
masak rn: sub infix:<o o o o>($a, $b, $c, $d, $e) { say "$a took $b down to $c to $d a full $e" }; "I" o "dog" o "the vet" o "conduct" o "examination"; 11:33
p6eval rakudo 0bfba1: OUTPUT«===SORRY!===␤Confused␤at /tmp/NMW9_PZyA7:1␤»
..niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Unable to parse infix:sym<o o o o> at /tmp/g4x6DAKzrc line 1:␤------> }; "I" o "dog" o "the vet" o "conduct" ⏏o "examination";␤Couldn't find final 'o o o'; gave up at /tmp/g4x6DAKzrc line 1 (EOF):␤------>…
FROGGS my goal for today is to get my fileserver up and running, but that's my goal weeks now :/
masak awww
masak who wants Tuesday in github.com/perl6/mu/blob/master/mi...2/schedule ? 11:38
after we fill slot 4, we're good until December 12th.
FROGGS I would if I could 11:50
moritz why can't you?
GlitchMr Perhaps if I would have ideas 11:51
moritz there are lots of ideas in the topic-brainstormin file
masak write about something Perl 6-related that you would like to tell the world about.
FROGGS because I dont know what to write and when thinking of stuff that is interesting I believe I'm not good enough for it
moritz just try it, and let us preview the post. Maybe it's good enough after all. 11:52
and if you want help, just ask
remeber, hybris is a virtue :-)
GlitchMr Perhaps I could try making something about panda package manager
FROGGS ;o) 11:53
GlitchMr It wasn't described before, was it?
FROGGS well, I'll think about it
moritz GlitchMr: no, just mentioned briefly, I think
FROGGS packaging is important since we just have a bunch of modules 11:54
would be cool if more ppl start porting their stuff to Perl 6 11:55
GlitchMr I'll try making post about panda package manager and I will show it on this channel today, ok? 11:58
moritz GlitchMr: that would be great, yes 12:00
masak ++GlitchMr 12:01
GlitchMr I also would like somebody to proofread it, as I'm not native English speaker, but that after it will be done ;-)
masak oh, no problem. I volunteer to proof it. 12:04
GlitchMr Thanks 12:05
moritz ++masak 12:33
cedrvint moritz: I agree with you, 12:33
\w doesn't make sense with :bytes 12:34
maybe :bytes would forbid such subrules (encoding related) ? 12:35
because latin-1 encoding seems to be an error-prone workaround 12:36
Woodi hallo # 12:43
std: while( my $a = now ) { say $a; }
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Word 'while' interpreted as 'while()' function call; please use whitespace instead of parens at /tmp/DYMX5B7zxe line 1:␤------> while⏏( my $a = now ) { say $a; }␤Unexpected block in infix position (two terms in a row…
Woodi ehmm, adding () realy need to be syntax error ? 12:44
moritz Woodi: no, it's only a warning 12:48
Woodi: the syntax error is that you use two terms in a row
because while() is a call to a subroutine
so the block after it is misplaced
GlitchMr std: while(42); # this is fine 12:49
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'while' used at line 1␤Check failed␤FAILED 00:00 41m␤»
GlitchMr std: sub while {}; while(42); # this is fine
moritz std: sub while($) { }; while(42);
p6eval std a8bc48f: OUTPUT«ok 00:00 42m␤»
std a8bc48f: OUTPUT«ok 00:00 44m␤»
GlitchMr std: sub while {}; while(42) {}; # this is not
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/23eFOFO1qo line 1:␤------> sub while {}; while(42) ⏏{}; # this is not␤ expecting infix or meta-infix␤Parse f… 12:50
Woodi but execution of script halts with: ===SORRY!=== Confused at t/some.t:1 so works like error 12:52
masak Rakudo doesn't do warnings yet. 12:57
moritz at least not compile-time warnings 13:03
masak right. I was unclear. 13:18
masak "I find the best attitude is to treat programming like demon summoning: the 13:23
target is at least as smart as you, must obey the letter of your commands,
and hates you. Code accordingly."
it's from www.trout.me.uk/quotes.txt
which appears to be full of great quotes.
moritz likes it
masak I could easily plug this into fortune and my .bashrc 13:25
masak does it
masak heh, I also implemented fortune. :) 13:28
nom -e 'my $quotes = slurp("quotes.txt"); say $quotes.split(/\n\%\n/).roll'
masak hm, nom -e 'say slurp("quotes.txt").split(/\n\%\n/).roll' is slightly shorter. 13:29
masak yay, it works! :) 13:31
masak * sri remembers autrijus crying for help on irc after he locked himself in a room at Leopold Toetsch's house :) 13:38
...wow.
masak traces of ancient history. Leo was doing Parrot and au was doing Perl 6, apparently from within a locked room ;) 13:40
GlitchMr Asked to remove 4 spaces, but the shortest indent is 0 spaces in block at config:18 13:41
Is it compile time warning?
masak looks like something out of the .indent() method. 13:43
r: say "foo".indent(-4)
p6eval rakudo 0bfba1: OUTPUT«Asked to remove 4 spaces, but the shortest indent is 0 spaces in block at /tmp/LpGuZ3AqSd:1␤␤foo␤»
GlitchMr masak: gist.github.com/4182308
This is the code I'm getting this
Any idea why? 13:44
masak yeah, 'cus of line 15.
arguably that shouldn't warn, though. 13:45
masak (because empty lines should stay empty after indent/outdent) 13:45
I don't believe the spec mentions that, but I believe that's a sensible rule.
moritz it is
masak anyone disagree?
GlitchMr Just wondering, can the exception for empty lines be done?
masak I'll happily patch the spec. 13:46
GlitchMr: yes, I think that makes a whole lot of sense.
I'm just wondering if there's a target market for "indent even empty lines", meaning we should have a named parameter too. I'm provisionally leaning towards "no". 13:47
GlitchMr++ # discovering this
this is *exactly* why API design is hard.
GlitchMr Also, I've tried removing that empty line, but it still doesn't work. It seems to outdent after interpolating $ini variable.
masak someone comes and uses your function in a perfectly sensible way, and it turns out there's a case you hadn't thought of.
GlitchMr That contains new line character.
It's probably Rakudo bug, but still 13:48
masak $ini variable looks good to me.
please try to golf your warning.
GlitchMr ok
masak I'll patch the spec in the meantime.
r: say " 1\n\n 2".indent(*) 13:49
p6eval rakudo 0bfba1: OUTPUT« 1␤␤ 2␤»
masak r: say " 1\n\n 2".indent(-4)
p6eval rakudo 0bfba1: OUTPUT«Asked to remove 4 spaces, but the shortest indent is 0 spaces in block at /tmp/c_rDhiU448:1␤␤1␤␤2␤»
masak yeah, this should definitely ignore empty lines.
GlitchMr Sure
print qq:to 'END'
{"TE\nST\n"}
END
masak there's precedent. vim ignores empty lines.
GlitchMr "TE\nST\n" is expanded before parsing heredoc 13:50
Causing warnings
moritz masak: vim outdents blindly as many times as you tell it to
masak GlitchMr: that's... interesting.
and arguably not a bug.
masak thinks real hard
GlitchMr But sometimes I would like to interpolate multiline variables in heredoc. 13:51
masak I see a case being made for "no, the interpolation should be made after the outdenting".
it could even be a strong case.
because anything else is wildly surprising and counterintuitive.
GlitchMr Besides, isn't heredoc compile time construct
Or at least, it should be 13:52
masak yeah.
that's probably the rationale: outdenting should be compile-time, and interpolation runtime.
GlitchMr That problem also exists in Ruby 13:55
not_gerd hello, #perl6 13:57
masak not_gerd! \o/
not_gerd FROGGS: File::Spec is broken on my Rakudo 2012.10-126-g0961b71 13:58
not_gerd tries to use Inline::C
FROGGS not_gerd: damn it, can you give me the output? 13:59
Inline::C won't work, there is a bug in rakudo 14:00
not_gerd FROGGS: gist.github.com/4182415 14:01
hmm... so I'll have to look at NativeCall 14:02
moritz r: say min(1, 2, 4) 14:05
p6eval rakudo 0bfba1: OUTPUT«1␤»
FROGGS not_gerd: I'll have a look later today, I guess I can at least fix File::Spec, maybe Inline::C works too, I think its just that its impossible to use Inline::C and NativeCall together right now 14:06
moritz I think I have a fix for Str.indent 14:13
masak oh, I forgot to push my spec commit. 14:21
masak does so
dalek ecs: 749445a | masak++ | S32-setting-library/Str.pod:
[S32/Str] make .indent not care about empty lines
14:22
masak nice article about a seemingly nice book about BASIC and labyrinths. www.slate.com/articles/technology/b...iewed.html
here's a Perl 6 program that does the same: 14:24
perl6 -e 'sub MAIN($width, $height) { for ^$height { say <\\ />.roll($width).join } }' 10 10
masak though this is much nicer, and perhaps closer in intent to the original: say ("\x2571", "\x2572").roll($width).join 14:26
masak actually, let's just go with perl6 -e 'loop { print ("\x2571", "\x2572").roll }' 14:27
masak starts it and stares, transfixed 14:28
felher this is kind of hypnotic ... 14:30
masak :)
masak supplies 'loop { print <9585 9586>>>.chr.roll }' to the HN thread
felher HN ? 14:32
masak Hacker News.
actually, shoulda done 'loop { print <9585 9586>.roll.chr }' :)
news.ycombinator.com/item?id=4856207
felher ah, nice :) 14:33
masak 'loop { print <╱ ╲>.roll }' works too, at least if your terminal is set up right ;) 14:34
felher Seems like it is :) 14:35
pmurias hi 14:43
felher o/ 14:44
moritz seems I can't push to github
ssh_exchange_identification: Connection closed by remote host
masak :( 14:45
dalek kudo/nom: 8444e8d | moritz++ | src/core/Str.pm:
[Str.indent] ignore empty lines for outdenting
14:46
masak should also ignore empty lines for indenting... :) 14:53
basically, empty lines should just pass through .indent unchanged.
moritz r: say "a\n\nb".indent(2).perl 14:54
p6eval rakudo 0bfba1: OUTPUT«" a\n \n b"␤»
pmurias moritz: your ast dumper for nqp can handle all ast nodes? 15:08
dalek : 2180627 | gerdr++ | misc/perl6advent-2012/schedule:
[p6advent] claim day 4

Intends to show that Rakudo is 'fast enough' for Project Euler
15:25
not_gerd the article is mostly written, will probably finish later today 15:26
masak not_gerd++ 15:30
masak should start writing on his article for tomorrow 15:31
felher moritz++ # first post :) 16:04
moritz pmurias: yes, but it doesn't output all information from all node types 16:15
not_gerd: please /msg me your email address so that I can invite you to the wordpress site
dalek kudo/nom: 3ffbec7 | moritz++ | src/core/Str.pm:
do not indent empty lines
16:17
masak moritz++ 16:23
not_gerd if anyone wants to take a short trip into the future, that's how my advent post will look like: gist.github.com/73e4f265c2c0b500b568 16:33
moritz not_gerd: since you talk about performance at the start of the post, it might make sense to include rough run times 16:34
not_gerd should all be <1s, but that's worth mentioning, yes 16:35
masak not_gerd: '(with exclusive end)' sounds a bit confusing. maybe '(excluding the right endpoint)'. 16:36
and I agree about benchmarks.
not_gerd: might be worth mentioning under problem 3 that infix:<div>, as opposed to infix:</>, preserves the original type of the number, and so rounds the integers down. 16:37
not_gerd ok, <1s was a bit optimistic - the slowest one took ~5s 16:38
masak "Problem 009" -- should that be "Problem 9" to be consistent with the other numbering?
not_gerd masak: yes, thanks 16:39
masak under Problem 47, I would really like to see the C code ;) 16:40
finished reading. that is a nice post. 16:41
not_gerd++
not_gerd masak: the C code needs some cleanup - that's the main thing still missing
I'll probably add the Perl6 code as well that takes $forever 16:42
masak :)
moritz but yes, overall a nice post. not_gerd++
not_gerd is building an up-to-date Parrot/NQP/Rakudo 16:45
dalek ast: 912d361 | moritz++ | S32-str/indent.t:
Str.indent tests with empty lines
16:52
not_gerd needs to log out
feel free to leave more comments on the gist
bye, #perl6 16:53
moritz \o 16:53
GlitchMr I'm doing a spellchecking on my perl6advent article 16:54
But I've found a spelling error.
'Succesfully installed Config::INI'
It should be "Successfully".
But that's error in Panda 16:55
FROGGS well, fork & fix & push ;o) 16:57
dalek nda: 21ce4bf | moritz++ | lib/Panda.pm:
fix spelling error. GlitchMr++
GlitchMr I was too late :-P 16:58
FROGGS hehe
GlitchMr %*CUSTOM_LIB<perl> is checked before %*CUSTOM_LIB<site>? Why? 17:15
This makes it impossible to update core modules
dalek kudo/nom: da6569f | moritz++ | src/core/Str.pm:
fix "".indent(*)
17:20
dalek : ce4e17c | (Konrad Borowski)++ | misc/perl6advent-2012/schedule:
Claim day 12
17:25
ast: ec94b1d | moritz++ | S32-str/indent.t:
re-add rakudo skip that I accidentally removed
17:28
GlitchMr Cannot call 'indent'; none of these signatures match: 17:31
:(Str : Int $steps, Mu *%_)
:(Str : $steps, Mu *%_)
GlitchMr Huh? 17:31
Shouldn't the third signature match indent?
Even when used with Str
moritz there's a constraint which Signature.perl ignores 17:33
GlitchMr masak: gist.github.com/4183370
rurban I hate wordpress formatting. I tried my best at reiniurban.wordpress.com/ but still annoying. Don't they support markdown? 17:36
GlitchMr No
They don't support MarkDown
I just have used Markdown in my article to have some human-readable language to work with. 17:37
(and because I use Markdown on my blog)
moritz rurban: the best you can do is to produce HTML, and then remove newlines from the HTML 17:40
GlitchMr I don't know why Perl6advent uses Wordpress.com, but it's probably too late to change that. 17:41
moritz GlitchMr: it's not perfect, but it works and is pretty reliable
and it survived links from the frontpages from slashdot, reddit and hackernews
GlitchMr Right 17:42
btw, moritz, what do you think about gist.github.com/4183370 17:43
moritz GlitchMr: needs some language polishing, but otherwise quite nice 17:44
GlitchMr: maybe worth mentioning that panda can install into user's home directories 17:45
GlitchMr I know
moritz even perl 5's toolchain hasn't supported this for long
GlitchMr I'm still working on it
Also, I think I've mentioned that 17:46
But it isn't really noticeable, so I don't know
"Panda installs modules globally when you have write access to installation directory, locally otherwise, so you can use panda even when Perl 6 is installed globally without installing modules like local::lib you had to install in Perl 5."
moritz something like that, but add a bit of punctuation 17:47
English is well suited for short sentences.
GlitchMr I will try ;-)
I'm really bad at English.
masak GlitchMr++ # nice! 17:48
tadzik++ # panda looks so nice, too
GlitchMr moritz: gist.github.com/4183370
I have put a dot.
masak GlitchMr: should I send corrections here, or over privmsg? 17:49
GlitchMr I don't care, really
masak privmsgs 17:50
masak so, who wants slot #13? :) 18:10
(only five slots left! grab them while they still last!) 18:11
GlitchMr wow, only 5 slots left
masak though slot 24 should probably be something special...
like a TimToady post or something.
masak hi, whooguy 18:12
GlitchMr Previous year we had multi subs.
For 24th day
GlitchMr Actually, I think that "Idiomatic Perl 6" was more interesting. 18:13
masak r: my $squarer3 = { my $x = shift @_; $x * $x }; say $squarer3(11) 18:15
p6eval rakudo da6569: OUTPUT«121␤»
masak nice.
cedrvint GlitchMr: are you sure Signature.ACCEPT was included in the latest R*? 19:55
sorear good * #perl6 19:58
GlitchMr It isn't? 20:00
cedrvint I'm not sure. 20:00
cedrvint makes some tests 20:01
dalek nch-scripts: 45e025b | GlitchMr++ | dice.pl:
Fix #1 by conditional roll subroutine.
20:02
cedrvint star: :() ~~ :()
p6eval star 2012.10: ( no output )
cedrvint rn: :() ~~ :() 20:03
p6eval rakudo da6569: ( no output )
..niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Action method fakesignature not yet implemented at /tmp/BhfDGR2GkK line 1:␤------> :(⏏) ~~ :()␤␤Action method sigterm not yet implemented at /tmp/BhfDGR2GkK line 1:␤------> :()⏏ ~~ :()␤␤…
GlitchMr This is star 2012.10
Newest version is 2012.11
Also, finally closed that pull request that was in this repository for... two years!
cedrvint GlitchMr: how I can test Signature.ACCEPTS (my test looks wrong)? 20:04
dalek : f370bcf | (Konrad Borowski)++ | misc/perl6advent-2012/topic-brainstorming:
Claim Panda
20:05
GlitchMr signature-signature.t
In roast
Looks like you're right 20:06
Fixing
cedrvint r: say :(Str) ~~ :(Str)
p6eval rakudo da6569: OUTPUT«True␤»
cedrvint r: say :() ~~ :()
p6eval rakudo da6569: OUTPUT«True␤»
cedrvint star: say :() ~~ :()
p6eval star 2012.10: OUTPUT«False␤»
cedrvint OK, "say" was missing from the test 20:07
masak folks -- December 2 advent post draft is now written.
GlitchMr star: say :(Str) ~~ :(Int)
p6eval star 2012.10: OUTPUT«False␤»
GlitchMr r: say :(Str) ~~ :(Int)
p6eval rakudo da6569: OUTPUT«False␤»
masak it can be perused over at perl6advent for those with editor privileges.
feel free to review and supply feedback.
I've set -- successfully, I hope -- auto-publishing to one minute past midnight on the 2nd. 20:08
GlitchMr Can I get editor privileges too? 20:09
dalek ast: 84c7682 | GlitchMr++ | S03-smartmatch/signature-signature.t:
Revert "Remove useless block.".

I wasn't aware it was used for documentation generation.
This reverts commit 5249f858db28764a9ee6f989782bf6a6cd319089.
flussence rpn: say ?&undefined-sub 20:10
p6eval niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'undefined-sub' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤…
..rakudo da6569: OUTPUT«False␤»
..pugs: OUTPUT«␤*** No such subroutine: "&undefined-sub"␤ at /tmp/a5c4Uy3CLL line 1, column 1 - line 2, column 1␤»
flussence is rakudo right there?
GlitchMr flussence: It's known 20:11
cedrvint masak: in a way, callbacks are anonymous functions in C ;)
GlitchMr flussence: rakudo.org/2012/11/28/rakudo-star-2...-released/ - check deprecations
flussence ok, better question, how do I sanely work around things that are NYI in half of the active implementations? 20:12
cedrvint masak: sometimes you can even create the code on the fly (JIT compilers, typically)
flussence (or how do I implement workarounds that test for a sub not existing?)
cedrvint advocates for C, just for fun ;) 20:13
flussence (i.e. I need a &fork, and all I've got is a screwdriver) 20:14
masak cedrvint: troo. and clang and gcc even give you closure semantics.
flussence oh wait, this might work 20:15
rpn: say ?(try { fork })
p6eval rakudo da6569: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&fork' called (line 1)␤»
..niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'fork' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /hom…
..pugs: OUTPUT«␤»
flussence rpn: say ?(try { &fork })
p6eval pugs: OUTPUT«1␤»
..niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'fork' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /hom…
..rakudo da6569: OUTPUT«False␤»
dalek ecs: ea745ba | root++ | S10-packages.pod:
Caution that prefix<::> in declarative scenarios is different
ecs: ea4ee96 | bri++ | S (6 files):
Merge branch 'update'
ecs: 9bef5dc | skids++ | S (10 files):
Merge remote-tracking branch 'perl6'
ecs: 8e6b864 | skids++ | S06-routines.pod:
Do not use positional params as named in code example
ecs: b6a63bf | skids++ | S12-objects.pod:
When talking about native types, use lowercase enum in example.
ecs: fc0e3bd | (Konrad Borowski)++ | S (3 files):
Merge pull request #10 from skids/master

Clarify when prefix<::> can be used as in-place predeclarator
cedrvint masak: great post! 20:19
masak \o/
flussence rpn: say ?(try eval '&fork')
p6eval rakudo da6569, niecza v22-44-g0247fe5: OUTPUT«False␤»
..pugs: OUTPUT«␤»
cedrvint masak: one minor comment before I leave: your "surprise" would be more impressive (to me) if it is open later by a caller (foo -> bar -> make_surprise, unwind up to foo -> surprise !). I don't known how to do that actually. 20:21
dalek ast: 20eeb9d | amire80++ | S32-io/IO-Socket-INET.pl:
Remove a temporary flag file

Put the file name into a variable, because it's used several times.
Added unlink after every check for file's existence. As far as I understand, at that point the file is not needed any more.
20:25
masak cedrvint: hm. 20:43
r: sub foo { my $surprise = bar(); $surprise() }; sub bar { return make_surprise("Finn") }; sub make_surprise($name) { return { say "Surprise, $name!" } }; foo 20:46
p6eval rakudo da6569: OUTPUT«Surprise, Finn!␤»
masak I'm not sure I see the difference in impressiveness :)
maybe I'm missing the point of what you're saying.
cedrvint masak: my point was: unlike in C, unwinding the call stack doesn't clobber variables 20:58
cedrvint masak: but that's not really important here, I guess 20:58
r: sub foo { my $surprise = bar(); $surprise() }; sub bar { my $string = 'test'; return make_surprise($string) }; sub make_surprise($name) { return { say "Surprise, $name!" } }; foo 21:00
p6eval rakudo da6569: OUTPUT«Surprise, test!␤»
cedrvint masak: $string is still "alive"
huf that's what closures do, no? 21:02
cedrvint (well, this test works in C because "test" is stored in a RO data segment)
masak I can almost see what you're getting at. 21:04
cedrvint huf: in C, bar's stackframe won't survive on C<return>, thus everything allocated in its stack could be overwritten
masak and I can also sort of see why C doesn't allow closures by default.
cedrvint masak: but I don't want to introduce noise in your post.
huf well yes, c doesnt have closures
masak because it would necessitate an automatic memory management policy above what C already provides. 21:05
cedrvint huf: only nested functions ;)
huf only as a nonstandard extension, no?
cedrvint masak: yes
huf: you're right: its a GCC extension
huf yes, and that of course doesnt do much magic
since the outer function is still running, its stack is still there
cedrvint exactly 21:06
huf i'm just saying, this difference can be summed up as "blocks are also closures"
if i read that bit of code right
cedrvint I agree
huf how do blocks know when to self-call? 21:07
cedrvint what's self-call ? 21:08
huf well i assume a block on its own will just run
huf but return BLOCK seems to return a callable 21:09
pmurias yes
cedrvint huf: like C<for "OK" { .say }> ? 21:10
huf pmurias: so how does it decide who calls that callable? 21:11
cedrvint "for", "if", ... I guess
huf if a block is in void context, it runs itself?
pmurias yes 21:14
cedrvint std: my $truthiness = { "Colbert".say }; if Tree $truthiness; 21:15
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Missing block (apparently gobbled by undeclared routine?) at /tmp/EoFt2iA0f_ line 1:␤------> = { "Colbert".say }; if Tree $truthiness⏏;␤ expecting any of:␤ desigilname␤ twigil␤Undeclared name:␤ 'Tree' used at line
..…
pmurias huf: S03:190 21:16
cedrvint std: my $truthiness = { "Colbert".say }; if True $truthiness;
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Missing block at /tmp/TZ7IRnHW1A line 1:␤------> truthiness = { "Colbert".say }; if True ⏏$truthiness;␤ expecting any of:␤ infix or meta-infix␤ infixed function␤Parse failed␤FAILED 00:00 44m␤»
pmurias huf: it's a syntactic destinction 21:17
masak huf: an earlier advent post summarized it as "it runs if not used as an rvalue". which I guess is tantamount to "it runs if in void context".
cedrvint doesn't have the truthiness :-/ 21:19
masak cedrvint: 'if' requires braces. 21:20
it's not enough for the braces to be around a block stored in a variable. 21:21
they have to be there syntactically.
'if True $truthiness' is two terms in a row. so is 'if True { ... }', of course, but it gets a special exemption, because 'if' is a syntactic form. 21:22
pmurias rakudo: my $foo=sub foo {{say "hi"}}; 21:22
p6eval rakudo da6569: ( no output )
pmurias rakudo: my $foo=sub foo {{say "hi"}};$foo();
p6eval rakudo da6569: OUTPUT«hi␤»
cedrvint ah, OK 21:25
masak though it's an intriguing idea to make something like 'if True $truthiness' work. feels like it should in a language like Smalltalk or Io. :) 21:29
cedrvint sometimes I want to write: C<my $foo = given $bar { when Real { 1 } when Str { 2 } }> but it seems I have to write: 21:32
r: my $bar = 'test'; my $foo0 = { given $bar { when Real { 1 } when Str { 2 } } }; my $foo = $foo0(); 21:33
p6eval rakudo da6569: ( no output )
cedrvint r: my $bar = 'test'; my $foo0 = { given $bar { when Real { 1 } when Str { 2 } } }; $foo0().say;
p6eval rakudo da6569: OUTPUT«2␤»
cedrvint that is, it requires one more indirection 21:34
am i right?
masak or use 'do'. 21:35
r: my $bar = 'test'; my $foo0 = do given $bar { when Real { 1 }; when Str { 2 } }; say $foo0
p6eval rakudo da6569: OUTPUT«2␤»
cedrvint masak++
masak also, I'm surprised Rakudo doesn't complain about the lack of semicolon between your 'when's. 21:36
that's quite possibly a bug.
std: given 1 { when Real { 1 } when Str { 2 } }
cedrvint std: my $bar = 'test'; my $foo0 = { given $bar { when Real { 1 } when Str { 2 } } }
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/C8ZKP99tRu line 1:␤------> given 1 { when Real { 1 }⏏ when Str { 2 } }␤ expecting horizontal whitespace␤Parse failed␤FAILED 00:00 42m␤»…
std a8bc48f: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/bA7tZmd2b0 line 1:␤------> y $foo0 = { given $bar { when Real { 1 }⏏ when Str { 2 } } }␤ expecting horizontal whitespace␤Parse failed␤FAI…
masak submits rakudobug
cedrvint don't! :)
it would break my code ;) 21:37
masak ;)
sorry, I simply have to.
cedrvint n: my $bar = 'test'; my $foo0 = { given $bar { when Real { 1 } when Str { 2 } } }; $foo0().say; 21:39
p6eval niecza v22-44-g0247fe5: OUTPUT«===SORRY!===␤␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/ybbRlLlHp7 line 1:␤------> y $foo0 = { given $bar { when Real { 1 }⏏ when Str { 2 } } }; $foo0().say;␤␤Parse failed␤␤»… 21:40
cedrvint has to fix advent #3, then. 21:43
moritz it's likely fine when you have a newline after the }
cedrvint that explains why advent #3 works with Niecza 21:44
(before "fix")
dalek p: 7ce401e | rurban++ | 3rdparty/dyncall/ (3 files):
fix darwin with macports libtool

the gnu/macports libtool does not understand -static. Force to use darwin special /usr/bin/libtool
21:52
p: 4a3fb26 | rurban++ | src/pmc/ (5 files):
Mark UNUSED pmc parameters as such

Fixes -Wunused-parameter warnings
masak oh yes, newline works just as fine as semicolon. 21:54
forgot to say that.
dalek p/gh67-threads: 0cc73af | rurban++ | src/pmc/nqplexpad.pmc:
[GH #67] Use rurban/gh870-pmc_class nqp_group.h information

pmc2c from rurban/gh870-pmc_class exports the dynpmc types, which we use to check for NQPLexInfo in NQPLexPad, to discriminate for Proxy. Proxy info is read-only.
This does not work yet
21:56
p/gh67-threads: 25ddb12 | rurban++ | src/pmc/nqplexpad.pmc:
[parrot #870] rename pmc_class_ to dynpmc_class_
p/gh67-threads: b7d9acd | rurban++ | / (2 files):
add t/nqp/67-threads.t, fix .gitignore for /nqp
cedrvint std: if True { say '1' } if True { say '2' } 21:58
p6eval std a8bc48f: OUTPUT«===SORRY!===␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/xdH_ezHQrr line 1:␤------> if True { say '1' }⏏ if True { say '2' }␤ expecting any of:␤ horizontal whitespace␤ statement_control␤Parse fa…
cedrvint r: if True { say '1' } if True { say '2' }
p6eval rakudo da6569: OUTPUT«1␤2␤»
cedrvint same problem here 21:59
moritz r: if 1 { } 2
p6eval rakudo da6569: OUTPUT«===SORRY!===␤Confused␤at /tmp/weRSw8oYDG:1␤»
moritz r: if 1 { } if 1 { }
p6eval rakudo da6569: ( no output )
moritz r: { } if 1 { } 22:00
p6eval rakudo da6569: OUTPUT«===SORRY!===␤Confused␤at /tmp/GC2CpTgOO8:1␤»
FROGGS weird
cedrvint does it mean the semicolon isn't useful in that case ? (no possible ambiguity) 22:02
FROGGS r: if False { say '1' } if True { say '2' }
p6eval rakudo da6569: OUTPUT«2␤»
cedrvint and it could be removed from STD ?
moritz no, it's simply a bug in rakudo's parser
the rule is simple: you need a semicolon between two statements, unless the first ends with }\n 22:03
and rakudo sometimes allows } without \n, and that's a bug
cedrvint it makes sense
r: if True { say '1' }if True { say '2' } 22:04
p6eval rakudo da6569: OUTPUT«1␤2␤»
cedrvint (without space between '}' and 'if')
masak I like the semicolon-or-newline rule a lot. I think it's one of the sanest design decisions of Perl 6. 22:19
FROGGS and it fits larry's name 22:23
lichtkind im here to dicuss possible perl 6 advent calendar topic 22:45
lichtkind because i did the re talk i suggest i take a re feature 22:45
masak 're'? 22:46
lichtkind yes i mean rx
as in rx// or use re ....; 22:47
masak feel free. 22:48
sorear hello lichtkind 22:57
lichtkind hej sorear 22:59
lue hello o/ 23:29
lue [backlogging] is that why lines such as " when 1 { \n <snip> \n } when 2 { \n" broke in my code? 23:30
r: given 1 {␤when 1 {␤say "1";␤} when 2 {␤ say "not 1";␤}␤} 23:31
p6eval rakudo da6569: OUTPUT«1␤» 23:31
lue r: given 1 {␤when 1 {␤say "1";␤} default {␤ say "not 1";␤}␤}
p6eval rakudo da6569: OUTPUT«===SORRY!===␤Unable to parse expression in block; couldn't find final '}' at line 3, near "when 1 {\ns"␤»
lue That's a bug, isn't it? 23:32
r: given 1 {␤when 1 {␤say "1";␤}␤ default {␤ say "not 1";␤}␤} 23:33
p6eval rakudo da6569: OUTPUT«1␤»