»ö« 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.
00:01 siruf left 00:02 siruf joined 00:03 siruf left 00:04 woolfy left, lizmat left 00:10 siruf joined
TimToady rosettacode.org/wiki/Bernoulli_numbers is an interesting task. I couldn't figure out how do to it with folds and rotates, so for a second solution I used a self-destroying/reconstructing sequence operator :) 00:10
00:10 Mouq joined 00:11 treehug88 joined
colomon !!!! 00:11
TimToady if anyone else wants to add solutions using other equations, feel free :)
Bernoullis are weird beasties
00:13 denisboyun left
TimToady colomon++ for making sure Rats and FatRats work :) 00:13
00:14 woolfy joined
Mouq 's small Perl 6 contribution of the night codegolf.stackexchange.com/a/23787/15012 (sorry xfix++) 00:15
00:16 FOAD left 00:17 siruf left, siruf joined
benabik Mouq: You could make it shorter and remove the note about associativity simply by removing support for exponents. :-D 00:17
Mouq: It takes you 10 characters to include it anyway. ;-) 00:18
colomon TimToady: self-destroying sequence operator hurts my head. 00:19
TimToady Mouq: this seems like it's solving a more complicated problem than is given at the top of the page 00:20
Mouq colomon: Done 00:22
TimToady: .eval works too, but you get bonus negapoints for not using eval or similar 00:23
00:23 siruf left
Mouq That should probably say 'points' not 'characters' come to think of it 00:23
00:24 siruf joined 00:26 siruf left, dayangkun joined
Mouq I don't think the "accepted" Perl 5 solution gets anywhere close to actually solving it.. :/ 00:28
00:29 dayangkun_ left 00:30 siruf joined
TimToady the task at the top of the page says nothing about expressions 00:30
so maybe it's solving a different 'it'
benabik It does mention expressions, under Scoring. (poorly organized, IMHO) 00:31
00:31 rurban left
Mouq TimToady: "-50 Bonus if your code can handle simple expressions, for example 55*96-12" 00:31
00:31 jnap left
TimToady okay 00:31
00:31 cognominal__ joined
Mouq But I agree, it says otherwise in the beginning 00:31
Anywho
The task is closed :) 00:32
And I have homework to do
o/ #perl6
00:32 Mouq left 00:34 cognominal left 00:35 siruf left, FOAD joined 00:37 bjz joined 00:52 pecastro_ left 00:54 telex left, [Sno]_ joined, telex joined, logie__ joined 00:55 wooden_ joined, wooden_ left, wooden_ joined, btyler joined, ribasushi_ joined 00:56 flussenc1 joined, labster_ joined 00:57 gfldex_ joined, itz joined 00:58 [Sno] left, wooden left, [Sno]_ is now known as [Sno], ribasushi left, ribasushi_ is now known as ribasushi, labster left, flussence left, xenoterracide left, logie left, ggherdov_ left, itz__ left, japhb left, exodist_ left, Pleiades` left, gfldex left, hoelzro_ left, geekosaur left, rurban__ left, labster_ is now known as labster, Juerd left, SHODAN left, yogan left, SHODAN joined, sunnavy_ left 00:59 pdcawley left, cxreg left, hoelzro joined, geekosaur joined, ggherdov_ joined 01:00 Juerd joined, rurban__ joined, pdcawley joined, sunnavy joined, cxreg joined 01:01 timotimo left 01:02 Pleiades` joined 01:03 klapperl joined, isacloud_ joined 01:04 go|dfish left, felher left, klapperl_ left, isacloud left, japhb joined, isacloud_ is now known as isacloud, Exodist joined, zamolxes left, zamolxes joined 01:05 timotimo joined, yogan joined 01:06 xenoterracide joined 01:07 bjz_ joined 01:10 woolfy left, bjz left 01:11 BenGoldberg left 01:19 ggoebel11111 joined, __thou joined, Vlavv joined 01:21 woolfy joined 01:22 jeffreykegler joined
jeffreykegler re Bernoulli numbers: this is in fact the problem Lovelace and Babbage solved for her 1843 paper 01:26
01:27 jnap joined 01:28 jnap left 01:30 btyler left 01:41 skids joined, woosley joined
TimToady indeed 01:42
LootingLemur looking to build rakudo 2014.02 but does proxy does not allow git. Since no star distribution, which do I need to build first: nqp & parrot? 01:52
02:00 jeffreykegler left
skids Are you specifically looking for rakudo-parrot rather than rakudo-moar or rakudo-jvm? 02:01
In any case, VM first then NQP then rakudo, I imagine.
02:07 klapperl_ joined 02:08 treehug88 left 02:10 FROGGS_ joined
LootingLemur thanks 02:11
02:11 klapperl left 02:12 Sqirrel left 02:14 FROGGS left 02:16 bjz_ left 02:17 bjz joined
timotimo rakudo star is only available for parrot so far 02:24
02:28 Sqirrel joined
colomon fears he is going to have to translate this $work code to p5 for speed. 02:35
timotimo colomon: not terribly long now and we'll be fast, too 02:36
timotimo beds
colomon hope so!
02:38 BenGoldberg joined
colomon hmmm, 27 seconds forming and printing out a .perl of a large data structure... 02:38
02:57 go|dfish joined 02:58 felher joined 03:50 woosley1 joined 03:53 woosley left, ponbiki_ left 03:54 Maddingu1 joined, Maddingue left 03:55 woosley joined 03:56 hoverboard left 03:57 woosley left 03:58 woosley2 joined, woosley1 left
japhb__ colomon: Yeah, the string performance is right now one of the most frustrating things for me -- partially because I'm used to (for perl5) only having to care if I was using an asymptotically horrid algorithm on a really big dataset. 03:59
I big part of what makes perl ... well ... "Perlish" for me is that I expect it is generally safe performance-wise to do things very idiomatically, rather than having to specify every little detail. Perl 6 helps me think even more abstractly than Perl 5, and yet Rakudo forces me to think about implementation more than perl5. That's jarring. 04:01
But as timotimo says, hopefully that will be getting much better soon. :-) 04:02
.ask jnthn Is there an operation similar to Promise.then that allows me to say I'm not going to fork the execution path, so please just keep it scheduled in the same thread, rather than pessimistically spinning up a new thread to schedule the 'then' code on? 04:05
yoleaux japhb__: I'll pass your message to jnthn.
japhb__ .tell jnthn I'm fine with something like the .vow semantics that would *enforce* the non-forking execution path. 04:06
yoleaux japhb__: I'll pass your message to jnthn.
04:13 woosley2 left, woosley joined
BenGoldberg n: my @b := gather { my @a; for 0 .. * -> $m { push @a, FatRat.new(1, $m+1); for reverse 1..$m -> $j { @a[$j-1] = (@a[$j-1] - @a[$j]) * $j }; take $m => 0+@a[0] if @a[0] } }; say @b[^61] 04:16
camelia niecza v24-109-g48a8de3: OUTPUT«0 => FatRat.new(1, 1) 1 => FatRat.new(1, 2) 2 => FatRat.new(1, 6) 4 => FatRat.new(-1, 30) 6 => FatRat.new(1, 42) 8 => FatRat.new(-1, 30) 10 => FatRat.new(5, 66) 12 => FatRat.new(-691, 2730) 14 => FatRat.new(7, 6) 16 => FatRat.new(-3617, 510) 18 => Fat…»
BenGoldberg ^ a much faster technique for calculating Bernoulli numbers, for the RosettaCode task :) 04:17
04:17 SamuraiJack joined 04:21 ponbiki joined
TimToady well, except that then we only want about 30 of them :) 04:21
but yeah 04:22
04:23 kaare_ joined
TimToady that's a heck of a lot faster :) 04:27
04:33 Maddingu1 left, __thou is now known as thou, Maddingue joined 04:34 ribasushi left 04:35 pdcawley left, itz left 04:36 itz joined, ribasushi joined 04:37 pdcawley joined 04:42 xenoterracide left 04:49 dwarring left
TimToady BenGoldberg++ for noticing the duplicated work, the new RC entry is much, much faster, so I ran it up to B(100) :) 04:50
BenGoldberg :) 05:03
TimToady though I'm sure some Haskeller is going to look at how I destroy @a every time through and say "ick" :) 05:06
but it was so convenient getting $j from the remaining size of @a
I suppose I should write the point free version some time just for the good of my immutable^Wimmortal soul 05:09
BenGoldberg When I saw the way your code destroyed @a each time, my thought was... 'wtf?' :) 05:10
TimToady yeah, it's sort of a phoenix algorithm :) 05:12
05:18 FOAD left, FOAD joined 05:19 woosley left, BenGoldberg left 05:27 [Sno] left 05:33 kaleem joined, xenoterracide joined 05:46 woosley1 joined 05:52 hoverboard joined
LootingLemur compiling src/main.o In file included from src/main.c:4: src/moar.h:19:16: uv.h: No such file or directory src/moar.h:25:21: dynload.h: No such file or directory 06:03
trying to compile moar from source
Timbus_ have you cloned the cubmodules 06:12
submodules*
TimToady that's a buglette that jnthn++ left in his latest patches, I think 06:13
you probably want to use the versions picked by rakudo for the moment
rather than using HEAD
see irclog.perlgeek.de/moarvm/2014-03-11#i_8419288 06:15
or figure out how to get the right include directory installed maybe 06:16
06:22 jlaire_ is now known as jlaire, perl007 joined 06:26 perl007_ joined 06:27 perl007 left 06:28 perl007_ left, perl007 joined, vincent22 joined
moritz \o 06:30
06:32 [Sno] joined 06:41 hoverboard left
LootingLemur thanks 06:46
06:47 LootingLemur left 06:51 woosley joined 06:52 woosley2 joined 06:53 kaleem left, woosley1 left 06:55 woosley left 06:57 woosley joined, woosley2 left 06:59 woosley1 joined 07:00 xragnar left 07:02 woosley left 07:03 woosley joined, woosley1 left, clkao joined 07:13 dayangkun left 07:16 kaleem joined, dmol joined 07:18 kaare_ left
perl007 hi 07:18
is there a number larger than any other number but itself, aka Inf? 07:19
not for range construction, just simple assignment, comparison 07:21
Timbus_ .. you mean Inf ? 07:22
perl007 where could i read about it? 07:24
Timbus_ perlcabal.org/syn/S02.html#Infinity_and_NaN 07:26
perl007 thanks 07:27
Timbus_ theres not much there,
07:30 slavik left 07:31 clkao left, slavik joined 07:32 clkao joined 07:35 darutoko joined 07:38 clkao left, clkao joined 07:47 clkao left 07:49 clkao joined 07:59 dayangkun joined 08:02 arnsholt_ left 08:04 rindolf joined 08:08 kaare_ joined 08:11 zakharyas joined 08:17 eternaleye left 08:23 brrt joined 08:25 rindolf left 08:28 rindolf joined 08:29 rindolf left 08:30 DarthGandalf left, brother| is now known as brother 08:31 Rotwang joined, Rotwang left 08:32 rindolf joined, DarthGandalf joined 08:41 kaare_ left
brrt people are still talking about 2048 08:43
awesome
08:45 virtualsue joined
moritz still only got to 1024 08:46
brrt only got to 256 or so before giving up… :-) 08:47
yakudza 512 ): 08:48
tadzik hm. The game didn't appeal to me at all 08:49
cosimo_ what game? 08:51
moritz cosimo_: gabrielecirulli.github.io/2048/ 08:52
08:58 woosley1 joined 08:59 masak_ joined
masak_ morning, #perl6 08:59
huh. someone seems to have taken my nick. or something.
-!- Irssi: Your nick is owned by Martin Rychlovsky [~masak@20.38.broadband15.iol.cz]
tadzik huh
masak_ I didn't know that could happen. I'm pretty sure I needed to identify with NickServ every time, and so on. 09:00
anyone know what the prudent thing to do in this case is?
tadzik go to freenode #staff
they fix problems
masak_ oki
tadzik++
09:00 woosley left
tadzik they're the reason I'm not tadzik_ :) 09:00
on the other hand: tadzik was registered, tadzik_ wasn't, and thanks to freenode #staff I conquered tadzik 09:01
because it was unused for a year or two
09:03 masak_ is now known as masak
masak phew. 09:03
moritz masak: you can /msg identify nickserv masak <yourpass> and then /ghost masak 09:04
oh, I see you already were successful
09:04 denisboyun joined
masak yes, #staff did indeed help me quickly. 09:04
moritz: the incantation I used, btw, was 'regain masak <pwd>' 09:05
(to nickserv)
moritz masak: oh nice, a shortcut
jnthn .tell japhb__ We don't have such introspection yet, sadly. Agree its needed. Also at some point the scheduler should start tuning itself based on throughput...
yoleaux 11 Mar 2014 23:43Z <japhb__> jnthn: Is there any way from Rakudo to see how many threads are actively running tasks, how many are blocked on e.g. IO, how many tasks *could* run if there was a thread available, etc? I'm at the point now that I'm wanting to optimize the use of my thread pool to keep all my cores busy, and it would help to be able to introspect the states.
11 Mar 2014 23:47Z <japhb__> jnthn: A sample use case: I have an app that starts up chewing CPU in one or two cores, launches a bunch of tasks in different threads, they all start communicating with external processes, all cores max out briefly, some tasks finish, others go to low-CPU state and machine drops to only a core or two used for another 20 seconds before finishing. And now I want to know why. :-)
04:05Z <japhb__> jnthn: Is there an operation similar to Promise.then that allows me to say I'm not going to fork the execution path, so please just keep it scheduled in the same thread, rather than pessimistically spinning up a new thread to schedule the 'then' code on?
04:06Z <japhb__> jnthn: I'm fine with something like the .vow semantics that would *enforce* the non-forking execution path.
jnthn: I'll pass your message to japhb__.
masak and then 'set enforce on', so it's less likely to happen again.
jnthn .tell japhb__ It will not spin up a new thread for "then" if there's already a free one, though I guess the current doesn't count as free. The right API design is to make .then take a scheduler to use to schedule the then, though. Then you'd just pass it CurrentThreadScheduler and be done. 09:09
yoleaux jnthn: I'll pass your message to japhb__.
tadzik oh, I thought the regular masak was re-registered by someone 09:10
masak not sure what happened. 09:11
but it was easy to undo.
09:11 pecastro joined 09:12 vincent21 joined 09:16 woolfy left 09:17 Sqirrel left
jnthn TimToady: The "doesn't build" issue was about Rakudo's extops not building against latest Moar HEAD, nto Moar itself not building...that one looks like a separate issue... 09:19
09:19 thou left 09:25 Timbus_ is now known as Timbus 09:31 pecastro left 09:33 pecastro joined 09:34 FROGGS[mobile] joined 09:41 dakkar joined 09:48 eternaleye joined 10:00 kurahaupo joined 10:06 dayangkun left 10:10 kurahaupo left 10:12 eternaleye left 10:15 kurahaupo joined 10:17 eternaleye joined 10:23 virtualsue left 10:24 xenoterracide left 10:25 denisboyun left 10:27 woosley1 left 10:49 cooper left 11:00 brrt left
timotimo o/ 11:11
masak \o 11:12
11:22 bionoid joined
colomon |o| 11:24
perl007 perl6: ([7, 0], [9, 1], [14, 2], [Inf, 3], [Inf, 4]).min.perl.say; 11:27
eh
camelia niecza v24-109-g48a8de3: OUTPUT«[7, 0]␤»
..rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«[14, 2]␤»
perl007 how do we paste code here and what this should print? 11:28
timotimo you can put code onto gist.github.com and then write r: and_so_on/... to execute it 11:29
masak perl007: I don't remember reading anything about how arrays should sort wrt each other.
perl007: arrays aren't really value objects, they're reference objects, so it's not clear to me they should even be orderable.
timotimo aye. it would probably be wise to use a .sort with a custom metric and just get the [0] 11:30
masak perl007: what timotimo said.
perl007 well, min : {$_[0]} works, so no sorting, ok, thanks 11:31
timotimo oh, i didn't realize min had that. cool.
11:40 denisboyun joined
masak r: say [[1, 2, 3], [4, 5, 6], [-7, 5]].min( *[0] ) 11:43
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«-7 5␤» 11:44
masak perl007: *[0] is a shorter way to write { $_[0] }
11:49 fhelmberger joined
timotimo r: my %foo of Hash; %foo<bar><baz> = 1; say %foo; 11:58
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«("bar" => {"baz" => 1}).hash␤» 11:59
11:59 hoverboard joined
timotimo i'm wondering if we should warn if the user types "my Hash %foo" or "my Array @a", as that means "hash of hashes" or "array of arrays" respectively, even though it *looks* like "my %foo is a hash" instead 12:01
we could then suggest to either use "my %foo of Hash" or "my %foo is Hash" instead to make it more clear
moritz *finally* won 2048 12:03
time to close the browser tab, and forget the URL
timotimo a friend of mine also told me he won and is now free to be productive again
12:06 kaare_ joined
timotimo masak: there's a rakudobug for you to report in #moarvm :) 12:06
12:13 virtualsue joined
_sri is the graal and truffle stuff for the jvm as exciting as it sounds here? www.chrisseaton.com/rubytruffle/how...y-truffle/ 12:14
12:16 skids left 12:18 brrt joined
masak moritz: so, what's the trick? :) 12:20
12:21 denisboyun left
moritz masak: the trick is to order the big-numbered tiles in ascending order, for example on the bottom row 12:21
masak r: sub z of Int { }; say &z ~~ Callable
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«True␤»
masak r: sub z of Int { }; say &z ~~ Callable[Int]
12:21 cognominal__ left
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«False␤» 12:21
masak submits rakudobug
moritz: ooh
moritz and then row above that contains tiles with smaller numbers, with the biggest in right corner
12:21 cognominal__ joined
moritz in fact I had the bottom two rows ordered 12:22
and then once you get a tile that's big enough, it can be propagated along the (2) bottom row(s)
masak r: multi x(Int &y) { say 1 }; multi x(Str &y) { say 2 }; sub z of Int { }; x &z 12:23
camelia rakudo-moar 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in any at gen/parrot/BOOTSTRAP.nqp:1219␤ in any at gen/parrot/BOOTSTRAP.nqp:1210␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm 1aeb7c: OUTPUT«Cannot call 'x'; none of these signatures match:␤:(Int &y)␤:(Str &y)␤ in any at gen/jvm/BOOTSTRAP.nqp:1212␤ in any at gen/jvm/BOOTSTRAP.nqp:1202␤ in sub x at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
moritz it's not quite trivial to actually keep it up, but with a few trials, I made it 12:24
12:25 denis_boyun joined
masak ...how come the stacktrace of moar is different from JVM and Parrot, above? 12:27
moritz seems the stacktrace filtering only filters out BOOTSTRAP on moar 12:28
might be a bug
masak that's what I was thinking...
sergot hi o/ 12:30
masak sergocie! \o/ 12:31
12:38 kaleem left
colomon r: my $a = "this is a test".comb.set; for $a -> $elem { say $a; }; 12:38
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«No such method 'set' for invocant of type 'List'␤ in block at /tmp/tmpfile:1␤␤»
colomon r: my $a = "this is a test".comb.Set; for $a -> $elem { say $a; };
camelia rakudo-parrot 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«set(t, h, i, s, , a, e)␤»
..rakudo-jvm 1aeb7c: OUTPUT«set(a, e, , h, s, i, t)␤»
12:39 kbaker joined
colomon could have sworn it was supposed to be .set rather than .Set... 12:39
tadzik the output from jvm almost says "shit" :) 12:40
12:42 hoverboard left 12:44 pdcawley left
masak colomon: no, it's .Set because it coerces to a Set. 12:45
colomon: as far as I know, only the subs are lower-case.
colomon but it's .hash rather than .Hash?
masak yeah :/
and .list rather than .List 12:46
timotimo oh, huh.
colomon I foolishly expected consistency.
colomon is pretty sure he did try .Hash first, earlier this week
colomon is using Set operations in his code for $work, btw. ;)
12:50 himanshu joined
himanshu hello 12:50
tadzik hello
himanshu how are you tadzik?
tadzik pretty well
himanshu I am glad to see so many people here... 12:51
how is perl 6 going on?
masak himanshu: it's going very well! 12:52
moritz it's progressing fine, unless when I distract #perl6 with addictive games :-)
masak himanshu: Rakudo now has three very mature backends, each with its own superpower. 12:53
himanshu: Parrot has All The Modules, JVM has Really Quite Fine Threading Support, and moar is Quick and Nimble.
yakudza masak, So if I use parrot I can use all perl5 modules ? 12:55
timotimo masak: well, moar is still a little immature 12:56
himanshu so, when will it release? I was thinking of starting to use Rakudo
hoelzro good morning #perl6!
himanshu: I've been using it for a while 12:57
I haven't used it for
*all* of my stuff, but it's fun to work with!
you do encounter the occasional bug, though
and performance is still improving
on a side note, I saw this article on JRuby last night: www.chrisseaton.com/rubytruffle/how...y-truffle/ 12:58
thought others here might find it intersting
timotimo currently the kinds of bugs you're going to encounter are usually easily workaroundable
hoelzro interesting, even
himanshu I want to create crawlers using Perl 6, will be crawling shopping site more
hoelzro timotimo: that's a good point
timotimo and "is still improving" is a nce way to spell "still sucks" :)
12:58 kaleem joined
timotimo (and bugs you find are mostly fixed soon rather than late) 12:58
gotta run now 12:59
hoelzro timotimo: you saw right through me ;)
but it's made *huge* strides since I started playing
timotimo aye
timotimo kicks himself for still procrastinating so heavily on that block inlining optimization for nqp
AFK for real now.
himanshu bye bye 13:00
tadzik yakudza: nah, that doesn't work 13:02
masak meant all Perl 6 modules:)
13:05 himanshu left 13:06 guru joined, guru is now known as Guest68441, Guest68441 is now known as ajr_ 13:07 bionoid left 13:11 hoverboard joined 13:19 SamuraiJack left
masak timotimo: "is still improving" does not necessarily mean "still sucks"... "good" and "improving" are mostly orthogonal concepts. 13:27
13:27 xragnar joined
JimmyZ it's good but needs to be better 13:29
jnthn Note that .hash/.list don't give you exactly Hash or List. .list on an Array gives you back the Array. 13:34
masak yeah, that's a good point. 13:47
they're... "fuzzy casts" or something like that.
moritz they are more like .positional and .associative 13:56
13:58 jnap joined 14:02 btyler joined
masak right. 14:05
14:06 thou joined
masak type casting is hard. 14:06
14:08 kivutar joined 14:16 rom1504_ is now known as rom1504 14:19 treehug88 joined 14:26 bjz left, bjz joined 14:29 zakalwe joined 14:31 zakalwe left, zakalwe joined, zakalwe left, zakalwe joined
[Coke] what does the "of Int" in "sub z of Int {} " indicate? 14:34
masak [Coke]: that the return value has to be Int.
[Coke]: which, now that I think about it, is a weird, isn't it? because that empty sub obviously doesn't live up to that contract. 14:35
AFAIR, 'of Int' and 'sub z(--> Int)' are the same.
moritz and 'returns Int' 14:36
[Coke] -1 for timtoady there.
at least lets collapse of/returns into one. 14:37
14:37 FROGGS_ left
[Coke] m: sub z of Int {}; say z.WHAT 14:38
camelia rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Int' but got 'Any'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in sub z at /tmp/A973PQEEQX:1␤ in block at /tmp/A973PQEEQX:1␤␤»
masak now of/returns I'm pretty sure are/used to be different.
[Coke] masak: we get a runtime check, anyway.
m: sub z of Int {return "eek"}; say z.WHAT
camelia rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in sub z at /tmp/qnviywe5Y7:1␤ in block at /tmp/qnviywe5Y7:1␤␤»
[Coke] ^^ seems like we could compile time catch that one, at least. 14:39
timotimo there's "sub foo of Int (signature) { body }" and there's "sub foo (signature) returns Int { body }" 14:42
14:42 kaleem left
timotimo if you have a bunch of attributes, like "will post" and "will pre", you may find the "returns" form more readable 14:42
if you have a complex/smart signature, you may want to put a --> in there, since it's already a big thingie
if it's just a little thing, the "of" form seems prettiest, i guess
14:43 bluescreen10 joined
moritz kindas likes the 'returns' form, and --> Int is valuable in a non-routine signature, where 'returns' or 'of' aren't an option 14:44
*kina
*kinda
whatever
[Coke] so --> Int is the bare minimum, and of and returns are both sugar?
moritz aye 14:45
timotimo what's the current spelling of "return nothing"? "returns Nil"? 14:47
r: sub foo returns Nil { 1 }; say foo; 14:48
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c: OUTPUT«Type check failed for return value; expected 'Any' but got 'Int'␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar 1aeb7c: OUTPUT«Type check failed for return value; expected 'Any' but got 'Int'␤ in any return_error at src/vm/moar/Perl6/Ops.nqp:596␤ in block at /tmp/tmpfile:1␤␤»
colomon Is there a p6 module for handling (english) pluralization and punctation in lists?
tadzik I don't know of any 14:49
colomon will put up with his report lacking proper grammar for a bit. 14:50
[Coke] colomon: that seems like a portable p5 module. 14:54
colomon "portable"?
[Coke] (not that you want to port it, but I bet it would be doable by someone looking to get dirty with P6)
able to be ported.
colomon oh, as in a non-lazy person could port it?
14:54 kivutar left
tadzik if you find me a Perl 5 module, I can do this 14:54
[Coke] Yes. not implying you, you're busy. :)
tadzik for now, I'm not exactly sure what you need :)
turning 1 into 1st etc? 14:55
colomon no, turning attribute into attributes if there is more than one
and then a list into A
[Coke] metacpan.org/pod/Lingua::ENG::Inflect ?
colomon or A and B
or A, B, and C
[Coke]: yes, like that for the first part. though that is seriously overkill for my current needs. 14:56
WORDLIST there is the second bit 14:57
masak I think the 'of' form is defendable as well -- because it occurs for list and map types, where 'returns' doesn't make much sense. 15:11
don't ask me what the subtle difference was between 'of' and 'returns', though -- ISTR there was one, but I'm drawing a complete blank on what it might've been.
timotimo still wondering how best to work against the massive duplications of strings in rakudo 15:12
like __lowered_param_$n for example; there I can just have a little list of strings to cache these, since it definitely seems to be worth it 15:13
but what about other cases?
like OPER being crazy common
15:24 kurahaupo left 15:26 Ven joined
jnthn OPER we should look into where it's coming from 15:26
Some of the others, though, we could have a %*INTERNS declared in TOP or comp_unit, and then write a sub intern in Actions.pm that we call in various places. 15:27
timotimo mhm
i wasn't quite sure where OPER came from; it must be something non-constant, but it's not a composite of two, so it must be the result of some substring? 15:28
jnthn maybe, yeah...
Well, it's the ones that make it into gen2 that we really want to worry about rather than those that just exist in the nursery for a bit.
was OPER one of the gen2 ones
?
timotimo yes
incredibly common there
Ven (what's gen2 ?) 15:29
timotimo where old objects come to live after they've proven that they're going to stick around longer
garbage colllector terminology
huh. 15:31
Ven (ooh :D)
timotimo my install/include contains dyncall/, but there's only dynload.h and dynload_alloc.h in there
xfix Interesting. I just installed Perl 1, and Perl 5 removes deprecated Perl 1 syntax, like do call()... 15:33
timotimo oh, ouch
modules.perl6.org shows "YAML Ainât Markup Language" 15:34
xfix Yet do call() still works in Perl 6.
timotimo we are perlers, we ought to know better than that! :)
< Content-Type: text/plain; charset=utf-8
moritz timotimo: yes, know better than that!
timotimo that's for raw.github.com/ingydotnet/yaml-pm6.../META.info
15:35 FROGGS[mobile] left
jnthn timotimo: OK, curious... 15:35
huf ingy, helping people debug unicode bugs since forever ;)
timotimo :3
well, the html claims to be utf8
Ven never believe the html 15:36
timotimo well, the http header doesn't give a content encoding, only the content-type text/html
and then <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 15:37
and then YAML Ainâ<U+0080><U+0099>t Markup Language</dd>
sergot Is there one vm we should focus on or should we develop all of them? :) 15:39
huf usual wtf8
timotimo my $json = $ua->get($proj)->res->json; ← this is how the Info.pm in P6project of modules.perl6.org/web/lib fetches that; $ua is a Mojo::UserAgent
i don't see how to tell mojo::useragent to do anything with encoding 15:42
15:44 [Sno] left
_sri timotimo: encoding? 15:44
timotimo maybe we should replace my $json = $ua->get($proj)->res->json; with my $json = decode_json($ua->get($proj)->res, binmode => ':encoding(UTF-8'))
oh, hold on
_sri wtf?
timotimo that binmode came from read_file, not from decode_json
my bad
_sri json is always utf-8
ingy huf: :D
15:44 ajr_ left
ingy huf: sorry ☺ 15:45
timotimo okay, i have no clue of perl5. this is where i get off and someone else can hop on :)
huf ingy: huh? you provide a vital service!
xfix JSON is any UTF.
_sri not true
huf ingy: this is also why my name on certain sites is hüftlb cícáfős 15:46
xfix _sri, RFC 4627
ingy
15:46 guru joined
_sri JSON is only UTF-8 now... the latest RFC revision made that pretty clear 15:46
xfix To be exact, "3. Encoding"
_sri xfix: RFC 7159
15:46 guru is now known as Guest72697
_sri RFC 4627 is obsolete 15:46
15:46 Guest72697 is now known as ajr_
_sri the whole check the first two bytes to detect the encoding stuff is gone for good 15:47
a bare "null" is now valid JSON too... fun times
huf timotimo: this works fine: perl -Mstrict -Mwarnings -MData::Dumper -MMojo::UserAgent -E 'binmode STDOUT, ":encoding(UTF-8)"; say Mojo::UserAgent->new->get("raw.github.com/ingydotnet/yaml-pm6...cription}' 15:48
xfix Makes sense... considering that now the first two characters aren't guaranteed to be ASCII.
If you can return string directly.
moritz fwiw the Mojolicious version might just be Very Old
huf so either your module versions are old and this is an already fixed bug OR someone isnt setting encoding layers properly
timotimo moritz: that may be an easy fix in that case :)
layers and layers and layers ...
15:49 skids joined
xfix _sri, even in the newest JSON, UTF-16 and UTF-32 are allowed. 15:49
"JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32." 15:50
timotimo and JSON5? :)
xfix (by the way, I don't consider UTF-7 to be UTF)
_sri moritz: don;t think that matters here, it's just STDOUT not handling characters by default
xfix JSON5 doesn't exist.
timotimo it does not?
xfix Besides, it's not that JSON is compatible with JS.
moritz Jackson Five exists
15:51 kaare_ left
huf well, used to 15:51
xfix ES5 has JSON object, but JSON5 doesn't exist.
_sri timotimo: welcome to perl5 :)
timotimo xfix: you're not up to date then :)
masak xfix: what does 'doesn't exist' mean?
Juerd I've never encountered any UTF-16 or -32 JSON.
xfix Because it's waste of space, perhaps?
masak xfix: did you mean that you haven't heard of it?
xfix Possibly.
_sri xfix: yea right... except there is no official way to signal any encoding other than UTF-8 now ;) 15:52
timotimo it's not really all that official, to be fair
xfix Anyway, JSON is not compatible with JS, because it allows \u2028 directly in strings, when JS doesn't.
masak right. not a strict subset.
timotimo what character is that?
xfix That could be as well a mistake, but it stays.
Juerd I think it'd be silly to have a JSON library handle anything other than UTF-8. It'd be spec-correct, but UTF-8 is the de facto standard for JSON.
masak m: say "\x2028".uniname
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uniname' for invocant of type 'Str'␤ in block at /tmp/1ucLVVadpe:1␤␤»
xfix .u 2028
masak dang. :)
yoleaux U+2028 LINE SEPARATOR [Zl] (
)
xfix .u 2029 15:53
masak m: say "\x2028".uni
yoleaux U+2029 PARAGRAPH SEPARATOR [Zp] (
)
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uni' for invocant of type 'Str'␤ in block at /tmp/1RJpZrQgGi:1␤␤»
masak m: say "\x2028".uniprop
camelia rakudo-moar 1aeb7c: OUTPUT«No such method 'uniprop' for invocant of type 'Str'␤ in block at /tmp/bubYgHm9id:1␤␤»
xfix Those two characters are disallowed in strings.
JS considers those to be new lines.
timotimo masak: .&uniprop
xfix But JSON doesn't.
Juerd _sri: UTF-16 or UTF-32 JSON can very easily be detected because there will be known plain text. The first character of JSON is always within the ASCII range.
masak timotimo: oh, right.
m: say "\x2028".&uniprop
camelia rakudo-moar 1aeb7c: OUTPUT«Zl␤»
TimToady m: say "\x2028".&uniname
camelia rakudo-moar 1aeb7c: OUTPUT«LINE SEPARATOR␤»
_sri Juerd: not anymore! ;p
Juerd _sri: ?
_sri Juerd: see RFC 7159
xfix The first character is still in ASCII range. 15:54
masak oh, so JSON is *finally* a strict subset? phew!
timotimo the first character still has to be ", doesn't it?
_sri Juerd: like i said before... a bare "null" is now valid JSON too :)
xfix null is in ASCII range.
timotimo is that a bare "null" or a "\"null\""?
xfix To write anything non-ASCII, you have to type " first.
huf who cares, " and n are both in ascii
_sri timotimo: bare
timotimo but not a null byte, yeah? 15:55
_sri bare strings and numbers are valid too now
Juerd _sri: It explicitly defines null as %x6e.75.6c.6c so that's definitely within the ASCII range.
string = quotation-mark *char quotation-mark 15:56
xfix Second byte may not be in ASCII range, but first has to be.
Juerd quotation-mark = %x22 ; "
No bare strings.
xfix I mean, character.
Talking about bytes doesn't make sense here.
Juerd xfix: First non-whitespace character.
timotimo huh. 15:57
Juerd But it will still be one of less than two dozen allowed characters, each of which don't clash with any UTF-8 encoding of whitespace :)
timotimo my local ADT folder contains a .work with a bunch of subfolders (probably from when i installed it via "panda install .", and all of them include an "ogotype" directory
note the missing l from the beginning
how did that happen? %)
Juerd But still, nobody actually uses JSON with UTF-16 or -32 so why bother. 15:58
huf hahahahah how sure are you?
xfix Also, JSON has at least one byte.
The second doesn't have to exist.
Juerd huf: Incredibly.
huf .... just for that, lemme make one ;) 15:59
Juerd huf: It wouldn't change the fact that nobody uses JSON with UTF-16 or -32. It would redefine "nobody" to include you :)
xfix JSON parser is easy.
JSON writer is even easier.
Juerd xfix: And still there's so much "JSON" with unquoted keys... 16:00
huf Juerd: well, i'm no scotsman :)
xfix Unquoted keys is not JSON.
huf it's jsonesque
xfix It could be JS5N, or whatever the JSON based on ES5 would be called, but I don't care.
Juerd xfix: Indeed it isn't. But unlike UTF-16 and UTF-32 JSON, illegal unquoted keys JSON does actually exist.
xfix And people parse it using eval(). 16:01
Juerd It makes more sense to support bare keys than to support UTF-16 :)
xfix Well, as long they don't call it JSON, it's fine.
It could be YAML easily.
Juerd I hate the semantic indents of YAML. 16:02
And Python.
xfix Nothing stops you from writing {a: "b", c: "d"} in YAML.
Juerd Sigh
Oneliners aren't a solution :)
xfix Or even {a: b, c: d}
Or even {name: YAML, description: Does stuff because why not.} 16:03
Also, Python isn't that bad. Yes, it requires indentation. But at least it doesn't enforce whitespace any other way. b +c is perfectly fine, for example. 16:05
CoffeeScript is more annoying. It cares about whitespace everywhere.
And if you mistake whitespace position it won't make syntax error... no, it would be too easy - it will guess incorrectly what you mean. 16:06
brrt but coffeescript is totally self inflicted
Juerd This is what keeps me from using coffeescript 16:07
xfix coffeescript.org/#try:call%28%29%20...f%28%29%0A 16:08
Deindent stuff(), and it will be parsed completely differently.
At least some of this nonsense was fixed. For example, if you started the program indented, if you tried to deindent it, the lines simply disappeared. Now it simply complains about "missing indentation". 16:10
For example, int main() {} is completely valid CoffeeScript. 16:13
tadzik reading this discussion makes me never want to touch coffeescript :) 16:16
16:17 denis_boyun left
Ven xfix: That's an issue we're trying to solve ;) 16:17
but the BDFL doesn't want to 16:18
timotimo fixed ADT and wonders why it even worked in the mean time
Ven timotimo: how do you know it worked ;) ?
xfix And there are stupid design decision. ? is defined or operator.
`a ? b ? 42` will complain about `b` not existing, because it's left-associative. 16:19
decisions*
Ven xfix: Backwards compatibility issue
xfix Reminds me of ?: operator in PHP.
Ven I believe we all agree on the team that it'd be better the other way
xfix github.com/jashkenas/coffee-script/issues/2199 - it's wontfix. 16:20
Ven xfix: I removed the wontfix :) 16:21
16:21 jnap1 joined, fhelmberger left
TimToady it's very difficult to recover from early stupid design decisions when people are using your language :) 16:22
Ven Yes. It's fixed in coffee's popular fork(s), though
xfix I actually wonder what would fixing this break.
Ven Even "Coffee 2.0" has it right
16:22 jnap left
Ven xfix: Maybe corner cases of `and` & `or`, but these would probably be very very poor taste and discouraged in the first place 16:23
Some people abuse or/and to mean `if else`
xfix Alternatively, it could be chain operator, like certain operators in Perl 6.
Ven xfix: chain operator ?
xfix 1 < 2 < 3 16:24
Ven We have that too
You mean `a?.b?.c` ?
xfix I mean a ? b ? c. 16:25
?. is fine.
Ven xfix: would work with right precedence
TimToady wonders if this is quite the right forum for redesigning coffescript :)
xfix Design mistakes happen. 16:26
Ven Haha, sorry. But you're definitely right on one point : changing stuff *after* is hard
xfix For example, it would be nicer if in fish shell () doesn't interpolate in "".
16:26 mavcunha left
Ven Isn't even perl6 in that case ? 16:26
xfix But fixing it would break the compatibility. 16:27
masak Ven: isn't even perl6 what?
Ven masak: somewhat restricted due to bc breakages
masak Ven: well, yes, in the sense that we have users and code already.
Ven: but not nearly to the same degree as Perl 5, say.
16:28 mavcunha joined
Ven Yeah, that goes without saying ... 16:28
xfix Perl 5 just removed in Perl 5.20 the old syntax deprecated in Perl 5.
do stuff();
masak \o/
xfix That syntax existed in Perl 1, and it was a mistake. It was removed long time later.
Ven I remember reading TimToady saying something like "Perl 6 is like what Perl 5 could evolve after decades of deprecation warnings"
s/evolve/evolve into/ 16:29
16:29 brrt left
masak Ven: "Think of Perl 6 more as Perl 16" :) 16:29
Ven: that's from a perlmonks post somewhere.
xfix Features were removed, even with bc concerns.
Ven masak: Definitely :)
xfix The biggest example I can think of are pseudo-hashes.
Ven xfix: what are these ?
xfix It's the feature that let you access array keys as hash keys. 16:30
perldoc.perl.org/5.8.8/perlref.html...-as-a-hash
Ven xfix: Thanks -- I never actually used perl 5
xfix It was removed in Perl 5.10, because it was problematic to support in the code.
nwc10 that wasn't the story that I was told. :-) 16:31
xfix It was added in Perl 5.005, but even then it was a bad idea.
16:31 mavcunha left
xfix They were* 16:31
nwc10 It (also) slowed down all (regular) array accesses
or was it hash accesses. I forget. But it hurt all the code that wasn't using it 16:32
xfix Everything could be a pseudo-hash.
could have been*
masak that's like the lithmus test of a bad feature.
Ven uh yeah, I can see why people may call it a hack :p
TimToady well, it woulda worked out much better if Perl 5 actually dispatched based on a type system, rather than oddles of 'if' statements once you're past the opcode dispatch
masak does it punish people who are not using it?
Ven masak: the doc says it does 16:33
TimToady we could easily put pseudohashes into Perl 6 as a type, and it would have very little effect on the built-ins
nwc10 masak: yes, because in Perl 5 everyone else still gets to execute the "if it's not this funny thing" check
TimToady just look at the typical opcode implementation in P5, it's a maze of nested ifs and elses
16:33 pmurias joined
masak fails to find TimToady's perlmonks post, and only finds a comment by chromatic old enough to sound optimistic: www.perlmonks.org/?node_id=861690 16:33
16:34 ajr_ left
masak by the way, I'm glad @people++ are digging into the concurrency bits. 16:34
Ven masak: is that ++ concurrent :) ?
xfix github.com/fish-shell/fish-shell/issues/159 16:35
masak @people»++ :)
xfix This is one of most requested features in fish shell.
But backwards compatibility is backwards compatibility.
And $() is against fish shell design guidelines. 16:37
masak ooh, here www.perlmonks.org/?node_id=861950 is a *list* of things that constitute "ready" for Perl 6.
from *2010*.
I don't know about all y'all, but if I/we ever get around to make that isperl6readyyet.com page, then we should probably consider the things on that list. 16:38
xfix Does Perl 6 have logging framework now?
TimToady 'of' and 'returns' were always just synonyms
masak xfix: you can override $*OUT and $*ERR :)
TimToady but we probably would not have added 'returns' if '-->' had existed at that point 16:39
masak srsly, though. no, I don't think it does have a logging framework.
xfix Something at least comparable with "console" object in JavaScript?
masak xfix: that's $*OUT.
m: say $*OUT.^name
camelia rakudo-moar 1aeb7c: OUTPUT«IO::Handle␤»
masak m: say $*OUT.^methods
camelia rakudo-moar 1aeb7c: OUTPUT«open close eof get getc lines read seek tell write opened t print slurp spurt copy chmod IO path flush encoding d e f s l r w x z modified accessed changed say Str gist perl <anon> <anon>␤»
xfix $*OUT doesn't even print timestamps. 16:40
16:41 kaleem joined
Ven masak: I actually got to that post :p 16:41
TimToady: what would be 5 things you would remove out of perl 6 if it still was only a spec (and somebody would do the editing part for you) ? 16:44
TimToady there is nothing in there that I would not change based on backward compat 16:45
I still reserve the right to change anything till 6.0.0 comes out
xfix The features that were considered to be bad were already removed.
masak sometimes to the dismay of some of us... :)
(in reply to TimToady)
Ven TimToady: well, you mentioned "returns"
TimToady well, a case could be made for removing 'returns' at this point 16:46
masak maybe we should ditch 'returns'.
'of' is shorter.
and I'm not aware of any big uses of 'returns', knock on wood.
Ven likes `of` but it not quite used to `-->`
xfix This is like join() and implode() in PHP.
Ven I'm too used to "argument lists"
16:46 aindilis left
TimToady after --> it's just reverse arguments :) 16:47
masak the thing I feel is weird about '-->' is that signatures are all about parameters... *except* for the '-->' bit, which is about return values.
TimToady it's describing in parameters and out parameters
masak it doesn't make any sense in the var-decl/routine unification of signatures, for example.
Ven masak: same feeling
xfix But what else it could be? sub Int factorial(Int $value) { return [*] 1..$value; } looks quite ugly. 16:49
TimToady it's my Int sub
std: my Int sub factorial(Int $value) { return [*] 1..$value; } 16:50
camelia std 09dda5b: OUTPUT«ok 00:01 129m␤»
TimToady std: my Int sub factorial(Int $value --> Num) { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«ok 00:01 130m␤»
TimToady hmm, that used to catch the error 16:51
std: my Int sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«===SORRY!===␤Extra 'of' type; already declared as type Int at /tmp/JG3AlSaNnb line 1:␤------> ctorial(Int $value --> Num) returns Str ⏏{ return [*] 1..$value; }␤Check failed␤FAILED 00:01 130m␤»
TimToady std: sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia std 09dda5b: OUTPUT«ok 00:01 129m␤»
TimToady coulda sworn that one "worked" 16:52
n: sub factorial(Int $value --> Num) returns Str { return [*] 1..$value; }
camelia niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ &factorial is declared but not used at /tmp/o83DNsk0Pb line 1:␤------> sub factorial⏏(Int $value --> Num) returns Str { retur␤␤»
16:52 jnap1 left
TimToady hmm 16:52
16:52 jnap joined 16:53 zakharyas left
[Coke] coming from java, I'd be happy with "Int sub foo" to mean "sub foo returns Int" 16:53
xfix The thing is it's quite ugly. Integer subroutine foo? 16:54
Anyway, whatever the option will be choosed, don't choose TypeScript method. It's just awful - gist.github.com/xfix/9511216 16:55
Or perhaps it's not, if I think of ":" as "is"...
sub factorial($value is Int) is Int { } 16:56
Of course, backwards compatibility is backwards compatibility. It's not that such huge changes could happen. 16:57
And well, "is" is already used for traits.
TimToady std: sub factorial($value of Int) of Int { [*] 2..$value } 16:59
camelia std 09dda5b: OUTPUT«ok 00:01 128m␤»
perl007 For hash indexes <> is like {''}, shouldn't it be like {""}? For indexing hash of hashes with variable, different brackets look ugly.
xfix perl007, if you need variable, just use {} directly. 17:00
TimToady or «»
xfix Why have both $a<$b> and $a{$b}.
17:00 vincent21 left
TimToady because they're different 17:01
xfix Exactly.
perl007 <var><string> or {var}<string> which one would be better?
xfix <var><string> is indexing a list as a hash. Obviously it won't work.
variable<> is just a syntactic sugar, if you need a literal key. 17:02
So you don't have to write $_GET['stuff'].
perl007 just sugar with double quotes
why not? 17:03
TimToady because then $a<$b> would mean the wrong thing
it's supposed to mean $a{'$b'}
xfix If you don't like it, you are free to modify language from language itself, or use $a«$b».
And don't propose making single quotes interpolate. There is a reason why they don't. 17:04
perl007 no no, just that one :)
xfix < is single, « is double. It's consistency.
TimToady right, and then we have exactly the same kind of kludge that Perl 5 has with $hash{key} 17:05
xfix Which I hate.
Why I cannot simply type $hash{shift} = 42, or something like this.
Juerd I'm entirely happy with that kludge.
I've learned to write $hash{+shift}
17:05 metatodon joined
TimToady + as a no-op is another kludge :) 17:06
xfix I also hate this + prefix operator. It's hack.
It's a hack in my opinion*.
Juerd TimToady: I'm entirely happy with that one too, because I need it to cancel the other kludge out :)
xfix: I'm a hacker. I don't mind hacks.
TimToady Physics teacher: Don't tell the mathematicians I said this, but you can just cancel out all these dx's and dy's... 17:07
Juerd :)
xfix Another one is | & ^ behaving differently depending on the variable internal type that can change when you do something as basic as adding zero to it.
Juerd xfix: That I can't stand. 17:08
It's like The unicode bug, but worse.
TimToady well, now, that's the thing, everyone wanted about 361 different things to be fixed, but nobody wanted the same set of things to be fixed :)
xfix xfix@pear ~> perl -E 'my $x = "1"; print $x | "a"; $x + 0; say $x | "a";' 17:09
q1
Juerd TimToady: I'm aware :)
xfix Why adding zero to variable, and doing nothing to it would do something. Because it's Perl.
Juerd xfix: Yes. This is just broken, but most people don't notice because they don't use this part of the language that much. 17:10
TimToady but that's okay, because today is Everyone's a Language Designer Day :)
Juerd TimToady: Sweet! I'll begin this beautiful day by swapping => and : to make Perl 6 look more like Javascript 17:11
metatodon ELDDAY!
Juerd (The real reason is, of course, to drive everyone nuts.)
xfix And I'm going to begin this by removing $ from variables, and adding automatic semicolon insertion.
To make this look more like... JavaScript, you guessed it.
my variable = 42 17:12
Juerd s/my/var/, s/sub/function/ and they'll wonder who added classes, junctions and grammars to JS... :)
metatodon xfix: automatic semicolon insertion? That way lies chaos.
xfix I actually prefer my to var.
var is ugly, but whatever.
Juerd xfix: So do I
xfix And function. Couldn't they have made a shorter keyword? 17:13
Juerd Although I still like "a" better :P
moritz also, 'my' is shorter
Juerd moritz: "a" is even shorter!
metatodon checks if it's April 1 today...
xfix metatodon, I like ASI.
Juerd xfix: fun'd be fun.
xfix github.com/xfix/python-format/blob...-format.js
17:14 kaleem left
moritz Juerd: '' is even shorter 17:14
17:14 cooper joined
Juerd moritz: Yes, but very hard to see. 17:14
xfix But that would make more bugs. 17:15
I don't want Python.
Or CoffeeScript.
Where you declare new variable without wanting to make a new variable.
Juerd xfix: Of course you don't want any of those. They're all so entirely not Javascript!
TimToady
.oO(and '' is shorter than 'script')
17:16
xfix I actually dislike $ in Perl.
Juerd TimToady: In fact, "" is shorter than almost every "$anything".
huf a 0byte source file has 0 bugs, therefore any shortening is worth it
Juerd huf: Except in Java
xfix: I tried $ sigils in Javascript and found out that I really don't like how they look, but do like being able to tell the difference between things. 17:17
typing-speed-test.aoeu.eu/ is one experiment from that time, that's still online. 17:18
xfix Perl source codes could be cleaner without $@%& noise, but well, it makes Perl feel like Perl.
Juerd Written in 2005 iirc.
[Coke] realizes that xfix is not some new person.
xfix: if you don't like sigils in Perl 6, you can avoid them. 17:19
Juerd [Coke]: New persons (often called "babies") often can't type yet.
xfix [Coke], GlitchMr, just mentioning. 17:20
Juerd: Anyway, 435CPM. QWERTY, lame laptop keyboard.
Juerd xfix: Now try it with a sigil in front of every word ;) 17:21
(Don't... Waste of time!)
xfix This keyboard typing test wouldn't allow me to pass with $ before each word. 17:22
Oh wait, I can.
ok, afk for one minute. 17:23
Juerd It will give you the "raw cpm" at the end of the test.
A typing test, afk?
What are you... Jedi?
428 CPM with $, 625 CPM without. 17:24
xfix 37 CPM.
I mean, 378 CPM.
Juerd 37 would have been worrying.
xfix It's not that I have to type really quickly while programming.
400CPM is reasonable, to be honest.
Juerd I can't program as fast as I can copy words, anyway. 17:25
xfix True.
Juerd But I bet Java programmers can.
17:25 aje__ left
xfix Nice job on 625 CPM. 17:25
I never bothered learning how to type on the keyboard.
Juerd Thanks. My high score of 666 was almost a year ago :|
xfix I also often press Backspac. 17:26
Backspace*
Juerd I have something for that too. learn.dvorak.nl/
xfix I use QWERTY.
Juerd That's okay, the javascript will remap it for you ;-)
And once you've learned how to type properly, you can change your system wide settings. 17:27
It'll save you more finger movement than a lack of sigils could ever do.
xfix Is it worth it? I mean, I have lame laptop keyboard that simply cannot be typed on well.
I get better results than 428 CPM when not being on laptop.
Juerd Yes. It's about the distance between keys.
And that's the same for practically all keyboards.
As for laptops: stick to higher end laptops, like Thinkpads, Apples and high-end Dells. 17:28
tadzik laptop keyboard can't be typed on well? Pfeh
Juerd My typing high score was on a Thinkpad keyboard.
tadzik I bought a thinkpad keyboard to my work computer, so I can have a trackpoint and not have to use a mouse 17:29
xfix Well, I guess I'm lying now, considering I have Lenovo laptop.
Juerd tadzik: I found the external ones to be of a lousy build quality.
xfix And the keyboard looks similarly to that in Thinkpads, even if it's not Thinkpad.
17:29 arnsholt joined
Juerd xfix: Oh, but it's different. 17:29
tadzik Juerd: well, it's about as bad as the laptop ones, imo
although the external one didn't lose a key yet 17:30
17:30 denisboyun joined
dalek kudo-star-daily: 9066eed | coke++ | log/ (5 files):
today (automated commit)
17:30
tadzik and I lost my S after.... 2 weeks on a top-tier ThinkPad?
xfix I'm still a student. I don't have money for some expensive computer, lol.
tadzik it took about 2-3 years on a low-tier thinkpad too :P
Juerd tadzik: My external thinkpad keyboard had a few wobbly keys and it bent rather easily. 17:31
tadzik I must say, I didn't try to bend mine :P But it doesn't bend by itself when I type on it, at least I don't notice it
Juerd I get angry. Well, not anymore, but I did.
tadzik it still uses the "old keys" though, I've read bad reviews on the "new keys" externals
but I mostly didn't by the "new keys" because it was wireless 17:32
Juerd I could smash the actual Thinkpad without causing any real damage, but the external Thinkpad-ish keyboard couldn't take hat.
s/hat\./that./
tadzik heh, truee
I don't think the external keyboard has a magnesium skeleton inside, or whatever it's made of
Juerd Yeah, it was the non-island style.
tadzik non-chickens 17:33
Juerd Indeed it doesn't.
Chickens?
tadzik I like island style, makes hair removal So Much Easier
people called them "chicklets", so I changed that to "chickens
"
Juerd I see
tadzik makes all those boring keyboard conversations a lot more interesting
Juerd Hair... yes. Nail clippings however become a new issue.
tadzik (no, I'm not relating it to this one)
(I mean the "omg mechanical keyboards" thing :)) 17:34
metatodon tadzik: you mean flatbeds?
Juerd I have mechanical keyboards. I like them, but not as much as the Thinkpad laptop keyboards.
tadzik I never heard that work before
er, word
Juerd Flat beds, those are image scanners, right? :)
metatodon yep :P 17:35
dylanwh someone was like "Woah, a thinkpad. is that new? they still make those?"
xfix My leopard works, why should I change it?
Juerd dylanwh: It's taken them 4 years to make another high end Thinkpad, and they suck.
17:35 telex left
metatodon They get hot and I think of them as flatbeds. :P 17:35
Juerd dylanwh: I have an X240 now, and the X201s was better. I've used the T440, and the previous T (I forgot the number) was better.
17:36 pmurias left, kaare_ joined
Juerd But, I need the upgraded hardware, like USB3. 17:36
tadzik I have T430, it's nice
dylanwh yeah. I have a x230. I had an T420 but the screen was *shit*
17:36 aje_ joined
Juerd Thinkpad screens are always shit 17:36
dylanwh 1600x900 but horrible colors and hard to see
tadzik but even on lenovo.com people rant on x40 series in reviews
Juerd The X240 has ghosting that takes minutes to go away.
17:36 telex joined
dylanwh the x230 has a very nice screen. 17:36
Juerd dylanwh: Low-res.
dylanwh well, yes
Juerd Low res screens are never very nice. 17:37
I don't want my laptop to have a lower resolution than my phone, for crying out loud.
tadzik hmm. I have a 14" 1600x900 in a laptop, and 1680x1050 22" next to it
I hardly see the difference :)
Juerd (Not replacing the phone.)
dylanwh I would've asked for a chromebook pixel except that would've been awkward to ask @mozilla it... ;)
Juerd My external screen is 2560x1440, my laptop does 1920x1080. I'm addicted to high res displays.
tadzik I mean, the difference is extremely visibl 17:38
I'm not sure if it's worth it. It doesn't impact me in any way
Juerd Well, the past few years I've been doing web dev again
dylanwh I find my eyes are bad enough where I have to increase the font size so the extra real-estate isn't much
Juerd And I usually have a .css, a .js, a .html and a .pm open at the same time.
Sometimes extra .pm's or extra .js'es 17:39
17:39 metatodon left
Juerd And at the same time, I need a vertically huge browser window for debugging the javascript crap. 17:39
[Coke] lwp-simple is failing tests on R* candidate. 17:49
jsonrpc still failing 17:50
17:58 treehug88 left 18:00 isBEKaml joined 18:01 treehug88 joined 18:05 kurahaupo joined 18:07 dakkar left 18:08 hoverboard left 18:17 isBEKaml left 18:30 moises joined 18:32 darutoko left, virtualsue left 18:37 dwarring joined
dalek ast: 6ef36a7 | (David Warring [email@hidden.address] | integration/advent2013-day08.t:
adding basic tests for advent 2013 day
18:42
dwarring ... day 08 18:43
[Coke] is warring here?
ah, hi.
are you on questhub?
dwarring hi Coke
yes and no
good idea, put it up on questhub
[Coke] I have some quests you can steal for advent coverage. 18:44
what's your ID?
dwarring checking questhub been a while
[Coke] eh no big deal, you can create your own quests. :) ^H 18:45
18:46 kurahaupo_mobile joined, kurahaupo left
dwarring [Coke]: I've created account dwarring on questhub 18:48
18:54 bluescreen10 left 18:56 Rotwang1 joined
[Coke] questhub.io/player/dwarring -> internal http error 19:02
19:02 treehug88 left, treehug88 joined
timotimo yeah, rather than "no such player" it gives that 19:04
dwarring rechecking questhub 19:05
19:07 sftp_ left 19:08 sftp joined
dwarring ok, looks like I just signed up then on questhub.org which is a knock-off of questhub.io !?? 19:09
I've got a very old account on questhub.io 19:10
the id is 'david' 19:11
timotimo yeah, it would appear to be pretty cheap. 19:13
dwarring yeah and misleading
i don't think I can change my questhub id easily, so david it is 19:14
timotimo berekuk hangs out here sometimes, he could do it for you i'm sure
dwarring would prefer dwarring but can live with david 19:15
lue Is it normal to get errors like "Missing or wrong version of dependency 'src/Perl6/Actions.nqp'" when running the spectest after making changes to rakudo, but before running make install? 19:16
timotimo yes, though it's far from optimal.
masak is typing on a en.wikipedia.org/wiki/Model_M_keyboard 19:17
19:17 zaydon joined
masak force feedback, aah. 19:17
lue timotimo: alright, that explains all the new failures I got from Moar and JVM (but strangely no new ones from Parrot ☺)
19:18 zaydon left
timotimo did anybody want to look at why modules.perl6.org has busted characters in yaml's description? 19:19
[Coke] dwarring: invited you to the roast/advent quests. Steal all the points!
19:20 kurahaupo_mobile left
lue masak: lucky :) I still want a Space Cadet, or something just like it. 19:21
timotimo a friend of mine bought a keyboard for advanced cash registers
and re-ordered the buttons and re-programmed the firmware
now he's running a modified neo2 layout on it
19:25 xenoterracide joined
vendethiel r: 5 +| 6 19:33
camelia ( no output )
vendethiel r: say 5 +| 6
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«7␤»
vendethiel I don't remember seing these in S03, but I probably missed it
19:34 stevan_ left
timotimo perlcabal.org/syn/S03.html#Additive_precedence - here they are 19:36
well, at least +| and +^ 19:37
lue timotimo: +& , +< , and +> are here: perlcabal.org/syn/S03.html#Multipli...precedence 19:39
timotimo yup
i figured ven could do that much work by himself :P
dwarring has signed up to roast/advent quests 19:41
vendethiel timotimo: I don't remember reading anything of that :o. I might've either been really tired or skipped over some stuff
timotimo mhm
vendethiel I probably went "meh I know the maths stuff, let's skip over it" 19:43
timotimo :D
lue
.oO(come to think of it, I'm not sure the ~* family of ops could/should be used on strings. Such low-level-ness for a more abstract concept feels wrong)
timotimo well, strings are unicody 19:44
so you'll be getting quite strange results that depend on the normalisation form and everything
[Coke] for declaring multidim arrays, we have [4;2] - what about indexing them?
lue ~& and friends have to work on a specific encoding by their nature, so they currently coerce Strs to Bufs. (the spec even says such coercion is a design smell, fwiw ☺)
timotimo same deal, [Coke]
[Coke] same, yes? 19:45
timotimo++
timotimo lue: fair enough
[Coke]: but you can also do [2][1]
lue I personally think someone who needs to do bitwise ops on strings will know best what kind of buffer to convert to :)
timotimo "but strings are just series of numbers from 0 to 127!" 19:46
[Coke] timotimo: I have a fiver ranting at me that [2][1] is too much syntax. :) 19:47
masak [Coke]: I look forward to [4;2] landing and me getting used to it. 19:48
lue
.oO( @a[2][4]{'custom idx'}{7}[7] )
timotimo [Coke]: i had a branch at some point that turned LoL inside [ ] into "the right thing" - almost 19:49
IIRC i was told to rather wait for the list respec before tackling an actual merge
19:52 hoverboard joined
timotimo r: my %foobar; %foobar<hi> = "goodbye"; %foobar<bye>:delete; say %foobar; 19:52
camelia rakudo-parrot 1aeb7c, rakudo-jvm 1aeb7c, rakudo-moar 1aeb7c: OUTPUT«("hi" => "goodbye").hash␤»
masak m: say flat [1, [2, 3, [4, 5]]]
camelia rakudo-moar 1aeb7c: OUTPUT«1 2 3 4 5␤»
timotimo sergot: you don't need to check for the existence of an element in a hash to use :delete, re github.com/sergot/http-headers/blo...rs.pm6#L28
masak timotimo: you're probably right, but that line *doesn't* check for existence -- it checks for truthiness. 20:00
timotimo masak: huh?
oh
masak m: my %h = foo => 0; %h<foo> :delete if %h<foo>; say %h.perl
camelia rakudo-moar 1aeb7c: OUTPUT«("foo" => 0).hash␤»
timotimo that may very well be a bug, too, though
masak I assume so.
timotimo m: my %h = foo => 0; %h<foo>:exists:delete if %h<foo>; say %h.perl 20:01
camelia rakudo-moar 1aeb7c: OUTPUT«("foo" => 0).hash␤»
timotimo m: my %h = foo => 0; %h<foo>:exists:delete; say %h.perl
camelia rakudo-moar 1aeb7c: OUTPUT«().hash␤»
timotimo er, that was nonsense :)
20:02 stevan_ joined
dalek kudo/nom: a0a5990 | lue++ | src/core/ (2 files):
Rename .ast to .made, as per S05.

The .ast method is still around, though now it's deprecated.
20:06
timotimo nqp: my %foo := nqp::hash("bar", 1, "baz", 2); my %frob := nqp::clone(%foo); say(%frob<bar>); 20:10
camelia nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1␤»
timotimo neato
vendethiel Also, I'm (almost ! 2 to go) done with the synopsis and I'm wondering : why do we need so many declarators ? `let` `my` `temp` `our` etc 20:14
also local and others?
timotimo well, they all do different things
skids scoping and state can get complicated, is why.
timotimo i didn't know "local" is a thing in p6?
vendethiel timotimo: probably confused `state` 20:15
timotimo ah, probably
well, all i can do is go through the list and say what each does and why it's not the same as something else
other than that: that's just the way it is 20:16
i have written some code. now is the time to try it and see if it b0rks horribly 20:17
20:17 perl007 left
timotimo oh, huh 20:18
how did that happen: Error while compiling op copy (source text: "nqp::copy(%antifilter)"): Arg count 1 doesn't equal required operand count 2 for op 'copy_f'
skids
.oO(All those declarators and I still have to write $a++; $b = sub { my $a2 = $a; $a2 + $^arg } to capture value-at-closure-creation-time, is what gets me.)
20:19
erm. missed a closure in that. 20:20
$a++; $b = { my $a2 = $a; { $a2 + $^arg } }
or whatnot.
timotimo hmm, something like ENTER doesn't do it? 20:21
actually, shouldn't state do it?
d'oh. i *tested* nqp::clone in this channel and i'm wondering why nqp::copy doesn't work 20:25
skids timotimo: yes, you can use state, but the problem is you have to introduce a new name even so. 20:29
Or use OUTER
Really just a prettiness issue though, you can do it, it's just not poetry. 20:30
20:34 DarthGandalf left 20:36 kaare_ left
masak vendethiel: technically `temp` and `let` aren't declarators. 20:38
vendethiel r: my temp $a; #? 20:39
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!===␤Type 'temp' is not declared␤at /tmp/tmpfile:1␤------> my temp⏏ $a; #?␤Malformed my␤at /tmp/tmpfile:1␤------> my ⏏temp $a; #?␤ …»
masak vendethiel: also, after so many years with Perl 6, the only one I don't really care for is `our`.
skids What, not into sharing? :-) 20:40
masak m: my $foo = 5; say $foo; { temp $foo = 42; say $foo }; say $foo
camelia rakudo-moar a0a599: OUTPUT«5␤42␤5␤»
masak vendethiel: `temp` above is not a declarator, because the variable $foo is already declared.
timotimo same with let, no? 20:42
masak aye.
(and it's still the "same" variable, even when its value is being temporarily overwritten)
or, as with `let`, hypothetically overwritten.
xfix rn: my %statuses = (normal => 1,sleep => 2.5,frozen => 2.5,paralyzed => 1.5,poisoned => 1.5,burned => 1.5,); 20:43
camelia ( no output )
..niecza v24-109-g48a8de3: OUTPUT«Potential difficulties:␤ %statuses is declared but not used at /tmp/tmpfile line 1:␤------> my ⏏%statuses = (normal => 1,sleep => 2.5,fr␤␤»
xfix hm, ok
lue masak: ooc, what's your issue with 'our'?
20:43 vincent22 left
xfix Weird, it considers this hash to have odd number of elements, but I'm not quite sure why. 20:44
rn: gist.github.com/xfix/9515886
camelia rakudo-jvm a0a599: OUTPUT«("burned" => 1.5, "poisoned" => 1.5, "normal" => 1, "frozen" => 2.5, "sleep" => 2.5, "paralyzed" => 1.5).hashCannot unbox a type object␤␤»
..rakudo-parrot a0a599: OUTPUT«("normal" => 1, "sleep" => 2.5, "frozen" => 2.5, "paralyzed" => 1.5, "poisoned" => 1.5, "burned" => 1.5).hashOdd number of elements found where hash expected␤ in method STORE at gen/parrot/CORE.setting:9064␤ in sub MAIN at /tmp/tmpfile:24␤ in an…»
..niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤In parameter declaration, typename 'uint' must be predeclared (or marked as declarative with :: prefix) at /tmp/tmpfile line 21:␤------> uint⏏ :$max-hp,␤␤Parse failed␤␤»
..rakudo-moar a0a599: OUTPUT«("normal" => 1, "sleep" => 2.5, "frozen" => 2.5, "paralyzed" => 1.5, "poisoned" => 1.5, "burned" => 1.5).hashCannot unbox a type object␤ in sub MAIN at /tmp/tmpfile:20␤ in sub checker at src/gen/m-CORE.setting:3117␤ in method cando at src/gen/m-CO…»
xfix Any idea what I'm doing wrong? 20:45
timotimo what's with "where %statuses = "normal"?
skids trailing comma?
timotimo trailing comma should be allowed
xfix Oh...
timotimo i'd write { } instead, though
[Coke] look at the syntax highlighting.
xfix I want to have a default value, but this is a valid syntax.
timotimo ah, right
sorry, that always gets me
xfix is not*
Hm, how can I have where with default value? 20:46
timotimo er, didn't we fix that?
skids Try adding some newlines IIRC having run into that bug.
timotimo worst case, you have subset types "BallType" and "StatusType"
[Coke] again wishes p6 had /* */ ;P
lue [Coke]: but it does! :) 20:47
xfix #`()
[Coke] not quite the same, but ok. :)
jnthn evening, #perl6 20:48
lue o/ jnthn
[Coke] jnthn: O/!
xfix Also, yes, I've noticed syntax highlighting on GitHub. 20:49
lue ( Of course, if you want to do embedded comments the Cool Way™, you should go for things like #`⦃⦃⦃ ... ⦄⦄⦄ or #`﴾ ... ﴿ or #`☃ ... ☄ )
xfix .perl sorta confused me. If it assigned new value, why it has old value?
timotimo lue++ # snowman comet comment 20:50
xfix: what now?
xfix ("burned" => 1.5, "poisoned" => 1.5, "normal" => 1, "frozen" => 2.5, "sleep" => 2.5, "paralyzed" => 1.5).hashCannot
Apparently, it's being written to, but it has old value.
tadzik I see pokemons
xfix Because this script is Pokeball capture rate calculator. 20:51
timotimo you mean %statuses is being assigned to with the = "normal"?
xfix I think this happens.
I want both where and default value.
I tried Str :$ball = "poke" where %balls, but it's a syntax error.
timotimo yes
have you tried a subset declaration?
xfix I guess I should try.
timotimo otherwise, an enum could also work 20:52
xfix Seems to work.
vendethiel r: my $a = 0; say $a; { temp $a = 5; say $a; }; say $a;
timotimo and the .perl outputs the "old value" because the where clauses are being called after the whole script has run through
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«0␤5␤0␤»
timotimo i mean the main body of the script itself 20:53
vendethiel ah yeah, I see. That's kinda like `my $*a;`
20:53 DarthGandalf joined
timotimo bleh. my new nqp-level optimization causes a Exception in thread "main" org.perl6.nqp.runtime.UnwindException during compilation of nqp itself :( 20:54
20:55 jnap left
jnthn timotimo: Åhnejs! I think there's an envvar you can set to get more details. 20:57
timotimo Ohneins!
"Segmentation fault (core dumped)", well, that's interesting, too 20:59
21:00 BenGoldberg joined
jnthn Ooh! 21:00
Crash ALL the backends!
timotimo aye aye, sir 21:01
full steam ahead!
... wait
i'd have to go in reverse to crash the *back*end, right?
21:02 LLamaRider joined
lue timotimo: the backend is the core of what makes this train run, so obviously the backend is the engine at the front :) 21:02
vendethiel what's the diff between `my $*a = 1;` and `temp $*a = 1;` ? 21:04
timotimo there isn't really one, as $* is already dynamically scoped
vendethiel mmh. `temp` gets to dynamically scope too ? 21:05
BenGoldberg 'temp' is how perl6 spells 'local' from perl5.
vendethiel r: my $a = 1; sub foo { say $a; }; foo(); { temp $a = 2; foo(); }
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤2␤»
tadzik um, not really
vendethiel BenGoldberg: I never did perl5, sorry
tadzik $* is the new local
scope-wise
jnthn vendethiel: Essentially "none", but "my $*a;" and "temp $*a;" differ :)
The latter being kinda useful. 21:06
vendethiel jnthn: mind explaining ?
timotimo the latter assigns the current value of $*a from before to the temporary new one 21:07
jnthn vendethiel: If you write "temp $*a" then it keeps its value, but means any changes to the variable in the future will be reverted once you return from this routine.
vendethiel r: sub foo { say $*a; }; { my $*a = 1; }; foo(); { my $*a = 2; foo(); } foo(); 21:08
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> a = 1; }; foo(); { my $*a = 2; foo(); } ⏏foo();␤ expecting any of:␤ …»
vendethiel r: sub foo { say $*a; }; { my $*a = 1; }; foo(); { my $*a = 2; foo(); }; foo();
camelia rakudo-parrot a0a599: OUTPUT«Dynamic variable $*a not found␤ in method gist at gen/parrot/CORE.setting:12402␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13335␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm a0a599: OUTPUT«Dynamic variable $*a not found␤ in method gist at gen/jvm/CORE.setting:12381␤ in method gist at gen/jvm/CORE.setting:1053␤ in sub say at gen/jvm/CORE.setting:13293␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-moar a0a599: OUTPUT«===SORRY!===␤Dynamic variable $*a not found␤»
21:08 kivutar joined
vendethiel r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a = 2; foo(); }; foo(); 21:08
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤2␤1␤»
vendethiel so, `temp $*a` is like `my $*a = $*a` ? 21:09
r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a; foo(); $*a = 5; foo(); }; foo(); 21:10
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤(Any)␤5␤1␤»
vendethiel r: sub foo { say $*a; }; my $*a = 1; foo(); { temp $*a; foo(); $*a = 5; foo(); }; foo();
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤1␤5␤1␤»
vendethiel alrighty :-).
r: sub foo { say $*a; }; my $*a = 1; foo(); { my $*a = $*a; foo(); $*a = 5; foo(); }; foo();
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«1␤(Any)␤5␤1␤»
vendethiel I guess the `my` comes first
(conjecture : which might be why `my Dog $a .= new` works ?) 21:11
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }' say $^b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Two terms in a row␤at /tmp/tmpfile:1␤------> my $*b = 1; { ++temp $*b; say $*b; }⏏' say $^b;␤ expecting any of:␤ …»
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }; say $^b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Cannot use placeholder parameter $^b in the mainline␤at /tmp/tmpfile:1␤------> b = 1; { ++temp $*b; say $*b; }; say $^b⏏;␤»
BenGoldberg r: my $*b = 1; { ++temp $*b; say $*b; }; say $*b;
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«2␤1␤»
21:11 treehug8_ joined
BenGoldberg r: my $*b = 3; { (temp $*b) *= 5; say $*b; }; say $*b; 21:11
camelia rakudo-parrot a0a599, rakudo-jvm a0a599, rakudo-moar a0a599: OUTPUT«15␤3␤»
vendethiel Don't worry BenGoldberg, I got it :p 21:12
21:13 treehug88 left
tadzik mwahaha 21:14
eh, nevermind
jnthn ... 21:15
tadzik well 21:16
lue would anyone mind if I changed the custom 'say2's here to 'note's? github.com/rakudo/rakudo/blob/nom/...pm#L62-L71
tadzik I tried one of the Javascript game frameworks
21:16 hoverboard left
tadzik compiling the empty source file with typescript makes rakudo-jvm's startup overhead look blazingly fast 21:16
jnthn o.O 21:17
tadzik it takes almost 3 seconds
21:17 hoverboard joined
tadzik and it's 2.5 even if I don't load any frameworks on the way 21:18
masak clearly they have some reducible overhead there. 21:19
21:20 skids left
dalek kudo/nom: b6e4a8e | lue++ | src/core/Deprecations.pm:
Deprecation messages now work on rakudo-moar

Additionally, replace the say2 sub here with note, which fulfills the same purpose.
21:23
21:25 bjz left
timotimo good catch 21:25
lue I was just wondering why my shiny new .ast deprecation wasn't showing up in r-m is all :) 21:26
jnthn oh...we deprecated .ast in the end? :/ 21:27
timotimo meh :| 21:28
jnthn I'd really have rather not do such a drastic deprecation in the same month I'm hoping to prepare/cut a Star on Moar/JVM.
Given it'll likely involve chasing lots of modules for fixes.
So don't be surprised if I veto that deprecation ahead of release if things don't look how I want Star module wise.
lue jnthn: it's been in S05 for a while, just finally got annoyed enough that my future-looking attempts at using .made weren't working :) 21:29
jnthn lue: Making ".made" work now is fine. Making ".ast" report that it's deprecated is what I'm worried about. 21:30
Those two are independent.
lue jnthn: yeah, I can definitely see where that can cause undue annoyances. Commenting out the DEPRECATED or something would be just fine for the next release.
tadzik I liked .ast :(
21:30 treehug8_ left
masak too 21:31
timotimo too
masak don't really see why it's being deprecated.
tadzik because it's now .made
masak yeah, I know *that*.
lue make/made is a better pairing than make/ast, name-wise
masak but that doesn't make .ast wrong.
tadzik use Acme::BringBackDotAst 21:32
jnthn masak: Yes, I've argued for keeping both too :)
lue masak and others: check here: github.com/perl6/specs/commit/2437...931c720b4c 21:33
"Perhaps the .ast method should be kept as a synonym for .made, and may even have a check for AST-nodeness added, to give it additional implicit documentational value in the Perl 6 internals."
21:34 btyler left
lue so there's nothing saying we can't have .ast, it's just currently no longer a part of the spec. 21:35
21:37 hoverboard left
timotimo i have no idea what "ASTness" would be 21:37
especially since QAST isn't to spec.
21:38 stevan_ left, virtualsue joined, btyler joined
lue Yeah, so I think we could just have .ast as a pure synonym. 21:39
21:40 kbaker left
lue (To be honest, I can't think of a time where you'd attach not-an-AST with make; in fact, it almost (almost) seems like make is the one that needs renaming) 21:40
jnthn lue: One of my recent talks had an example where .ast didn't really bi^H^Hfit 21:41
*fit
timotimo "astize" :P 21:43
astify?
lue jnthn: could it perhaps be the talk linked in that commit? :)
jnthn mebbe :P
lue timotimo: I was thinking &node or &nodify
timotimo .o( turn the result of this code into javascript code )
jnthn 'twas the one about temperature data I think :)
lue jnthn.net/papers/2014-fosdem-perl6-today.pdf is the one in the commit. 21:45
I wonder if it would be worth separating the concepts of "node in AST tree" and "annotation on Match object"
jnthn yeah, that's the one 21:46
timotimo i have a kinda strong feeling that you'd hardly ever see both
but you'll still have to pay for the extra storage, no?
jnthn Indeed...we don't want to make match objects any memory hungrier too :)
timotimo or mix in something
lue yeah, and I'm not sure "node in AST tree" could be much different from the other one. 21:47
The only real solutions I see is to just have .ast and .made as synonyms, or force people to give up .ast. I like the synonym one better. 21:49
timotimo agreed.
21:51 hoverboard joined
dalek p: 3ebb27f | jonathan++ | tools/build/MOAR_REVISION:
Bump to a MoarVM with NativeCall.
21:53
p: 2d19f41 | jonathan++ | t/nativecall/01-basic.t:
Make NQP nativecall tests robust on Win32.

At least, with MSVC. If we don't find standard C symbols, fall back to explicitly looking in the C library.
p: 05ab5cd | jonathan++ | tools/build/Makefile-Moar.in:
Run t/nativecall/01-basic.t on MoarVM backend.
jnthn So, that's the very simple native call tests that NQP has passing on Moar... 21:54
timotimo \o/
jnthn "just" need to do the rest of the stuff to have NativeCall.pm build and pass tests now :P 21:55
timotimo how much stuff is it actually? 21:56
jnthn Well, I think we at least need to stub CStruct to get NativeCall.pm6 to compile 21:57
timotimo ah, CStruct, aye.
did we have a good idea for how to make variables from C land reachable in perl6?
jnthn Then some more work to get the test harness to work out as it needs to be able to build the C libraries to test against.
21:58 virtualsue left, itz_ left
jnthn And after that comes CStr, CArray and CPointer... 21:59
uh, s/CPointer/CStruct
CPointer we already have.
And finally callbacks.
So yeah, some work.
22:00 dmol left, stevan_ joined
timotimo i'm getting really, really, really few lex-to-locals in rakudo as opposed to nqp 22:00
jnthn timotimo: Well, dlsym can be used to reach the variables
22:02 itz left
timotimo oh. well, that's a good start 22:02
can we have re-use CPointer for that? 22:03
jnthn That feels a bit off...
timotimo not really exactly sure how to reach variables 22:04
jnthn I'll ponder it a bit.
22:04 itz joined
jnthn It's more an API design challenge than an implementation one, I think... 22:04
timotimo aye 22:05
jnthn I mean, "say get_cvar('lib', 'symbol', int32)" works...
timotimo and set_cvar as well, eh?
jnthn Yeah
But it sucks too. :) 22:06
'cus you have to resolve the symbol every time.
timotimo just exposing that is a good start; as far as i can tell people have been using Inline::C for the equivalent of that
jnthn nqp::nativevar('lib', 'symbol', int32) returning something appropriate is closer, I just need to ponder what the appropriate thinguymmy is :) 22:07
timotimo that's right
sergot timotimo: thank you very much :)
timotimo you're welcome 22:08
sergot timotimo: pushed :) 22:09
22:09 itz left
dalek osystem: db4499d | sergot++ | META.list:
HTTP::Response added
22:10
jnthn I wonder if it ain't the same problem as passing rw natives... :)
timotimo may very well be
22:10 rindolf left
timotimo i'm looking forward to that fix as well :) 22:11
lue Is it alright if I just spec .ast as a synonym of .made then?
timotimo jnthn: hm, how do i best figure out if my lexical-to-local stuff has any good effect?
except for writing code and looking at the resulting qast
22:11 itz joined
jnthn timotimo: Well, that's one way. Also counting the number of MAST::Frames that show up if you disassemble NQP code..should be less after the opt if you are inlining 22:12
sergot timotimo: will be great if you check other my HTTP::* modules.
timotimo i don't even know that much about HTTP :) 22:13
jnthn: so i moar --dump the .moarvm and grep -c for what exactly? 22:14
22:14 cognominal joined
timotimo ah, i just had a not so excellent example file 22:14
22:15 cognominal__ left
jnthn ^\s+Frame_\d+':' 22:15
timotimo thank you
22:16 itz_ joined
timotimo hm. --dump segfault'd 22:17
at least it segfaulted in vm_destroy_instance 22:18
so that's not that terrible
gist.github.com/timo/eda741286aaa16a8a8b5
well, ww i guess
22:23 itz_ left, itz left
dalek ecs: 3795799 | lue++ | S05-regex.pod:
[S05] Reintroduce the .ast method.

Every good language has a few synonyms anyway :) .
22:25
timotimo my optimization is obviously not working, as it doesn't reduce the amount of frames at all. 22:26
jnthn yeah, then it's inlining nothing... 22:27
22:30 Rotwang1 left 22:33 arnsholt left
dalek kudo/nom: 5b109d6 | lue++ | src/core/Match.pm:
Undeprecate .ast
22:34
22:35 arnsholt joined 22:37 larks joined 22:39 hoverboard left 22:40 itz joined
timotimo i think i may be doing it all rong. 22:44
22:46 bowtie left, itz left 22:47 Ulti joined, bowtie joined 22:51 FROGGS joined
FROGGS hello from france! 22:53
timotimo france from hello!
lue FROGGS: allô!
timotimo oh, maybe i'm close to the goal now 22:55
but i'm not treating the outermost blocks properly yet
good ol' special cases
22:57 adu joined
timotimo :\ 23:04
not having too much success with this project
23:04 LLamaRider left 23:06 Psyche^ joined
adu timotimo: oh noes 23:08
23:10 Psyche^_ left 23:18 clkao left
timotimo do i have to scrap half of it and start over? :\ 23:18
23:19 clkao joined
masak 'night, #perl6 23:21
lue masak o/
23:29 denisboyun left, kivutar left 23:32 skids joined 23:34 pecastro left 23:36 Kelder joined, pecastro joined, btyler left 23:37 d4l3k_ joined, Util_ left, Ayiko left, Util joined, tadzik left, dalek left, Mouq joined 23:38 tadzik joined, d4l3k_ is now known as dalek
Mouq .tell colomon re: irclog.perlgeek.de/perl6/2014-03-12#i_8423436 There is github.com/perl-cldr/cldr-list-pm6/ by patch++, which solves half of your problem 23:38
yoleaux Mouq: I'll pass your message to colomon.
adu timotimo: half of what? 23:39
23:41 hoverboard joined
lue wonders what $*BORG in STD stands for; Block OR G... ? 23:43
timotimo adu: i'm trying to build proper block inlining for NQP so that we can have much fewer frames, fewer lexical variables (in favor of more locals) and smaller lexpads and stuff 23:53
adu I understand inlining 23:54
but what do you mean by "fewer lexical variables" 23:55