»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
segomos nice 00:05
colomon is intoxicated at the ease of working with rakudobrew 00:24
timotimo keeping my own rakudos, nqps and moarvms up to date is simple enough for me, but it really is a tiny bit annoying to be cding into pandas folder and rebootstrapping 00:26
at least rebootstrap will re-install the modules you had before
newperl hello 00:26
timotimo hello, newperl! 00:27
what can we do for you today? :)
newperl after using for a bit i really like the ability today
i new to perl and perl6
colomon timotimo: rakudobrew does that automatically when you rebuild!
timotimo how does rakudobrew handle having local patches? 00:28
colomon timotimo: I've got no clue. :)
timotimo probably doesn't, so it's not for me i fear :)
but i'll keep recommending it to everyone
newperl i have a question is their a way to submit a perl mascot concept? i would love to make one 00:29
timotimo newperl: glad to hear you're enjoying your time with The Perls
at least the Perl 6 mascot (camelia, the butterfly) has been in use for a long time now; i'm not sure if people are willing to give her up
i don't know anything about Perl 5
newperl well the butterfly is nice, i something in mind to draw and to give a symbol of animal that represent it. perl have great ability for all types of things especially today that we need more automation 00:32
for example their lot more data than ever before
and perl is the key
timotimo rakudo is currently much too slow to handle "big data" payloads, but at least we can parallelize 00:33
and perl could very well be a tool for Everybody™ to handle whatever data they come across in their lives
newperl true
timotimo though to be honest, excel/libreoffice spreadsheets are already pretty powerful (but only for numbers, not really text)
newperl so what would people think as a platypus, since its uniq and perl does many things well 00:34
for icon
timotimo platypuses are really adorable
the artistic license 2 says you can distribute your own version of rakudo with a modified name and logo if you want to :) 00:35
newperl sounds cool
newperl its most likely going a tough road but i am going to work on it, 00:39
once i create the platypuses icon, is their a way email it to everyone of the perl community? 00:41
TimToady you should know that Darwin already claims the platypus as a mascot... 00:42
and no, there's no way to mail everyone, thankfully :) 00:45
colomon TimToady! \o/ 00:48
timotimo gaaaah i'm looking for this gif 00:51
and i'm not finding it
and i have now spent like 15 minutes :(
colomon afk # off to pub 00:52
BenGoldberg I know of an animal which is much stranger than a platypus... namely, the Tardigrade. Maybe you should make a logo of one of them? 01:05
timotimo BenGoldberg: well, rakudo isn't as stable and robust as a tardigrade yet :) 01:18
BenGoldberg You mean, we can't send it into out space without a suit? Drat. 01:19
newperl how about an odder they can adapt to many things 01:24
as an icon, i forgot darwin use it 01:25
newperl the platypus 01:25
newperl good bye 01:30
Timbus r: my ($a,$b) = 'a,b,c--1,2,3'.split('--')>>.split(',').lol; say $a.perl, ' and ', $b.perl; 06:03
camelia rakudo-moar 375404: OUTPUT«().list.item and ().list.item␤»
..rakudo-{parrot,jvm} 375404: OUTPUT«("a", "b", "c").list.item and ("1", "2", "3").list.item␤»
Timbus moar cannot lol; a very serious matter
sergot morning o/ 06:41
lizmat Timbus: please rakudobug it if you think it should not escape attention :-) 06:53
ojandi Hey guys, does anybody know analog of caller for Perl6 ? How can I get stack trace ? Thanks 07:05
moritz ojandi: there's the callframe() sub, and for backtraces there Backtrace.new 07:07
m: sub f() { g() }; f(); sub g { say Backtrace.new } 07:08
camelia rakudo-moar 375404: OUTPUT«Backtrace::Frame.new(file => "src/gen/m-CORE.setting", line => 11086, code => -> () { #`(Block|140291048873912) ... }, subname => "") Backtrace::Frame.new(file => "src/gen/m-CORE.setting", line => 11087, code => method new(Backtrace: *%_) { #`(Method|74501…»
moritz m: sub f() { g() }; f(); sub g { say Backtrace.new.pretty }
camelia rakudo-moar 375404: OUTPUT«No such method 'pretty' for invocant of type 'Backtrace'␤ in sub g at /tmp/rWpZvbn1ui:1␤ in sub f at /tmp/rWpZvbn1ui:1␤ in block at /tmp/rWpZvbn1ui:1␤␤»
moritz m: sub f() { g() }; f(); sub g { say Backtrace.new.Str }
camelia rakudo-moar 375404: OUTPUT« in method new at src/gen/m-CORE.setting:11086␤ in sub g at /tmp/9PWv8Tf64A:1␤ in sub f at /tmp/9PWv8Tf64A:1␤ in block at /tmp/9PWv8Tf64A:1␤␤»
moritz there you go, backtrace without any exception
ojandi Cool, that's what I need. Thanks
ojandi m: say "This is a test. I'm newbie )" 07:10
camelia rakudo-moar 375404: OUTPUT«This is a test. I'm newbie )␤»
ojandi m: sub t { sub f { say callframe() } } 07:15
camelia ( no output )
moritz ojandi: you also need to call it :-)
m: sub t { sub f { say callframe() }; f() }; t()
camelia rakudo-moar 375404: OUTPUT«Cannot find method 'perl': no method cache and no .^find_method␤ in method perl at src/gen/m-CORE.setting:9140␤ in method perl at src/gen/m-CORE.setting:1063␤ in method gist at src/gen/m-CORE.setting:1055␤ in sub say at src/gen/m-CORE.setting:1…»
moritz eeks
ojandi Yes. ^-)
moritz m: sub t { sub f { say callframe().^name }; f() }; t() 07:16
camelia rakudo-moar 375404: OUTPUT«CallFrame␤»
ojandi m: sub t { sub f { say callframe() } }; t();
camelia ( no output )
moritz m: say CallFrame.^methods
camelia rakudo-moar 375404: OUTPUT«new line file callframe <anon> <anon> <anon>␤»
moritz m: sub t { sub f { say callframe().file }; f() }; t()
camelia rakudo-moar 375404: OUTPUT«/tmp/5T71W60Ea0␤»
moritz m: sub t { sub f { say callframe().line }; f() }; t()
camelia rakudo-moar 375404: OUTPUT«1␤»
ojandi m: sub t { sub f { say callframe().line }; f() }; t(); 07:17
camelia rakudo-moar 375404: OUTPUT«1␤»
moritz m: sub t { sub f { my %möp; say callframe().my.keys.perl }; f() }; t() 07:17
camelia rakudo-moar 375404: OUTPUT«("\%möp", "\$!", "\$/", "\$_", "\$*DISPATCHER", "\&?ROUTINE", "RETURN").list␤»
moritz m: sub t { sub f { my %möp; say callframe(1).my.keys.perl }; f() }; t()
camelia rakudo-moar 375404: OUTPUT«("\$!", "\$/", "\$_", "\&f", "\$*DISPATCHER", "\&?ROUTINE", "RETURN").list␤»
moritz you see that if you go one level up, it finds sub f (written as &f) in the lexpad 07:18
ojandi Yep
I see. What does it mean syntax my.keys. Key it's a hash keys, but "my" i didn't catch 07:19
moritz ojandi: CallFrame.my returns a hash of lexical variables 07:22
'cause they are declared with 'my'
lizmat do Backtraces work now in moar? Seem to remember they didn't reliably :-( 07:38
moritz lizmat: there seems to be a problem with the one-line version of backtraces that warnings use 07:40
r: sub f() { warn 42 }; f() 07:41
camelia rakudo-{jvm,moar} 375404: OUTPUT«42␤»
..rakudo-parrot 375404: OUTPUT«42 in sub f at /tmp/tmpfile:1␤␤»
ojandi m: my $caller = callframe(1); say $caller.^methods(:all); 07:44
camelia rakudo-moar 375404: OUTPUT«new line file callframe <anon> <anon> <anon> infinite exists exists_key exists_pos delete delete_key delete_pos list flat eager hash elems end uniq squish pick roll reverse sort values keys kv pairs reduce combinations permutations classify categorize lol …»
ojandi m: my $caller = callframe(1); say $caller.keys; 07:45
camelia rakudo-moar 375404: OUTPUT«0␤»
ojandi m: my $caller = callframe(1); say $caller.perl; 07:46
camelia rakudo-moar 375404: OUTPUT«CallFrame.new(level => 3, annotations => ("file" => "/tmp/jKgIcOTEqy", "line" => "1").hash, my => EnumMap.new())␤»
ojandi m: my $caller = callframe(1); say $caller.line; 07:48
camelia rakudo-moar 375404: OUTPUT«1␤»
ojandi m: my $caller = callframe(1); say $caller.file;
camelia rakudo-moar 375404: OUTPUT«/tmp/ImZwAEKDsk␤»
ojandi m: my $caller = callframe(1); say $caller.level;
camelia rakudo-moar 375404: OUTPUT«3␤»
ojandi What I like in Perl6 is object introspection :-) 07:52
jnthn morning, #perl6 08:40
FROGGS morning jnthn
jnthn o/ FROGGS 09:04
dalek p/async_ops: 31884dd | (Donald Hunter)++ | src/vm/jvm/ (2 files):
Add stubs for async ops on JVM.
10:04
jnthn ooh :D 10:09
donaldh++ 10:10
mathw \o/ 10:23
timotimo o/ 10:25
Ven gist.github.com/paulp/10885699 :p 10:58
tadzik it seems to be missing „” :) 11:10
dalek ecs: 9d68384 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Spec Supply.uniq( :expires )
11:23
colomon tadzik++ 11:33
dalek ecs: cd4164c | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Spec Supply.unchanged
12:00
ecs: a3348d4 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Attempt at speccing Supply.migrate
12:03
ecs: 339fada | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Stub spec Supply.(schedule_on|start)
12:07
lizmat capturing recent async developments 12:08
woolfy in awe of the Perl6-goodness! 12:10
moritz in awe of the Perl6 godess 12:23
Ven is looking at github.com/manastech/crystal 12:29
(really good type inference, simple ruby-like syntax, looks really neat)
m: sub a { 5 }; sub b { my String $s = a(); };
camelia rakudo-moar 375404: OUTPUT«===SORRY!===␤Type 'String' is not declared. Did you mean 'Stringy'?␤at /tmp/L3F_5JCrCA:1␤------> sub a { 5 }; sub b { my String⏏ $s = a(); };␤Malformed my␤at /tmp/L3F_5JCrCA:1␤------> sub a { 5 }; sub…»
Ven m: sub a { 5 }; sub b { my Str $s = a(); }; 12:30
camelia ( no output )
Ven :(
Ven thinks about that "successful typing with erlang" paper he read
Well, maybe Perl 6.5 will find it 12:33
lizmat Ven: what should be found?
Ven lizmat: that should totally fail.
you can't assign something that will always return an Int to a Str
lizmat why, Perl 6 has gradual typing
Ven m: sub a returns Int { 5 }; sub b { my Str $s = a(); }; 12:34
camelia ( no output )
lizmat ah, that 12:34
Ven I believe this should fail
lizmat yes, that could be statically analyzed: the infrastructure is there
it's just that we didn't have the tuits yet to do that at compile time
m: m: sub a returns Int { 5 }; sub b { my Str $s = a(); }; b 12:35
camelia rakudo-moar 375404: OUTPUT«Type check failed in assignment to '$s'; expected 'Str' but got 'Int'␤ in sub b at /tmp/QclT927jvs:1␤ in block at /tmp/QclT927jvs:1␤␤»
lizmat m: m: sub a { 5 }; sub b { my Str $s = a(); }; b
camelia rakudo-moar 375404: OUTPUT«Type check failed in assignment to '$s'; expected 'Str' but got 'Int'␤ in sub b at /tmp/lL2ixlxowO:1␤ in block at /tmp/lL2ixlxowO:1␤␤»
jnthn Yes, the promise is "fails at runtime at latest", and compilers are free to rule out things that couldn't possibly work at runtime during compile time. 12:39
But they're not obligated to. 12:40
Not in the 6.0 spec at least. Maybe in the future we make some stronger promises there.
masak good day, #perl6 12:54
FROGGS hi masak 12:58
jnthn: you mean 1.0 spec perhaps :o)
FROGGS is picky right now
Ven would really, really, really like it. 12:59
jnthn lol its masak 13:00
masak whose masak? :)
jnthn Ven: Well, if you annotate it with "returns" we can likely catch thta one without too much trouble.
masak: No eye deer
jnthn has almost finished his slides :) 13:01
Ven jnthn: like my second example :) ?
jnthn Ven: yes 13:02
Ven: It's just that the optimizer isn't analysing assignments yet
Ven: It'll need to do that for various opts I want to put in, and at that point I suspect it might be fairly easy to make that particular example blow up at compile time.
Ven yay ! 13:04
jnthn all of the type check at compile time stuff we have today actually is done by the optimizer.
It's trying to prove things about the program in order to do inlines and compile time dispatch, and as a side-effect sometimes proves the code could never possibly work. 13:05
Makes sense to do it in the same pass, since it's basically the same work. 13:06
Anyway, if you ever wonder what the difference between --optimize=off and --optimize=0 is, that's in :)
*it
dalek o: db7e553 | (Rob Hoelz)++ | bin/ufo:
Actually filter dirwalk entries

We pass in a filter argument via $f, but it never gets used.
o: 85b015a | tadzik++ | bin/ufo:
Merge pull request #11 from hoelzro/master

Actually filter dirwalk entries
tadzik I took a liberty to merge that
jnthn off doesn't run the analysis at all. 0 runs it, complains about things that'll never work, but then does not actual program transformations.
tadzik sweet karma
dalek rlito: bce7e2e | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex - simplify AST
13:22
dalek rlito: 296edfe | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex - more rules
13:35
JimmyZ r: 'abc'.subst(/.+/, 'a') 13:44
camelia ( no output ) 13:45
JimmyZ r: say 'abc'.subst(/.+/, 'a')
camelia rakudo-{parrot,jvm,moar} 375404: OUTPUT«a␤»
masak "One of the hard lessons is that you need symbol tables and flow analysis to do good program analysis or transformation. ASTs are necessary but not sufficient. This is the reason that Aho&Ullman's compiler book doesn't stop at chapter 2." -- stackoverflow.com/questions/3455456...o-translat 13:57
interesting. sounds relevant to macros, too.
as well as automated tools to do program transformations and refactors. 13:58
[Coke] fdd
dalek kudo-star-daily: 358d8d2 | coke++ | log/ (5 files):
today (automated commit)
rl6-roast-data: 80228e4 | coke++ | / (6 files):
today (automated commit)
lizmat commuting to DPW& 14:01
dalek kudo/nom: 1ae0b29 | (Elizabeth Mattijsen)++ | src/core/Supply (2 files):
First stab at implementing Supply.live
14:03
jnthn & 14:08
Ulti if I want to keep something moarvm can run directly what do I --target= with Rakudo? 14:13
FROGGS --target=mbc --output=foo.moarvm
Ulti: ^^
Ulti hmmm I did that but without the --output 14:14
Ulti tries
thanks FROGGS++
ahh ok it was just that
maybe a less than awesome error message
"Cannot dump this object; no dump method"
FROGGS the code it on github :P 14:15
is*
Ulti heh ok
[Coke] is surprised the target is mbc since I thought moarvm didn't use that extension 14:17
FROGGS [Coke]: it is not an extension, see :o)
[Coke] ok, the rakudo.jvm daily run is looking much better. I just need to update the memory or time limit to close the gap.
FROGGS but yeah, confusing 14:18
[Coke] FROGGS: yah, but still confusing.
heh.
there are two legit jvm failures in that report, though, both in S17-concurrency/supply.rakudo.jvm 14:19
Ulti hmmm I get a segfault from moar if I run the dumped .moarvm file :S weird 14:25
the invocation is basically the same as how perl6 is itself calling moarvm apart from with my .moarvm file
[Coke] Ulti: can you gist it and maybe get a backtrace via gdb? 14:29
dalek rlito: 225dd50 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex - capture counter
14:31
colomon avuserow: just looking at your latest changes to Audio::Taglib::Simple, have you considered using Proxy to allow something like $tl.title = "Awesome Song" ?
Ulti [Coke]: gist.github.com/MattOates/11257194 14:42
I should probably be finishing off my thesis corrections rather than playing anway ;) 14:44
JimmyZ [root@li618-176 ~]# perl6 -e 'say "abc".subst(/.+/, "a")' 14:46
a
[root@li618-176 ~]# perl6
> my $s = 'abc';
abc
> $s.subst(/.+/, 'a')
Segmentation fault (core dumped)
A bug...
Ulti [Coke]: sorry 'list' isn't working out since I'm running gdb from my home 14:51
I assume
masak JimmyZ: reproduced locally.
masak submits rakudobug
JimmyZ: um, why are you running as root? :)
Ulti because he is god 14:52
JimmyZ because it's my friends vps, he changed my jimmy id to 0
Ulti sudo ftw 14:53
JimmyZ I only use it to compile rakudo, since my x86 system can't compile nqp due to some moarvm bug 14:54
s/my/my local/
masak JimmyZ: rt.perl.org/Ticket/Display.html?id=121726 14:58
FROGGS Ulti: do you also run the perl6.moarvm file in the same run? 15:00
JimmyZ masak++ 15:01
masak I live to serve. 15:03
japhb TimToady: Is there somewhere a set of "guiding principles" you think about in the design of Perl 6? I'm looking to give people a sense of the "flavor" of the language in my lightning-talk-in-progress. 15:26
moritz japhb: have you read S01? 15:29
also, TIMTOWTDI, DWIM, keep things lexical 15:30
PerlJam That doc where Larry talks about the waterbed theory of langauge design has some good guiding principles.
www.perl.com/pub/2003/06/25/perl6essentials.html 15:31
masak japhb: also, self-clocking principle.
japhb: also, LTM.
japhb moritz: Yeah, read S01, but pretty much back when it was first written. 15:32
moritz, PerlJam, masak: Thank you.
masak japhb: also, TimToady has said at some point that he seldom makes decisions due to one thing, more often due to two or more things. 15:36
I think that partly explains why some features turn out to be terrific unifications. 15:37
japhb masak: Yeah, I always saw it as many soft constraints 15:40
Ven masak: "terrific unifications" ? 15:43
moritz for example the colonpair notation, which works for named arguments, quoting adverbs, regex adverbs 15:44
masak or roles, which soak up the good parts of contracts, traits, abstract classes, and interfaces. 15:45
moritz or that quoted strings work in regexes too 15:46
Ven r: role Foo { method abstract { ... } }; class A does Foo {};
camelia rakudo-jvm 1ae0b2: OUTPUT«(timeout)»
..rakudo-{parrot,moar} 1ae0b2: OUTPUT«===SORRY!===␤Method 'abstract' must be implemented by A because it is required by a role␤»
Ven yeah, that's cool 15:47
masak or signatures, which fill a role in both assignment and invocation.
moritz Ven: it goes match faster if you just ask m:
Ven moritz: I know, I do it most of the time
I just tend to forget from time to time ;_;
moritz no problem 15:48
Ven reminds me of www.infoq.com/presentations/noether 15:50
TimToady you guys do a better job of listing the design principles than I could :) 15:54
japhb TimToady: clearly you did something right then. :-)
Ven Though "terrific unifications" can be executed poorly, like I think it's the case in Scala : Small building blocks, yet thousands of corner cases 15:55
masak yeah, Perl 6 totally doesn't have thousands of corner cases :P pffffft 15:56
wait, is "millions" bigger than "thousands"?
TimToady well, that's kind of the Unix mode of failure; it's all very well to do one thing and do it well, but if your various bits are speaking different languages to each other, they won't work together
geekosaur but people tend to at least think about how to deal with them... 15:57
Ven masak: having been bit by one of those that "can't be fixed" not so long ago : "I didn't say that !"
masak Ven: :)
masak Ven: we all agree there are corner cases that should be removed; we just disagree on which ones. 15:57
TimToady the most underlying design principle is that communication can only happen when you agree on the language
masak oh, that reminds me: 15:58
japhb: "always know which language you're in" (when parsing)
TimToady but also, two entities have to agree on how they talk to each other 15:59
Ven masak: which one would you remove :) ?
masak japhb: also "sublanguages (regex, quoting, etc) are first-class citizens and should be treated as such"
Ven: I would start listing things, but I'm at $work...
TimToady not to mention grammars, but we're not quite there yet
japhb Wow, lots of good stuff this morning 16:06
segomos this is valid, yea? /bookstore/book[price>35] 16:10
masak japhb: re community design principles, check out TimToady++'s two advent posts.
segomos oops
masak segomos: no :)
TimToady it's valid only if you agree on the language :P
segomos xpath :)
Ven is being back into the past -- www.perl.com/pub/2005/03/03/pugs_interview.html 16:11
masak segomos: ...which we don't agree on :P 16:12
segomos i disagree with you about that
masak well, we agree on that, at least. 16:16
"I keep hitting the limit of p5." -- au++ is scary :>
moritz the question is always, what limit? 16:19
FROGGS[mobile] there is a limit?
masak the interview goes on to describe some shortcomings/needs for kludges of Perl 5. 16:21
Ulti FROGGS[mobile] no I didnt (re: perl6.moarvm) 16:22
PerlJam It would be interesting to get a then-and-now perspective from au++ 16:23
(regarding Perl 6)
masak aye.
she does pop by, very occasionally. 16:24
FROGGS[mobile] Ulti: do "cat /path/to/perl6-m" and replace $@ by foo.moarvm -e1
Ulti FROGGS[mobile]: Error while reading from file: Malformed UTF-8 16:28
FROGGS[mobile] hmmm 16:29
[Coke] au: if you pop by, please help me fix pugs on host07.
Ven masak: that's still nice. I talked to her for quite some time before even hearing of perl6, because she's a contrib on an altJS i'm a developer on. I only realized she was well-known in a community like that ~2 months ago
FROGGS[mobile] Ulti: can you gist the thing you invoke? 16:30
masak Ven: LiveScript, no? 16:30
Ven masak: right 16:30
masak neat. 16:31
FROGGS Ulti: forget what I wrote, you must run them as -Mfoo -e1 16:32
vaskozl should I type: use strict; and use warnings; in my files? 16:33
FROGGS vaskozl: in Perl 5 yes, in Perl 6 no 16:34
vaskozl what is the default behaviour?
FROGGS vaskozl: both is turned on
vaskozl nice
FROGGS strict is meant to be off for one-liners for example, but that is NYI 16:35
vaskozl what is NYI? 16:36
not yet implemented...
masak quick, someone get the list of terms!
vaskozl: you might enjoy reading github.com/perl6/specs/blob/master...ossary.pod 16:37
vaskozl well that's the firs time I've seen this one, and I got a bunch of new york shit when i googled it
so it took me some time to figure it out :D
FROGGS *g*
masak *gasp* -- NYI is not *in* that list!
FROGGS wow
masak how... ironic. 16:38
FROGGS yeah :/
vaskozl gotta learn that regex 16:39
OOH the :i goes infront 16:40
masak :) 16:41
we like to be up-front about things in Perl 6.
vaskozl help the me! I'm trying : curl github.com/perl6/specs/blob/master...ossary.pod | perl6 -e 'if(:i/nyi/){say}' 16:42
*I've only one month perl experiences (most of which has been perl5 up to now)
or rather perl6 -p -e 16:43
moritz you probably want -n -e 16:44
also, no parens around the condition
and finally, stuff doesn't default to $_ anymore
but you can use .say to call a method on $_
vaskozl WHAT?
moritz what WHAT? 16:45
vaskozl what does stuff doesn't default to $_ mean?
moritz perl 5 has lots of subroutines that use $_ as a default if no argument was supplied
but it's always hard to remember which ones do and which ones don't 16:46
vaskozl arligth but it tells me that I need brackets when I try: curl github.com/perl6/specs/blob/master...ossary.pod | perl6 -n -e 'if :i/nyi/ {.say}'
moritz so, in Perl 6, only syntactic constructs (like m//, s///) default to $_
instead there's a short syntax for calling methods on $_
std: say
camelia std ec3d853: OUTPUT«===SORRY!===␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/SM5uA5cdGA line 1:␤------> say⏏<EOL>␤Check failed␤FAILED 00:00 120m␤»
vaskozl masak: oh ok
what does: Expression needs parens to avoid taking the block 16:47
at -e:1
mean?
moritz oh, if you need modifiers, use m:i/../ instead of just :i
vaskozl ok 16:48
ok it worsk!
moritz in general, it means if you write if stuff { ... } and 'stuff' is a subroutine, that could be parsed as if stuff({...}) { block here to come }
vaskozl s/sk/ks/
moritz so the compiler tells you to either write if stuff() { } or if stuff({...}) { }, depending on which one you meant
in this case it was parsed as if :i / nyi ... 16:49
and the nyi was interpreted as a subroutine call without parens
which is why you got that error
vaskozl: as a piece of general advice: use more whitespace 16:50
vaskozl: there are some places where whitespace disambiguates 16:51
foo(1, 2) # calls &foo with two arguments
foo (1, 2) # calls & with a single argument, which is a two-element list
vaskozl moritz: arlight
thx
I can still use () around conditions right? 16:52
moritz vaskozl: yes, but you need to put a blank before the (
vaskozl: because stuff that looks like word( is always parsed as a subroutine call
timotimo what did i miss besides teaching? 17:04
(teaching is awesome, btw. moritz++)
i thought about TheDamian's latest talk abstract, the one about "perl 6 without the awe-inspiring parts" and i think that might make a pretty nice talk 17:07
like, here's how perl 6 has your back for things you used to use python/ruby/php/scala/haskell for
Ven is not sure what timotimo is talking abut 17:11
timotimo i'm also not yet sure what i'll be talking about 17:13
that's the problem :)
here's the context: i want to give a talk about Perl 6 at this year's GPN
i've read the abstract of damian conway's talk "everyday perl 6": www.oscon.com/oscon2014/public/sche...tail/33839
which has now inspired me
btyler I've been poking off and on at a collection of blog posts or book sections called "plain old perl 6" with the same core idea (but with rather less expertise than TheDamian, of course). I think one of the things that's challenging about p6 outreach is that so many code samples are written by experts/core hackers trying to maximally demonstrate the language's power in as little space as possible 17:28
btyler which makes for some pretty dang intimidating pieces of code to look at 17:28
timotimo hehe 17:32
aye.
[Coke] oh. someone here might know, esp. TimToady - anyone familiar with the phrase "jump jesus" ? (used in the Grapes of Wrath) 17:49
TimToady hasn't heard that one 17:50
FROGGS TimToady: can you please look at that and tell me if this would make things better or worse? gist.github.com/FROGGS/a78ff92ec5e7ce2f8fda 17:51
TimToady: the comment box shows what it does in short
[Coke] TimToady: it was something like "I could fight you now or jump jesus" 17:56
FROGGS wikipedia says it is the same as saying "Jesus Christ!"
but that does not fit well to your sentence 17:57
TimToady FROGGS: I can argue that one both ways, since * has a different meaning already in signatures, and it might or might not be confusing 17:58
it might be better to do the other thing, and allow $ where we know it's an lvalue list
FROGGS well yes, I'd like to have the "my (...) = ..." and "(...) = ..." form at least use the same thingies 17:59
I do not really care if it is dollar or the asterisk
well, that is not really true
I'd prefere the asterisk because even in the signature it would mean "slurp that one thing" (and throw it away) 18:00
TimToady except it doesn't mean slurp, which implies flattening the rest of the args
FROGGS hmmm, that did not imply flattening to me yet :o) 18:01
TimToady perl6: sub foo(*$a, *$b, *$c) { say "$a $b $c" }; my @a = 1,2,3; foo(@a) 18:02
camelia rakudo-{parrot,jvm,moar} 1ae0b2: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Calling 'foo' will never work with argument types (Positional)␤ Expected: :(Any $a, Any $b, Any $c)␤at /tmp/tmpfile:1␤------> *$c) { say "$a $b $c" }; my @a = 1,…»
..niecza v24-109-g48a8de3: OUTPUT«1 2 3 ␤»
TimToady niecza++
FROGGS I see
TimToady er, except niecza-- for wrong semantics 18:03
FROGGS m: my ($, $, $x) = 1, 2, 3; say $x 18:03
camelia rakudo-moar 1ae0b2: OUTPUT«3␤»
FROGGS m: my $x; ($, $, $x) = 1, 2, 3; say $x 18:03
camelia rakudo-moar 1ae0b2: OUTPUT«===SORRY!=== Error while compiling /tmp/CQ92eBnSgq␤Unsupported use of $, variable; in Perl 6 please use $*OUT.output_field_separator()␤at /tmp/CQ92eBnSgq:1␤------> my $x; (⏏$, $, $x) = 1, 2, 3; say $x␤ expe…»
FROGGS ahh, the $, var... 18:04
std: my $x; ($, $, $x) = 1, 2, 3; say $x
camelia std ec3d853: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at /tmp/0Nlk20iYAS line 1:␤------> my $x; (⏏$, $, $x) = 1, 2, 3; say $x␤Use of uninitialized value $first in string eq at STD.pm line 67059.␤Use of uninitialized…»
TimToady yes, we'd have to not check that anymore
but might be worth it for the unification
FROGGS "nice" --> Use of uninitialized value $first in string eq at STD.pm line 67059
FROGGS might be the missing name 18:04
TimToady m: my $x; (anon $, anon $, $x) = 1,2,3; say $x 18:05
camelia rakudo-moar 1ae0b2: OUTPUT«===SORRY!=== Error while compiling /tmp/RAsDb_0VvQ␤anon scoped variables not yet implemented. Sorry. ␤at /tmp/RAsDb_0VvQ:1␤------> my $x; (anon $⏏, anon $, $x) = 1,2,3; say $x␤ expecting any of:␤ s…»
FROGGS at least it is sorry
TimToady n: my $x; (anon $, anon $, $x) = 1,2,3; say $x
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Unsupported use of $, variable; in Perl 6 please use .join() method at /tmp/5cyqsvCL9F line 1:␤------> my $x; (anon $,⏏ anon $, $x) = 1,2,3; say $x␤␤Parse failed␤␤»
TimToady n: my $x; (anon $ , anon $ , $x) = 1,2,3; say $x
camelia niecza v24-109-g48a8de3: OUTPUT«3␤» 18:05
TimToady niecza++ again :)
FROGGS bah 18:06
:P
TimToady anyway, we could turn those into anons and let the optimizer throw them away :)
FROGGS that sounds sweet
:o)
TimToady and then $ as rvalue would just be Any 18:07
but maybe we could catch that as std currently does
well, much like, but not the same 18:08
would depend on rvalue-ness, not non-decl-ness
so you'd have to notice after the initial parse of the $, somehow
alternately, just forget about the check, and let people pass $ as function args 18:10
which might have a use
for rw params that you don't care about the result
TimToady I think I'd be happier with that than with overloading * in signatures 18:11
FROGGS sure sure :o) 18:11
dalek rl6-roast-data: 1642c10 | coke++ | / (6 files):
today (automated commit)
18:19
dalek rlito: e806fd8 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex - quotemeta
18:42
vendethiel It's interesting how niecza gets some stuff right 18:58
dalek rlito: f4073d4 | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex - cleanup
19:02
dalek rl6-roast-data: efdeeb4 | coke++ | bin/rakudo.jvm.sh:
rakudo.jvm needs more memory & time than others
19:26
[Coke] there. now any remaining failures should be real. Still one in concurrency.
vendethiel m: say $*SCRIPT_NAME; 19:46
camelia rakudo-moar 1ae0b2: OUTPUT«===SORRY!===␤Dynamic variable $*SCRIPT_NAME not found␤»
vendethiel is trying to get the script dir
FROGGS m: say $*PROGRAM_NAME 19:47
camelia rakudo-moar 1ae0b2: OUTPUT«/tmp/EMOMdQX3wJ␤»
FROGGS m: say $*PROGRAM_NAME.directory
camelia rakudo-moar 1ae0b2: OUTPUT«No such method 'directory' for invocant of type 'Str'␤ in block at /tmp/Q3DAz9sKrf:1␤␤»
FROGGS m: say $*PROGRAM_NAME.IO.directory
camelia rakudo-moar 1ae0b2: OUTPUT«No such method 'directory' for invocant of type 'IO::Handle'␤ in block at /tmp/8iqrbigFw4:1␤␤»
FROGGS m: say $*PROGRAM_NAME.IO.dir
camelia rakudo-moar 1ae0b2: OUTPUT«No such method 'dir' for invocant of type 'IO::Handle'␤ in block at /tmp/_PgzIpD0H3:1␤␤»
FROGGS m: say $*PROGRAM_NAME.path.directory
camelia rakudo-moar 1ae0b2: OUTPUT«/tmp␤»
FROGGS vendethiel: ^^ 19:48
vendethiel ty :-) 19:48
vendethiel i.imgur.com/yDXWI4r.png No pugs on windows I guess ... 19:57
vendethiel failed to install pugs on 2 windows and a mac, only stuff he found on SO and such where "reinstall haskell" )=(
FROGGS :/ 20:00
geekosaur pugs is a pain to install, yes 20:01
[Coke] it's still not installed properly on the semi-official testing box. :) 20:09
every time I move to another box, i have to pray au will show up and rescue me. :)
[Coke] s/pray/hope/, to be more precise. 20:18
FROGGS does this make sense in nqp? 20:33
$push_target.push($check);
$push_target := $check;
timotimo opinions on renaming "SORRY!" to become "BEG YOUR PARDON?" 20:48
FROGGS *g* 20:52
vendethiel votes to change "sorry" to "s-s-sorry !" with a cute smiley :) 20:54
timotimo moe? 21:06
vendethiel ~ 21:08
timotimo i feel a bit bad about not being productive today :( 21:43
timotimo i suppose i was eductive at least 22:15