»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
babydrop | So that leaves you with the postfix (...).Mix form, which sucks too, because on anything but a trivial Mix the | 00:00 | |
postfix is too far from the start for you to instantly parse the entire list as a mix | |||
00:01
rburkholder joined
00:07
TimToady joined
00:08
wamba left,
Actualeyes joined
00:10
girafe left
00:13
Actualeyes left
|
|||
dalek | : 7d28ceb | (Zoffix Znet)++ | misc/perl6advent-2016/schedule: Claim zofspot "When a Rat Got Too Fat: Perl 6 For Accountants" |
00:15 | |
00:23
pierre__ joined
|
|||
babydrop | my $m1 = (:weight(10.85), :speed(73.3 ), :lanes-filled(3)).Mix; my $m2 = (:weight(9.75 ), :speed(79.3 ), :lanes-filled(3)).Mix; say $m1 ∖ $m2; | 00:24 | |
m: my $m1 = (:weight(10.85), :speed(73.3 ), :lanes-filled(3)).Mix; my $m2 = (:weight(9.75 ), :speed(79.3 ), :lanes-filled(3)).Mix; say $m1 ∖ $m2; | |||
camelia | rakudo-moar 7ad4a8: OUTPUT«mix(weight(1.1))» | ||
babydrop doesn't follow that one at all... | |||
Now I totally see why abstract wanted those changes to sym diff ops | 00:30 | ||
:( | |||
babydrop is struggling to come up with a good use for Mixes :\ | 00:32 | ||
00:33
Actualeyes joined
00:35
canopus_ left
|
|||
babydrop | never mind, got a good one :P | 00:36 | |
00:38
aborazmeh joined,
aborazmeh left,
aborazmeh joined
00:43
canopus joined
00:50
telex left
00:51
_28_ria joined
00:56
cdg left
00:58
BenGoldberg joined
|
|||
vcv_ | Anyone doing www.adventofcode.com, specifically in Perl 6? | 00:58 | |
00:58
telex joined
|
|||
babydrop | vcv_: hahainternet | 00:59 | |
is | |||
vcv_ | Cool, posting solutions anywhere? | ||
babydrop | So far, I think they were struggling coming up with one :P | ||
vcv_ | darn, hoping to find others doing it so i can compare solutions in terms of Perl 6 features used | 01:00 | |
01:08
BenGoldberg left
01:11
pierre__ left
01:12
BenGoldberg joined
01:13
telex left
01:18
pierre__ joined,
Ben_Goldberg joined,
BenGoldberg left,
Ben_Goldberg is now known as BenGoldberg
01:21
seatek joined
01:28
telex joined
|
|||
babydrop | New Perl 6 Advent Post: "Day 6 – Perl 6 Books — the Time is Ripe" perl6advent.wordpress.com/2016/12/...e-is-ripe/ | 01:40 | |
01:41
skaji joined,
lighttrr joined
|
|||
BenGoldberg | babydrop, Have you tried using MixHash instead of Mix? Unlike Mix, it's mutable. | 01:42 | |
babydrop | BenGoldberg: that doesn't help our poor mix routine ;) | 01:44 | |
or the method... which on MixHash is just as flimsy | |||
01:49
telex left,
pyrimidine left,
cibs left
01:50
cibs joined
|
|||
BenGoldberg | m: if 42 -> $_ { .say }; | 01:51 | |
camelia | rakudo-moar 7ad4a8: OUTPUT«42» | ||
BenGoldberg | m: if defined 42 -> $_ { .say }; | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«True» | ||
BenGoldberg wonders how hard it would be to create a syntactical wossname such as ifdef, which would act like 'if defined', *except* that the value passed to the block wouldn't be the True returned by defined. | 01:53 | ||
01:53
pierre__ left
|
|||
BenGoldberg wonders if he's making any sense. | 01:53 | ||
babydrop | BenGoldberg: with 42 { ... } | ||
No need to creat anything :) | 01:54 | ||
BenGoldberg | m: with 0 { .say } | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«0» | ||
BenGoldberg | m: with Any { .say } | ||
camelia | ( no output ) | ||
BenGoldberg | m: with Any { .say } else { say 'nope' } | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«nope» | ||
BenGoldberg | Huh. | ||
babydrop++ | |||
BenGoldberg will probably think better after dinner. | 01:56 | ||
lucasb__ | m: without Any {} else {} | 01:57 | |
camelia | rakudo-moar 7ad4a8: OUTPUT«5===SORRY!5=== Error while compiling <tmp>"unless" does not take "else", please rewrite using "if"at <tmp>:1------> 3without Any {} 7⏏5else {}» | ||
01:57
telex joined
|
|||
lucasb__ | "unless" does not take "else" | 01:57 | |
and it seems that neither does 'without' | |||
babydrop | That's by design. | 01:58 | |
lucasb__ | I was trying to draw attention to the message mentioning "unless" when I actually typed "without" | ||
babydrop | Oh, didn't notice :) | 01:59 | |
01:59
pyrimidine joined
|
|||
babydrop | Would you report that as a bug, please? | 01:59 | |
lucasb__ | well, it's not a serious one :) | ||
babydrop | I'd say a pretty serious one :) | 02:00 | |
02:00
pierre__ joined
|
|||
babydrop | It references the thing that's not in code and suggest usage for a operationally different construct. | 02:01 | |
lucasb__ | that's code reuse | ||
babydrop | haha | ||
lucasb__ | TT reused a grammar production :) | ||
02:03
pierre__ left,
pierre__ joined
|
|||
AlexDaniel | lucasb__: that's a bug, please report | 02:11 | |
02:12
skids joined
02:13
kalkin- joined
|
|||
babydrop | damn wordpress... my lines are too long for that narrow strip | 02:14 | |
02:16
lucasb__ left
|
|||
vcv_ | my %hash = a => 5, b => 3, z => 1, y => 1, x => 1; <<-- how can i get the keys from this hash in sorted order, where the sort is first by value, then by key if value is equal? so i want to end up with a list (a b x y z) | 02:20 | |
i know how to do it with a custom sort, but curious if there any sort of shorthand for sorting a hash by value, then key | 02:21 | ||
AlexDaniel | vcv_: may I ask why? :) | 02:22 | |
mspo | sounds like a nice memory optimization | ||
vcv_ | trying to learn new tricks for advent of code | ||
Something like... %hash.sort: *.value, *.key; | 02:25 | ||
AlexDaniel | m: my %hash = a => 5, b => 3, z => 1, y => 1, x => 1; .say for %hash.pairs.sort({ ($^a.key cmp $^b.key) || $a.value cmp $b.value }) | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«a => 5b => 3x => 1y => 1z => 1» | ||
japhb | Absolutely honest question: Why are we still serving with Wordpress, given that everyone seems to hate it? Just hysterical raisins? | 02:26 | |
AlexDaniel | japhb: what else would you recommend? | ||
japhb | AlexDaniel: That depends on what we want from it. There's a part of me that says "Just use Github Pages", but I have no idea how hard it would be to put commenting on there. And if we still want it to be blog-like, there are other general blogging platforms that would work. And as a base, there's always the option of serving static pages that we generate however we want. | 02:28 | |
AlexDaniel | well, I think switching is not justified unless we switch to dogfood | 02:29 | |
japhb | AlexDaniel: the last option I listed above was one variant of the dogfood branch | 02:30 | |
(I realize that wasn't obvious.) | |||
mspo | you have mustache and pod6/markdown :) | ||
Juerd | The world needs a blog/cms that doesn't suck, and we need it to be written in Perl 6. Problem is, it'd be a huge project. | ||
mspo | how many lines would that take? | ||
Juerd: yes | |||
babydrop | What do I schedule my advent post as? | 02:31 | |
Oh | |||
Never mind... got confused by dates. | |||
AlexDaniel | Juerd: right now I am starting a wiki engine, it will work nicely for blogs too | ||
Juerd: but it will take quite some time… :) | |||
02:31
lighttrr left
|
|||
Juerd | Publishing documents by itself is easy. Some templates, done. But to make it enduser friendly, you need user accounts, wysiwyg, scheduling, draft status, categories. And to make it nice for visitors, you need comments. And then you need moderation. Argh. | 02:32 | |
mspo | maybe nailing down binary-based networking would be a good first sttep | ||
Juerd: then you also need tons of javascript | |||
babydrop | mspo++ | ||
mspo | (binary networking for H2, you know) | 02:33 | |
Juerd | And since Perl 6 doesn't quite perform well yet, most of it needs to be static generated content. | ||
AlexDaniel | Juerd: or just cached | ||
babydrop | For Advent writers: wrote a little script to convert a markdown rendered Gist to HTML stuff you can stick into Wordpress: gist.github.com/zoffixznet/bea4474...c36524d828 | ||
Juerd | AlexDaniel: Believe me, caching really doesn't suffice if your platform is as heavy as Perl 6. | ||
AlexDaniel: One little mistake (e.g. not normalizing urls in your caching mechanism) and you end up with a dead server. | 02:34 | ||
AlexDaniel | Juerd: what kind of data is this based upon? | ||
02:34
labster left
|
|||
AlexDaniel | Juerd: like, what website did you have? | 02:35 | |
Juerd | AlexDaniel: Experience with similar things, written in Java. | ||
And Perl 6 now is much heavier than Java then. | |||
Caching is hard, generating static content is easy. At least, if you make the design choice early. That's another reason for not going with caching. | |||
mspo | it's always a level | 02:36 | |
should your perl6 server be listening on 80? 443? doing its own TLS? | 02:37 | ||
it no, which protocl should apache use to talk to you, over what? | |||
etc | |||
too bad the mojo guys left :) | |||
Juerd | For most of the content, the web server should not be talking to your application at all. | 02:38 | |
The thing is, if you have caching, the hard part is invalidating the cache. And if you're doing cache invalidation right, you might as well just generate pages at that point. The easier solution is expiry based caching, but that tends to kill servers when everything expires together. | 02:40 | ||
mspo | smarter CDN know how to handle that (fastly) | 02:43 | |
using a lot of tricks | |||
docs.fastly.com/guides/performance...collapsing | 02:44 | ||
02:48
ilbot3 joined
|
|||
Juerd | I don't think a CMS that depends on those tricks has a good chance of becoming popular. | 02:49 | |
mspo | wordpress is popular because it's "easy" | ||
or like gui-driven | |||
I don't see an opportunity to repeat the wordpress magic | |||
Juerd | Oh, a lot of people are looking for alternatives for wordpress | 02:50 | |
mspo | because the world is different now | ||
you say that and I think it sometimes too | |||
but go look at a job board :) | |||
Juerd | Different people are switching for different reasons. And yes, the majority is staying with wordpress. | ||
mspo | wordpress + RoR = tons of jobs | ||
Juerd | But for example Ghost is gaining popularity. | 02:51 | |
And Ghost's main feature seems to be simplicity. | |||
We can do simple :) | |||
If job boards are your guide, I wonder why you'd bother with Perl 6 at all :D | |||
mspo | it's some kind of mental illness I have | 02:52 | |
Juerd | :) | ||
Don't get better :) | |||
mspo | every part of wordpress except for actual wordpress is pretty amazing | ||
the jobs situation, the plugins and themes marketplaces | 02:53 | ||
those two things are very impressive | |||
Juerd | Well, wordpress itself is pretty amazing too. As in: it continues to amaze me. | ||
mspo | it fails to amaze me since I run it on a moderately popular site ;) | ||
scaling out is tricky | |||
Juerd | I wonder what moderately popular means :) | 02:54 | |
In terms of hits per second during peak hours, how much does it endure? | |||
mspo | well on moderately small aws instances I was having issues around 30 req/s if I remember correctly | 02:56 | |
Juerd | Eek, 4 o'clock... Sorry, bed time for me. | ||
30 r/s is quite a lot! | 02:57 | ||
mspo | anyway if you have a NAS and memcache you can scale out | ||
and amazon has EFS now, which is a good enough (albeit slow) NAS | |||
Juerd | Good night! | 02:58 | |
mspo | so now it's pretty easy to scale out (single region) ;) | ||
'night | |||
03:06
labster joined,
pyrimidine left
03:09
eliasr left
03:19
noganex_ joined
03:21
pyrimidine joined
03:38
pierre__ left,
bjz joined
03:46
pierre__ joined
03:51
labster left
03:57
bjz left
04:07
_28_ria left
04:08
_28_ria joined
04:11
bpmedley joined
|
|||
samcv | do words like `deeply` `rw` `raw` `copy` they HAVE to come after `is` right? like `is export` etc | 04:11 | |
AlexDaniel | right? | 04:12 | |
samcv | pretty sure they must | ||
wanted to ask before i update the syntax highlight | |||
AlexDaniel | .oO( sub immerse deeply { } ) |
04:14 | |
geekosaur | yes, they must. it's trait_mod:<is> in the grammar | ||
samcv | yeah looking at traits.pm | 04:15 | |
yeah. seems to be they have to | |||
geekosaur | "is" is how the grammar knows to look for a trait_mod:<is> | 04:18 | |
04:24
cooper_ joined
|
|||
Xliff_ZZzzZZZzzz | samcv: Syntax highlight for what editor, if you don't mind? | 04:25 | |
04:25
Xliff_ZZzzZZZzzz is now known as Xliff
|
|||
samcv | Atom. also the one github uses for syntax highlighting | 04:26 | |
Xliff | Hmm... may want to try that. | 04:27 | |
samcv | i'm probably not going to change it for now.. should be mostly fine, at least made any of those things that comes before => not highlight, in case somebody uses a key | ||
err as a key for pairs | |||
Xliff | Sublime Text used to have decent perl highlighting, but that was Perl5. | 04:28 | |
With Perl6 there are... issues. | |||
04:28
khw left
|
|||
samcv | the atom highlighting is the best i think. Install "Perl 6 FE" | 04:28 | |
well at least since i added fancy quotation marks and lots of quoting constructs :) | |||
Xliff, my changelog is here github.com/samcv/language-perl6fe/...ANGELOG.md just started working on it a week ago | 04:29 | ||
Xliff | Yeah. That's what's getting the Sublime Highlighting confused. | ||
samcv | so got a ton of things working that hadn't worked | ||
Xliff | samcv++ | ||
Now let's see if it installs on debian vm | |||
samcv | heh | ||
v1.9 isn't out yet. will be when MadCapJake gets out of hibernation again | 04:30 | ||
he needs to just give me commit access ;P | 04:31 | ||
Xliff | feck | 04:35 | |
Atom is x64 only. The VM is i386 | |||
samcv | it's x64 only? | ||
Xliff | So back to sublime it is. | ||
Yup | |||
samcv | you can't just compile it yourself??? | ||
Xliff | Aparently not. | ||
samcv | i am sure you can though | 04:36 | |
even if they don't provide packages for it | |||
what distro? | |||
oh Xliff you can use atom grammars in sublime | 04:37 | ||
Xliff | Debian | ||
Oh really? | 04:38 | ||
samcv | just clone this into your packages folder for sublime | ||
git clone -b testing github.com/samcv/language-perl6fe.git | |||
04:38
pierre__ left
|
|||
samcv | i think that should magically work maybe | 04:38 | |
Xliff | Will try. | 04:41 | |
samcv | hmm i don't use it but idk how to enable packages or anything so | 04:42 | |
but i think it should work | |||
Xliff | Nope. Not seeing it. Will check. | ||
04:45
pierre__ joined
04:46
pyrimidine left
04:49
TimToady left,
pierre__ left
04:51
TimToady joined
|
|||
samcv | hmm i know atom uses similar to textmate and sublime can use textmate | 04:54 | |
there must be a way but all i'm seeing are how to use a normal textmate thing in sublime and there must be some other package data it needs | |||
hmm | 04:55 | ||
Xliff, i will investigate ok | |||
Xliff | Yeah. ST3 switched to a custom package thingy. | 04:56 | |
So I am trying to build atom from src | |||
samcv | ah ok | ||
Xliff | Finally got the right version of nodejs and npm on the VM so things look like they are working. | ||
04:57
pyrimidine joined
|
|||
samcv | cool | 04:57 | |
so looks like textmate are xml files and atom ones are the same, but they use basically JSON (technically CSON) | 04:59 | ||
but CSON is just JSON with less brackets | |||
i might look into figuring that out, because they we would have perl 6 highlighting on sublime, textmate and atom | |||
that would be sick | 05:01 | ||
05:02
pyrimidine left
|
|||
samcv | gonna get a textmate bundle. then use atom to convert it to atoms package format. then get some way to automate converting them | 05:02 | |
05:05
rburkholder left
05:09
labster joined
05:11
aborazmeh left
05:15
inokenty left
05:16
BenGoldberg left
05:18
arnsholt joined
05:29
inokenty joined
05:30
pyrimidine joined
05:34
pierre__ joined,
mohae_ joined,
pyrimidine left
05:39
pierre__ left
05:50
AlexDaniel left
05:56
Cabanossi joined
06:08
pyrimidine joined
06:11
pyrimidine left,
pyrimidine joined
06:16
pyrimidine left
06:19
domidumont joined
|
|||
timotimo | babydrop: give me your wordpress account name or whatever i need and i'll give you access | 06:21 | |
06:24
pierre__ joined
06:25
domidumont left,
domidumont joined
|
|||
baest_ | masak: wheee, at least my 2 secs of fame :D | 06:29 | |
06:29
baest_ is now known as baest
|
|||
timotimo | i'm not quite sure why calling $sum = $sum + $_ over and over spends 18.7% in mp_mul_2d | 06:30 | |
06:38
Actualeyes left
|
|||
timotimo | ah, it comes from MVM_bigint_add via mp_set_long and set_int via MVM_bigint_mp_set_uint64 | 06:43 | |
Xliff | Wheee! | 06:45 | |
I can't get Atom to start.... and converting "cson" to something usable looks to be non-trivial. :/ | |||
timotimo | m: say 1 << 32 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unsupported use of << to do left shift; in Perl 6 please use +< or ~<at <tmp>:1------> 3say 1 <<7⏏5 32» | ||
Xliff | I will bug samcv tomorrow. | ||
timotimo | m: say 1 +< 32 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«4294967296» | ||
samcv | what, hi | ||
Xliff | Oh, hi. | ||
I built atom. Started it. No GUI. EVAR | 06:46 | ||
timotimo | m: say (1 +< 32) - 1000000 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«4293967296» | ||
samcv | you're on debian? | ||
timotimo | this shouldn't even reach bigint territory ... | ||
Xliff | So now I am looking at the grammar files and "TextMate support" covers a wide bit of real-estate. | ||
06:46
bjz joined
|
|||
Xliff | The problem here is that the language-perl6fe is not directly usable by ST3 | 06:46 | |
06:47
darutoko joined
|
|||
Xliff | m: say 1 +< 16 | 06:47 | |
camelia | rakudo-moar 7ad4a8: OUTPUT«65536» | ||
Xliff | m: say 1 +< 32 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«4294967296» | ||
Xliff | m: say 1 +< 64 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«18446744073709551616» | ||
samcv | i'm working on getting cson converted to xml now | ||
Xliff | samcv++ -- got bless you! | ||
You have your first guinea pig right here. | |||
samcv | u: crying face | ||
unicodable6 | samcv, U+1F622 CRYING FACE [So] (😢) | ||
samcv, U+1F62D LOUDLY CRYING FACE [So] (😭) | |||
samcv, U+1F63F CRYING CAT FACE [So] (😿) | |||
Xliff | I have to add some nice smileys to wincompose | 06:48 | |
:( | |||
samcv | would be nice if unicodable6 stored all the stuff in a datastructure instead of havig to search all of them | ||
Xliff | Hrm. | ||
samcv | i wrote my own for my ircbot, and was a like 4x speed improvement from unicodable | ||
after deciding it was too slow | |||
why so hard to have a json2xml converter that works | 06:50 | ||
goddamit | |||
06:50
RabidGravy joined
|
|||
samcv | it's like nobody has had this problem before | 06:50 | |
xi did it though | 06:51 | ||
now to see if the datastructure is correct. had to first convert from cson to json, then find some json converter. actually had to download `xmlsh` which is... like some shell for xml? | 06:52 | ||
i couldn't find a standalone program that actually worked | |||
06:54
telex left
|
|||
timotimo | oh, of course, the sum quickly reaches bigint territory because reasons | 06:54 | |
samcv | tho textmate is actually plist type xml so goddamit | ||
timotimo | never mind, move along ... | ||
06:55
domidumont left
06:57
Actualeyes joined,
skids left
07:03
Tonik joined
07:05
domidumont joined
|
|||
Xliff | Dammit!~ | 07:05 | |
VirtualBox doesn't support glx 1.3?!? | |||
*sigh* | 07:06 | ||
samcv | m: my $str = '<member name="thing">'; $str ~~ s| ‘<member name="’ (.*?) ‘">’ |<key>$0</key>|; say $str; | 07:08 | |
camelia | rakudo-moar 7ad4a8: OUTPUT«Use of Nil in string context in code at <tmp> line 1<key>» | ||
samcv | why does this not work? | ||
m: my $str = '<member name="thing">'; $str ~~ s| ‘<member name="’ (.*?) ‘">’ |<key>$0</key>|; say $str; say $0; | 07:09 | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«Use of Nil in string context in code at <tmp> line 1<key>「thing」» | ||
samcv | m: my $str = '<member name="thing">'; $str ~~ s| ‘<member name="’ (.*?) ‘">’ |<key>$0</key>|; say $str; say $0.Str; | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«Use of Nil in string context in code at <tmp> line 1<key>thing» | ||
samcv | it gets the match... | ||
07:15
kurahaupo_ left
07:17
Actualeyes left
07:18
kurahaupo left
07:19
kurahaupo__ joined
07:21
Tonik left
07:23
kurahaupo__ left
|
|||
dalek | : 7ceee0e | ugexe++ | misc/perl6advent-2016/schedule: Update schedule |
07:25 | |
Xliff | That's odd, coz this works: m: my $str = '<member name="thing">'; $str ~~ s| '<member name="' (.*?) '">' | <key> $0 </key> |; say $str | 07:26 | |
m: my $str = '<member name="thing">'; $str ~~ s| '<member name="' (.*?) '">' | <key> $0 </key> |; say $str | |||
camelia | rakudo-moar 7ad4a8: OUTPUT« <key> thing </key> » | ||
07:26
firstdayonthejob joined
|
|||
Xliff | m: my $str = '<member name="thing">'; say $str; $str ~~ s| '<member name="' (.*?) '">' | <key> $0 </key> |; say $str | 07:26 | |
camelia | rakudo-moar 7ad4a8: OUTPUT«<member name="thing"> <key> thing </key> » | ||
07:26
inokenty left
|
|||
Xliff | It's a metachar issue. | 07:27 | |
m: my $str = '<member name="thing">'; $str ~~ s| '<member name="' (.*?) '">' | \<key\>$0\<\/key\> |; say $str | |||
camelia | rakudo-moar 7ad4a8: OUTPUT« <key>thing</key> » | ||
Xliff | m: my $str = '<member name="thing">'; $str ~~ s| '<member name="' (.*?) '">' |\<key\>$0\<\/key\>|; say $str | ||
camelia | rakudo-moar 7ad4a8: OUTPUT«<key>thing</key>» | ||
Xliff | samcv: ^^ | ||
07:27
inokenty joined
07:28
ribasushi left
07:29
wamba joined
07:30
pyrimidine joined
07:31
telex joined
|
|||
samcv | ah | 07:31 | |
i thought the after section was literal | |||
07:31
ribasushi joined
|
|||
samcv | i know it allows ' marks at least | 07:31 | |
without quoting | |||
07:32
breinbaas joined
07:34
CIAvash joined,
pyrimidine left
07:35
Actualeyes joined
07:36
zgrep joined
07:37
firstdayonthejob left,
pyrimidine joined
|
|||
zgrep | Question... perl6 regexes / grammars are very left-to-right oriented, right? Is there a way that I could convince them to be more right-to-left parsing? | 07:41 | |
masak | zgrep: reverse the string before parsing? :) | 07:42 | |
zgrep | I was indeed thinking of that, but that seems... not like the best solution. :P | ||
07:42
pyrimidine left
|
|||
masak | could possibly also do something cool with the MOP to allow you to write the regexes in the natural direction | 07:42 | |
timotimo | we already have magical string flipping for lookbehinds | 07:46 | |
zgrep | Ooh... hmm... | 07:47 | |
07:48
ribasushi left
|
|||
masak | when I last investigated lookbehinds, I concluded that it needed three different strategies to work in general -- one default and two increasingly worse fallbacks | 07:48 | |
but that was around 2011 so my memory is very fuzzy, and I might very well be wrong, too | |||
timotimo | so if you do something like .* <?after my whole regex> maybe that works? though perhaps it'll refuse to do a variable-width lookbehind?? | ||
samcv | Xliff, wow sublime sucks. the file looks mostly correct but | 07:49 | |
sublime says Error loading syntax file: Unrecognized plist element | |||
10/10 helpful. doesn't tell me what line or even what key | |||
zgrep | Reversing the string is looking more alluring by the second. :P | 07:50 | |
samcv | yeah just reverse the string haha | ||
07:51
pyrimidine joined
|
|||
samcv | does perl 6 support variable width lookbehinds? | 07:52 | |
07:52
brillenfux joined,
ribasushi joined
|
|||
Xliff | samcv: I've not been impressed with the internals, myself. | 07:52 | |
However I haven't been able to complain about the editor itself. | |||
I'm still trying to get atom to work. | |||
Sucks-but-works will beat Awesome-but-broken everytime. :/ | 07:53 | ||
samcv | why do you need to use a vm? | ||
zgrep | Reversing the string seems like it might work for me... except some parts of my string *are* parsed left to right... :/ | ||
samcv | what's the regex zgrep ? | ||
zgrep | It's not a regex in particular, I'm trying to make a grammar to parse k (kparc.com/k.txt). | 07:54 | |
samcv | ah | ||
07:56
pyrimidine left
|
|||
zgrep | In particular, the crucial line would probably be «grammar: E:E;e|e e:nve|te| t:n|v v:tA|V n:t[E]|(E)|{E}|N». Implementing that in a grammar causes perl 6 to go in an infinite loop, because n:t... t:n... and similar. | 07:57 | |
samcv | infinite? or just really really slow? | ||
:P | |||
zgrep | Infinite, because t tries checking for n, then n tries checking for t, then t tries checking for n, etc. | ||
Reordering things helps... but not by much... | 07:58 | ||
zgrep tries some more | |||
samcv | hmm | ||
can i see the file | |||
i see what you're trying to parse but the rest of the program? | 07:59 | ||
zgrep | Err, lemme try something out and see if that works. | ||
The rest of the program is nonexistent, I'm just trying to get it to parse. :P | |||
samcv | oh | 08:00 | |
what's the full grammar though | 08:01 | ||
zgrep | www.irccloud.com/pastebin/cN0CjWop/parse.p6 | 08:02 | |
samcv | thanks :) | 08:03 | |
08:03
ufobat joined,
jonas1 joined
|
|||
zgrep | Maybe... | 08:07 | |
samcv | well zgrep it looks like it's recursive.. | 08:09 | |
08:09
pierre__ left
|
|||
zgrep | samcv: Yes. | 08:10 | |
08:10
pierre__ joined,
kurahaupo__ joined
|
|||
zgrep tries to remove the left-recursion | 08:10 | ||
samcv | like really recursive | ||
<expression> has <expression> in it | 08:11 | ||
it's gonna keep going | |||
zgrep | No, not that one. | ||
That's right recursive, I think that for the way it's parsed, it's okay. | |||
Assuming <nounish> and <verbish> aren't recursive, it'll be fine. | |||
I think. | |||
And aren't blank. | |||
08:12
abraxxa joined
|
|||
zgrep | But I could probably remove that particular recursion with a few carefully places brackets and a +. | 08:12 | |
s/places/placed/ | |||
samcv | expression is what's causing the problem | 08:14 | |
08:14
pierre__ left
|
|||
samcv | but yeah. make it not infinetely recursive | 08:14 | |
zgrep | expression's causing the problem? I see the left-recursion as being what's causing the problem, in particular through callable with regards to nounish and verbish. | 08:15 | |
samcv | i mean it might help to make two tokens | ||
zgrep | At least, that's what Grammar::Tracer shows repeating a bunch of times. :P | ||
Yeah, I think that'd do it... | 08:16 | ||
08:19
_ramix_ joined
08:20
pierre__ joined
08:23
_ramix_ left
08:25
zakharyas joined
|
|||
Xliff | Aannnnd.... | 08:35 | |
Atom STILL blows up in the VM because I can't get server glx to 1.3 *sigh* | |||
Calling it a night. | |||
08:35
Xliff is now known as Xliff-ZZzzZZ
|
|||
zgrep | samcv: Yeah, that'll do it. To quote some random thing on the internet «Again, the solution is simple. Rewrite at least one of the rules so that the first condition it tries to match is not itself a recursive situation». | 08:40 | |
samcv | yeah you need more tokens or whatever | ||
so you can do what you want to do | |||
zgrep | This seems like a simple enough task that I *could* make it automatically figure out what to do... if I knew perl6 well enough to mangle regexen properly. | 08:42 | |
arnsholt | The rule for recursive descent parsers is: You need to consume at least *one more character* before calling back into a rule you're already inside | 08:43 | |
zgrep | Well, now that I know what I need to do, I'll sleep because I'm not awake enough to actually do it. | ||
Thanks for helping. | 08:44 | ||
arnsholt | Although if you're parsing expressions, implementing an Operator Precedence layer a la HLL::Grammar.EXPR (from NQP) is probably more robust | ||
zgrep takes a look | 08:45 | ||
08:45
pyrimidine joined
|
|||
arnsholt | The code is moderately hairy, but it's grokkable if you know how the algorithm works | 08:45 | |
It's basically a shunting yard algorithm: en.wikipedia.org/wiki/Shunting-yard_algorithm | |||
lizmat clickbaits p6weekly.wordpress.com/2016/12/05/...log-posts/ | 08:46 | ||
zgrep | arnsholt: Oh, that... hmm... | 08:47 | |
DrForr | What's this about grammars? :) | ||
08:48
g4 joined
|
|||
arnsholt is actually working on something blog-posty on how to do it in Perl 6 | 08:48 | ||
Was hoping I'd get it ready in time for the calendar, but doesn't look terribly promising, sadly =( | 08:49 | ||
moritz | lizmat++ | ||
08:49
dakkar joined
08:50
pyrimidine left
|
|||
zgrep | Not sure if precedence would help me with what I'm doing tremendously, because everything has the same precedence in what I'm parsing. It's right to left, pretty much always: 2*2+2 is 8. | 08:52 | |
moritz | same precedence, right associativity | 08:55 | |
08:57
pyrimidine joined
|
|||
arnsholt | OPP can handle associativity too =) | 08:58 | |
09:02
pyrimidine left
|
|||
arnsholt | I'm a bit confused why you want to parse expressions with right-associativity though? That's kind of esoteric | 09:06 | |
09:09
bjz_ joined
09:11
bjz left
09:15
wamba left
|
|||
TEttinger | arnsholt: exponentiation? | 09:18 | |
arnsholt | Well that's one of the few operators that usually are rassoc. But he did say he wanted 2*2+2 to evaluate to 8 | 09:20 | |
Which is less usual =) | |||
DrForr | Well, I know of at least one language (that I recently mentioned at a talk) that uses strictly r-to-l evaluation :) APL :) | 09:21 | |
abraxxa | has anyone checked the segfault I've discovered last week? | 09:22 | |
arnsholt | DrForr: Oh, that's interesting! | ||
Smalltalk is the opposite; all infixes are evaluated from left to right | |||
DrForr | (it could be l-to-r, I don't offhand remember but I kmow that it doesn't use precedence beyond parens.) | 09:23 | |
09:23
TEttinger left
|
|||
DrForr | Indeed. Simplified the parsing, but it makes it hard to integrate with languages with multiple precedence levels. | 09:31 | |
09:42
sufrostico left,
sufrostico joined
|
|||
arnsholt | Yeah, Smalltalk has everything at the same precedence with the same associativity because it's just a different kind of method-call syntax | 09:42 | |
"a + b" being just a send of the message "+" with the argument b to object a | 09:43 | ||
El_Che | DrForr: did you do a perl6 talk at the Lwp? If yes, how was the public? | ||
09:46
AlexDaniel joined
|
|||
DrForr | Two, actually. | 09:47 | |
The first was a workshop, 2 hours long but due to the fact that it was over lunch I lost a few people after break. We started with ... counting... 15 people. | 09:48 | ||
El_Che | sounds nice. What subject? | 09:50 | |
DrForr | 2-hour intro; I got a late start because I'd managed to lose my HDMI -> VGA adapter and had to rush around finding one. | 09:51 | |
El_Che | DrForr: I have one on my laptopbag for fosdem :) | ||
too bad I don't have mac cables | |||
09:51
labster left
|
|||
DrForr | I need to get one when I'm back in the States; I keep forgetting the damn things. | 09:53 | |
El_Che | no convertor in romania? :) | 09:54 | |
09:55
AlexDaniel left,
pyrimidine joined
|
|||
dalek | : a3ad9fa | drforr++ | misc/perl6advent-2016/schedule: Adding Roman Numerals I'll just reprise a blog post because I'm going to be somewhat pressed for time. I *really* want to do Babylonian but that'd mean rewriting the Perl 6 core a bit. The other reason is that the cuneiform numbers aren't exactly common in Unicode fonts, so it won't play as well. But I *will* do it, damnit. |
09:59 | |
09:59
notbenh left
10:00
pyrimidine left
|
|||
DrForr sighs. At least I know what I'm doing tonight. | 10:00 | ||
10:01
bjz joined
10:02
bjz_ left
10:03
grondilu joined
|
|||
arnsholt | DrForr: Maybe Noto has cuneiform numerals? | 10:09 | |
IIRC it does have cuneiform | |||
Indeed it does | 10:10 | ||
DrForr | Well, it's not going to go live until the 10th, so I've got time... | ||
El_Che | brian d foy's book is almost finance. $680 left for 10 days. Nice | 10:11 | |
arnsholt | Nice! | ||
arnsholt is looking forward to looking at early versions | 10:12 | ||
DrForr | I already have :) *very* early :) | ||
arnsholt | Oooh! I'm jealous =) | 10:13 | |
10:14
Technaton joined
|
|||
El_Che | DrForr: is it a translation of the perl 5 (e.g. variable names in examples) or not related at all? | 10:14 | |
DrForr | We're still doing outline work at this stage. (yes, I say 'we'.) | ||
El_Che | DrForr: mmm | 10:15 | |
10:17
notbenh joined
10:20
wamba joined
10:30
lucasb joined
|
|||
lucasb | how can I infinitely cycle an list of values? | 10:32 | |
I have <a b c> and want '( ... )[^10]' to give me back 'a,b,c,a,b,c,a,b,c,a' | |||
what goes into the '...' there ? :) | 10:33 | ||
sorry, it's a lazy question. I keep forgeting how to code the simple things | |||
DrForr | I see what you did there :) | 10:34 | |
lucasb | double loaded lazy? :) | 10:35 | |
DrForr | El_Che: Re: variable names, no, it's not going to be .. well, to be honest, what Will Braswell did with his "Learning RPerl." | ||
10:35
rindolf joined
|
|||
jnthn | m: say (|<a b c> xx *)[^10] | 10:35 | |
camelia | rakudo-moar b67c1e: OUTPUT«(a b c a b c a b c a)» | ||
lucasb | jnthn: exactly! thanks! | ||
I have already asked this same question before and forgot the idiom... | 10:36 | ||
10:38
bjz left
|
|||
El_Che | DrForr: do you use synonimes for "slow" as variable names? | 10:38 | |
10:41
bjz joined
|
|||
DrForr | The only new variable I've used in the last week is $q, actually. | 10:41 | |
That's mpstly because the only module I've been working on in the last week or so has been Perl6::Parser, and it's mostly the remaining bug fixes before release to the ecosystem. | 10:42 | ||
lucasb | .oO( my $q = CGI->new ) |
10:44 | |
DrForr | No, I originally named the parsed tree $p, so I'm doing 'for $p.list -> $q { }' it was just a rational step. | 10:45 | |
El_Che | I tend to avoid single char vars execpt in small loops (e.g. k,v) | 10:46 | |
lucasb | yeah, I like sequenced variable names too | ||
El_Che | but that's not handy in a book with limited space of course | ||
DrForr | The file is over 7000 lines long, I just don't want to retype cr*pt. | ||
This isn't for the book, although it'll probably get mentioned there. | 10:47 | ||
lucasb | m: say (|('__\\|/'.comb Xx 2) xx *)[^27].join | 10:51 | |
camelia | rakudo-moar b67c1e: OUTPUT«____\\||//____\\||//____\\||//____\\||//____\\||//____» | ||
lucasb | I don't know, think of it as a little christmas decoration | 10:52 | |
10:58
pierre__ left,
pierre__ joined
10:59
pmurias joined
|
|||
dalek | : 3731994 | (Zoffix Znet)++ | misc/perl6advent-2016/schedule: Clear out zofspots to make the schedule look more empty |
11:02 | |
11:03
pierre__ left
|
|||
Ulti | is there something a bit like categorize which is for folding an array into a hash? | 11:03 | |
m: say "hi 1 boo 2 fart 3".split(" ").rotor(2).categorize: *[0] | |||
camelia | rakudo-moar b67c1e: OUTPUT«{boo => [(boo 2)], fart => [(fart 3)], hi => [(hi 1)]}» | ||
Ulti | so you dont have the key in the value list and you don't assume there will be many you just overwrite | 11:04 | |
babydrop | m: "hi 1 boo 2 fart 3".words.Hash.say | ||
camelia | rakudo-moar b67c1e: OUTPUT«{boo => 2, fart => 3, hi => 1}» | ||
Ulti | that doesnt do what I want though because there could be a whole list of values | ||
not just one | |||
its more like .rotor(6) | 11:05 | ||
babydrop | I've no idea what you mean then... | 11:06 | |
How does it know which ones are values? | |||
Ulti | its not just key value pairs | ||
its a key with a lot of values as a list | |||
babydrop thats what the categorize does | 11:07 | ||
I tell it just the first value is the key | |||
jnthn | I think the bit I'm missing is how categorize doesn't do what you wish? | 11:10 | |
Hash.push may be on interest though | |||
*of | |||
Oh, categorize leaves the key part in the value | 11:11 | ||
11:11
sena_kun joined
|
|||
jnthn | m: my %h; %h.push("hi 1 boo 2 fart 3".split(" ")); dd %h | 11:12 | |
camelia | rakudo-moar b67c1e: OUTPUT«Hash %h = {:boo("2"), :fart("3"), :hi("1")}» | ||
jnthn | m: my %h; %h.push("hi 1 boo 2 fart 3 hi 4".split(" ")); dd %h | ||
camelia | rakudo-moar b67c1e: OUTPUT«Hash %h = {:boo("2"), :fart("3"), :hi($["1", "4"])}» | ||
jnthn | Is that more like it? | ||
babydrop | m: say "hi 1 2 boo 2 3 fart 3 4".split(" ").rotor(3).categorize(*[0]).Hash.map: { .key => [|.value.[0][1..*]] } | 11:13 | |
camelia | rakudo-moar b67c1e: OUTPUT«(boo => [2 3] fart => [3 4] hi => [1 2])» | ||
psch | "it's more like .rotor(6)" sounds like the input data plainly isn't consistent..? | ||
babydrop | Not sure what happened to my Advent Highlighter URL. Here's anoither copy: gist.github.com/zoffixznet/93f338e...4e4125bbc9 | 11:15 | |
11:16
pyrimidine joined
|
|||
DrForr | Mmhmm, on the FB posting I mentioned the way to fix the URL. | 11:16 | |
babydrop | I don't see any % after the zoffix and it was broken in #perl6 log too | 11:17 | |
11:20
xin0x joined
11:21
pyrimidine left
|
|||
babydrop | .seen [Coke] | 11:29 | |
11:30
pyrimidine joined
|
|||
babydrop | I guess the reign of ownerless yoleaux is over? or what happened? :) | 11:30 | |
11:30
pyrimidine left,
pyrimidine joined
11:35
pyrimidine left
11:36
lukaramu joined
11:37
yoleaux2 joined
|
|||
babydrop | All hail the New Emperor of messaging! | 11:37 | |
.tell timotimo I think it's just zoffix (RE: wordpress account for weekly perms) | 11:38 | ||
yoleaux2 | babydrop: I'll pass your message to timotimo. | ||
babydrop | .tell [Coke] Your post is up soon. I have one already-written stashed away, I could schedule if you need more time. Lemme know | ||
yoleaux2 | babydrop: I'll pass your message to [Coke]. | ||
Ulti | m: say "hi 1 2 3 boo 2 3 4 fart 3 4 5 fart 4 5 6".split(" ").rotor(4).categorize: *[0] | 11:40 | |
camelia | rakudo-moar b67c1e: OUTPUT«{boo => [(boo 2 3 4)], fart => [(fart 3 4 5) (fart 4 5 6)], hi => [(hi 1 2 3)]}» | ||
Ulti | I only want one entry for fart and yeah the key doesn't need to be in the values | ||
(I should have given a better example) | |||
but hash.push is good to know! | |||
babydrop | m: say "hi 1 2 boo 2 3 fart 3 4 boo 5 6".split(" ").rotor(3).categorize(*[0]).Hash.map: { .key => [|.value».[1..*]] } | 11:41 | |
camelia | rakudo-moar b67c1e: OUTPUT«(boo => [(2 3) (5 6)] fart => [(3 4)] hi => [(1 2)])» | ||
Ulti | right but thats doing a lot of work | 11:42 | |
I know I can transform what I ahve | |||
you dont really need the categorize there | |||
its more is there some options for categorize or a method I'm missing | |||
not sure why but the verb fold constantly keeps coming to mind | 11:43 | ||
psch | m: say "hi 1 2 3 boo 2 3 4 fart 3 4 5 fart 4 5 6".split(" ").rotor([1,3]).Hash | ||
camelia | rakudo-moar b67c1e: OUTPUT«{boo => (2 3 4), fart => (4 5 6), hi => (1 2 3)}» | ||
psch | ah, but that still needs the .push | ||
Ulti | aha | ||
that is a cool feature of rotor! | |||
psch | m: my %h; say %h.push("hi 1 2 3 boo 2 3 4 fart 3 4 5 fart 4 5 6".split(" ").rotor([1,3])) | ||
camelia | rakudo-moar b67c1e: OUTPUT«{boo => (2 3 4), fart => [(3 4 5) (4 5 6)], hi => (1 2 3)}» | ||
lucasb | Ulti: the number of values are fixed? for example, for every key, there will always be 2, or 3, etc. values? | ||
Ulti | yup | 11:44 | |
lucasb | in this case, it's always 3, then? | ||
Ulti | its basically just a TSV with an ID I want to index on | ||
lucasb well the constant will be different given what I'm working with | |||
I mean the whole thing is just an intellectual exercise, I can get what I want with some combo I'm just looking for the most elegant.... rotor taking a spec like that is something I wasn't aware of | 11:45 | ||
11:46
wamba left
|
|||
babydrop | It can also backtrack | 11:46 | |
Ulti | rotor++ | ||
11:46
brrt joined
|
|||
Ulti | though it does assume the key is the first column :D | 11:47 | |
babydrop | perl6.party/post/Perl-6-.rotor-The-...nipulation | ||
Ulti | which isnt going to always be true for some reason lots of bioinformatics formats decided the 3rd or worse column is the ID | 11:48 | |
I hate bioinformaticians they just don't think much about anything they're doing and all formats evolve from human readable stuff | |||
its a dream field for Perl 6 | 11:49 | ||
psch | oh | ||
m: <a b c>.rotor(-1) | 11:50 | ||
camelia | rakudo-moar b67c1e: OUTPUT«Cannot have elems < 1, did you mean to specify a Pair with => -1? in block <unit> at <tmp> line 1» | ||
psch | m: <a b c>.rotor(1 => -1) | ||
Ulti | we should probably make m: act more like the REPL with an implied say | ||
camelia | rakudo-moar b67c1e: OUTPUT«(timeout)» | ||
psch | ah, misread one error in my /msg with camelia | ||
m: <a b c>.rotor(1 => -2) | |||
camelia | rakudo-moar b67c1e: OUTPUT«.rotor position is out of range. Is: -1, should be in 0..Inf; (ensure the negative gap is not larger than the length of the sublist) in block <unit> at <tmp> line 1» | ||
psch | but it's there, in the parens, so yeah, nothing to see :) | 11:51 | |
babydrop | Ulti: that's been brought up many times and the answer is no. We need sinkage | ||
Ulti | sure but could just make another command :P | ||
say: | |||
psch | which might behave differently in important cases..? | ||
babydrop | Ulti: well-volunteered! github.com/perl6/evalbot | 11:52 | |
Ulti | happy to | ||
thats easier than me learning NQP and all the ops | |||
psch | maybe just fork whateverable and make sayable6 :P | ||
babydrop | lol | ||
11:52
Ven joined
|
|||
Ven | o/ | 11:52 | |
Ulti | I should get emobot back up and running | ||
pmurias | Ven: \o | 11:53 | |
Ven | masak: do you have any idea for a 6advent blog post? I'm considering continuing my blogpost from last year (on quickcheck/6check), but I'd gladly take another topic..... | ||
babydrop | It should be easy enough. Just add an alias github.com/perl6/evalbot/blob/mast...ot.pl#L101 | 11:54 | |
Ven | pmurias: debug me! :p github.com/perl6/nqp/compare/642f1...a69b24R239 | ||
babydrop | And change %program to -e 'put EVALFILE q|%program|' or something or other | ||
pmurias | Ven: thank you, fixed | 11:56 | |
dalek | : c55d04f | (Zoffix Znet)++ | misc/perl6advent-2016/schedule: Toss core hacking post This is a poor place for it and stuff for it ain't ready. |
11:57 | |
Technaton | Hello, world! :) I am still on that A*-inspired dive into p6. Now, I am trying to make sense of the different list and hash types that are new in p6. What is, e.g., the difference between a MixHash and a simple hash that maps objects to real numbers? Or, what is faster: Finding the element with the lowest weight in a MixHash or finding and removing a particular item from an array? Hm. I am not even sure | 11:59 | |
how to do the latter. :) | |||
moritz | with a loop to find the index | ||
Technaton | Could somebody please point me at a piece of documentation? I haven't found anything wrt to finding and removing an element from any position in the array. | ||
moritz | and then call .splice to remove it | ||
babydrop | Technaton: if you wait 14 hours there'll be a detailed Advent Post about them :) | ||
Technaton | babydrop: Woohoo! :) | 12:00 | |
moritz | but if you want to select by weight, a MixHash isn't optimized for that either | ||
it's optimized for access by key | |||
psch | m: my @a = ^6; say @a[@a.first(3, :k)]:delete; say @a | ||
camelia | rakudo-moar b67c1e: OUTPUT«3[0 1 2 (Any) 4 5]» | ||
Technaton | Is there something like an ordered set in p6? | ||
babydrop | As for the latter you want splice: docs.perl6.org/routine/splice | ||
moritz | what you seem to want is an ordered queue or something like | ||
and afaict there's no built-in data type for that in Perl 6 | 12:01 | ||
psch | m: my @a = < a b c >; @a[@a.first('a', :k)]:delete; say @a.perl | ||
camelia | rakudo-moar b67c1e: OUTPUT«[Any, "b", "c"]» | ||
moritz | or a heap, maybe | ||
psch | but yes, that's just unsetting the container, not removing it | ||
if you want e.g. ['b', 'c'] as the result in the latter example, splice is the right thing | |||
arnsholt | For A* the key data structure is a heap, IIRC. I don't think our standard library has one of those | 12:02 | |
OTOH, implementing a binary min-heap should be pretty straightforward | |||
Technaton | Yeah, a heap would be very fitting for A*. I am happy to have chosen that algorithm, because it offers quite a number of points to deep-dive into p6. :) | 12:03 | |
Okay, thanks for the hints. | 12:04 | ||
Technaton whistles and begins to implement a binary heap in p6. :) | 12:05 | ||
Oh no, there's already one in the modules directory! :( | 12:06 | ||
Ulti | always room to take a look and see if you can make a nicer one | 12:07 | |
moritz | using other's code: where's the fun in that? | ||
12:07
wamba joined
|
|||
Technaton | moritz: Yeah, that's true, and probably the funniest way of approaching any subject. But whenever I start learning something with that attitude, I never arrive at something finished, because its clear from the beginning that I do it only to learn things, so I stop when I learnt what I wanted to learn. This time, I am set to contribute Algorithm::AStar to the p6 modules directory, so I need more | 12:09 | |
discipline. And adding my own MinMaxHeap implementation is not really good style then. :) | |||
12:11
brillenfux left
|
|||
moritz | Technaton: agreed | 12:12 | |
12:24
brillenfux joined
|
|||
kalkin- | so I patched src/core/REPL.pm to support history file with Readline, but I don't know how to test it, because I don't know how to install with rakudobrew rakudo from custom source location | 12:26 | |
psch | kalkin-: just install it with Configure.pl? | ||
kalkin- | psch: won't it mess up everything? | ||
psch | kalkin-: if you don't supply an explicit prefix it will install in $rakudo-repo/install | 12:27 | |
kalkin-: i don't know what rakudobrew does, but if you have your repo somewhere distinct from rakudobrew Configure.pl shouldn't mess anything up | |||
kalkin- | psch: but then I need to build zef which will use the custom rakudo-repo to pull in Readline | ||
psch | kalkin-: right, so you just adjust your PATH to point at the custom rakudo before rakudobrew rakudo vOv | 12:28 | |
kalkin- | yes this makes sense | ||
will try that, thanks | |||
12:32
rindolf left,
pierre__ joined
12:35
user9 left
12:38
rindolf joined
12:39
canopus left
12:40
amalia_ left
12:41
amalia__ joined
12:42
dwarring left
12:45
canopus joined
12:51
noganex joined
|
|||
pmurias | is copy & pasting stuff from the synopsis into the docs.perl6.org ok? | 12:51 | |
psch | i'd say so, if it still works as described | ||
i mean, much of what's in the synopses is in roast too | |||
lucasb | how do I use these bots to try a snippet in rakudo from, say, middle of 2015 ? | 12:52 | |
psch | committable6: help | 12:53 | |
committable6 | psch, Like this: committable6: f583f22,HEAD say ‘hello’; say ‘world’ | ||
psch | committable6: 2015.06 say "hello" | ||
committable6 | psch, ¦«2015.06»: hello | ||
lucasb | psch: thank you! | ||
12:53
noganex_ left
|
|||
lucasb | hmm, committable6 doesn't like private conversations. I'll have to use it in public | 12:54 | |
psch | pmurias: fwiw, both perl6/doc and perl6/specs are (c) TPF under the artistic liccense 2.0 | ||
-c | |||
12:56
prammer joined
|
|||
lucasb | committable6: 2015.09 say (0..9).rotor((3 => -1) xx *) | 12:57 | |
committable6 | lucasb, ¦«2015.09»: «timed out after 10 seconds, output»: «exit signal = SIGHUP (1)» | ||
12:58
user9 joined
12:59
bjz left,
bjz_ joined
|
|||
lucasb | m: say (0..9).rotor(3 xx 100) | 12:59 | |
camelia | rakudo-moar b67c1e: OUTPUT«((0 1 2) (3 4 5) (6 7 8))» | ||
12:59
eliasr joined
|
|||
lucasb | m: say (0..9).rotor(3 xx *) | 12:59 | |
camelia | rakudo-moar b67c1e: OUTPUT«(timeout)» | 13:00 | |
lucasb | anyway, I thought I had some memory of rotor working with a lazy infinity list | ||
but I may be mistaken | 13:01 | ||
moritz | m: say say (0..9).rotor(3 xx *).head(5) | ||
lucasb: it might work with an infinite list as base: | |||
m: say (0..9).rotor(3) | |||
camelia | rakudo-moar b67c1e: OUTPUT«(timeout)» | ||
rakudo-moar b67c1e: OUTPUT«((0 1 2) (3 4 5) (6 7 8))» | |||
moritz | m: say (0..*).rotor(3 => -1).head(5) | 13:02 | |
camelia | rakudo-moar b67c1e: OUTPUT«((0 1 2) (2 3 4) (4 5 6) (6 7 8) (8 9 10))» | ||
lucasb | moritz: right. I meant specifically as argument list | ||
babydrop | lucasb: you can use committable6 in #zofbot | ||
lucasb | babydrop: thanks, I might use it there | 13:03 | |
dalek | c: 9de42a4 | (Pawel Murias)++ | doc/Language/operators.pod6: Borrow parts of the description of ^^ from the synopsis to describe how it really behaves when all the arguments are false. |
13:06 | |
lucasb | nevermind, my memory is at fault. I think .rotor never worked with lazy infinity lists in the argument list | ||
pmurias | I'm not a technical writer so I appologise if I did anything incorrectly with my doc fix ;) | 13:07 | |
lucasb | but it would be a reasonable feature, no? dunno if there's something that prevents it, technically | ||
moritz | pmurias: none of us are, to the best of my knowledge :-) | ||
babydrop | .ask AlexDaniel why not finish off your ticket and submit tests too? rt.perl.org/Ticket/Display.html?id...et-history | 13:08 | |
yoleaux2 | babydrop: I'll pass your message to AlexDaniel. | ||
babydrop | I do notice more spam in RT since the Great Mobile URL Reveal | ||
DrForr | That's Google's reweighting towards mobile devices? | 13:09 | |
pmurias | moritz: when are the docs regenerated? | 13:10 | |
moritz | pmurias: every five minutes, unless there's already a job running, iirc | 13:12 | |
docs.perl6.org/build-log/?C=M;O=D has the logs | 13:13 | ||
currently takes about 6 minutes run time, so in ~15min the HTML should be up-to-date | |||
pmurias | .oO(pointing the user to a doc page explaining what the thing that the compiler is expecting would be awesome) |
13:15 | |
13:18
pyrimidine joined
|
|||
babydrop | .oO(we already have a mechanism for custom exception output, so that stuff can be done in module space...) |
13:19 | |
13:19
kurahaupo__ left
|
|||
babydrop | RAKUDO_EXCEPTIONS_HANDLER=WithDocLinks | 13:19 | |
RAKUDO_EXCEPTIONS_HANDLER=WithDocLinks::Chinese | 13:20 | ||
??? | |||
Profit! | |||
pmurias | afk& | ||
13:22
espadrine joined
|
|||
babydrop | What would you call the `else` in if () else {}? | 13:23 | |
What noun is it? | |||
If you wanted to tell someone "wrong $noun `else`...." | |||
psch | keyword? | ||
babydrop | good nuf. thnaks | ||
DrForr | token? Though 'keyword' is probably better. | ||
jnthn | "unexpected" may also be clearer than "wrong" | 13:24 | |
yoleaux2 | 5 Dec 2016 22:47Z <japhb> jnthn: You mentioned that concurrency was going to remain on your brain for at least the first half of 2017. Do you have any idea how much remains in the "make it work reliably" category, and when you'll be able to work on "make it fast/scalable/efficient"? I'm starting to write code that seems to be hitting non-linearities in the scheduler. | ||
5 Dec 2016 22:49Z <japhb> jnthn: Also, is it possible to reserve a single real thread for the main app thread? I've got some high-concurrency code where the main thread (which actually does the I/O in this case) gets very janky, and I'm guessing that user-visible task is getting starved for CPU resources by lots of background tasks. | |||
jnthn | o.O | 13:25 | |
dalek | c/consistent-return-types: 1308514 | Altai-man++ | doc/Type/ (124 files): Big signature return type unification. This commit affects all signatures that exist in the type documentation: it replaces "returns " occurences with "-->" form. See github.com/perl6/doc/issues/1024#i...-264660360 for explanations. |
||
c/consistent-return-types: f8448f2 | Altai-man++ | doc/Type/ (2 files): Two typo fixes |
|||
c/consistent-return-types: 88c2f5f | Altai-man++ | t/return-type.t: Test for return type in signatures |
|||
babydrop | weee, bot spam \o/ | ||
13:26
xin0x left
|
|||
lucasb | 'returns' is discouraged? | 13:26 | |
sena_kun | lucasb, see the original discussion. :) | ||
lucasb, in general: no. | |||
lucasb | sena_kun: oh, I missed the link, I'll follow it. thanks | 13:27 | |
babydrop | lucasb: there are plans to toss it in 6.d | ||
m: say 'foobar' ~~ / 'foo' [<!before $<foo>='bar'> || <&die: ~$<foo>>]/; | |||
camelia | rakudo-moar 0ee6bc: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Cursor<66359552> in block <unit> at <tmp> line 1» | ||
jnthn | .tell japhb The current scheduler is decidedly over-simplistic; it's not far off being "the simplest thing that could possibly work". Scalability is also a little bit limited by `await` not yet being non-blocking, which in turn makes us need a lot more real threads than we should. | ||
yoleaux2 | jnthn: I'll pass your message to japhb. | ||
babydrop | Can't capture a lookahead? | ||
psch | where "toss" means "deprecate", fwiw | ||
babydrop | Oh yeah, sorry | 13:28 | |
jnthn | ...deprecate "returns"? o.O | ||
I...uh...might be arguing against that. :P | |||
psch | jnthn: TimToady apparently wanted to do so for 6.c already | ||
13:28
xin0x joined
|
|||
psch | jnthn: in part because it can only parse types | 13:28 | |
jnthn | There's other forms for when you want more than that, no? :) | 13:29 | |
sena_kun | jnthn, it is not deprecated(yet), but we(I and AlexDaniel at least) just plan to change the default signature style in the docs, since they are non-consistent. | ||
I'll open the discussion now. | |||
psch | well, the only other form that can do more than parse types is --> in the signature | ||
another argument was "if it's in the signature it's clearly visible as part of the contract with the caller" | |||
mind, i'm just repeating the arguments as i understood them :) | 13:30 | ||
jnthn | sena_kun: Yes, documentation consistency is certainly good; I've no problem with the docs settling on one form. | ||
psch | the actual discussion was a bit more involved iirc, but that's the two main things i took away from it | ||
jnthn | "returns" just reads very nicely :) | ||
.tell japhb Also, we never actually put stuff on the main application thread; it's not part of the pooling mechanism. Any jank you're seeing is probably due to plain old contention with other threads to get scheduled, or possibly GC stop-the-world leading to long pauses (though profiles I've looked at suggested the world-stopping ain't all that costly). | 13:34 | ||
yoleaux2 | jnthn: I'll pass your message to japhb. | ||
jnthn | .tell japhb Also be clear, when I say "contention with other threads to get scheduled", these are real kernel threads, so it's the OS scheduler, not something in Rakudo. Rakudo's job is more to pick a smarter number of such threads to do CPU-bound stuff. | 13:35 | |
yoleaux2 | jnthn: I'll pass your message to japhb. | ||
13:35
travis-ci joined
|
|||
travis-ci | Doc build failed. Altai-man 'Test for return type in signatures' | 13:35 | |
travis-ci.org/perl6/doc/builds/181651969 github.com/perl6/doc/compare/138cd...c2f5fcfdaf | |||
13:35
travis-ci left
|
|||
sena_kun | github.com/perl6/doc/pull/1035 - opinions/agrees/disagrees are very welcome. | 13:36 | |
babydrop | sena_kun: my two cents is a lot of those aren't accurate | 13:37 | |
m: say &sum.returns | |||
camelia | rakudo-moar 0ee6bc: OUTPUT«(Mu)» | ||
babydrop | Docs say it's Numeric:D | ||
And what it really returns are Numeric and Junctions | |||
sena_kun | babydrop, didn't check the types yet, it's another big(I mean, BIG) issue to solve. | 13:38 | |
babydrop | :) | ||
psch | m: say ([1,2,3].unshift).WHAT | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«(Array)» | ||
sena_kun | We don't have return types everywhere and in some places they are broken. :/ | 13:39 | |
But it is still a different issue. | |||
psch | broken how? | ||
sena_kun | psch, s/broken/wrong/ | ||
psch | wrt "should everything in CORE nominally declare its return type"... well, patch rakudo, profile it, see if we can take that | 13:40 | |
babydrop | japhb: :o you didn't report the unless thing! | ||
oh wait | |||
lucasb: :o you didn't report the unless thing! | |||
psch | as for "should we doc *expected* return types" i'm inclined to say "no" | ||
as in, if it doesn't show um in &funcname.returns, it shouldn't be in the docs | 13:41 | ||
s/um/up/ | |||
moritz | I take the opposite stance | ||
if we know what it returns, document it | |||
even if it's not enforced by the compiler | |||
psch | mind, roast is most likely not very vocal about that, so maybe we want to add that to roast iff we can have it like that in rakudo | ||
babydrop | psch: for patch rakudo, I already can say it's a "no". Most things return either something *or a Junction* and it's that Junction will render most return types inaccurate | ||
moritz | because it helps the reader to know what type is returned | ||
babydrop | In fact, that's why sum was broken at one point, it thought it could only handle Numerics | 13:42 | |
psch | right, let me backpedal in so far that documenting it with actual syntax seems weird to me if that's not what the compiler says | ||
moritz | we also don't always show the same combinations of signatures in case of multis | 13:43 | |
SmokeMachine____ | hi there! I saw here (github.com/perl6/mu/blob/master/mi.../schedule) that theres a few day without people to write... | ||
psch | 'cause if i see 'sub foo(--> BarType) { }' and the compiler says '&foo.returns == Mu' i'm confused | ||
moritz | sometimes there are more candidates for optimization that we don't show in the docs | ||
SmokeMachine____: yes. Want to claim a spot? | 13:44 | ||
SmokeMachine____ | I'd like to know if I could try to write something for any of these days... | ||
psch | moritz: right, which is why i'd say "if we can roast it we can doc it". i've no idea how Junction plays in there though | ||
babydrop | SmokeMachine____: yes | ||
psch | m: sub f(--> Int) { (1|2) }; f() | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«Type check failed for return value; expected Int but got Junction (any(1, 2)) in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
psch | j: sub f(--> Int) { (1|2) }; f() | ||
babydrop | SmokeMachine____: submit a PR (or commit directly), claiming a day | ||
camelia | rakudo-jvm 8ca367: OUTPUT«Type check failed for return value; expected Int but got Junction (any(1, 2)) in method throw at gen/jvm/CORE.setting line 27529 in sub at gen/jvm/CORE.setting line 29880 in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
moritz | SmokeMachine____: and /msg me your email address so that I can give you write access to the blog | 13:45 | |
SmokeMachine____ | My english isn't very good, so I'd need someone to review it.. | ||
babydrop | SmokeMachine____: that's fine. We can help out :) | ||
psch | committable6: 2015.11 sub f(--> Int) { (1|2) }; f() | ||
committable6 | psch, ¦«2015.11»: Type check failed for return value; expected Int but got Junction in sub f at /tmp/uqtvHCSLtS:1 in block <unit> at /tmp/uqtvHCSLtS:1 «exit code = 1» | ||
psch | well | ||
if that never worked... | |||
jnthn | It's not meant to work | ||
moritz | m: sub f($x) { 1 + $x); say f(1|2) | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Missing blockat <tmp>:1------> 3sub f($x) { 1 + $x7⏏5); say f(1|2) expecting any of: statement end statement modifier statement modifier loop» | ||
moritz | m: sub f(Int $x --> Int) { 1 + $x}; say f(1|2) | 13:46 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«any(2, 3)» | ||
jnthn | m: sub f($x --> Int) { 1 + $x }; say f(1|2) | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«any(2, 3)» | ||
moritz | the autothreader does the extra work | ||
babydrop | dammit | ||
I was wrong :o | |||
jnthn | And that works because autothreading happens "outside", if you like | ||
psch | yeah, before binding to the sig | ||
moritz | babydrop: you might not be entirely wrong, because if sum takes a slurpy, that might be handled differently | ||
psch | or, well, during maybe | ||
jnthn | Well, it's a failover during binding | ||
babydrop | m: sub f(@x --> Int) { [+] @x }; say f(1|2, 5, 3|5) | 13:47 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«Too many positionals passed; expected 1 argument but got 3 in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
babydrop | m: sub f(*@x --> Int) { [+] @x }; say f(1|2, 5, 3|5) | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«Type check failed for return value; expected Int but got Junction (any(any(9, 11), any(1...) in sub f at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
babydrop | oh *phew* :) | ||
psch | m: say [+] (1|2) | ||
camelia | rakudo-moar 0ee6bc: OUTPUT«any(1, 2)» | ||
SmokeMachine____ | ok! so Im doing that! :) (I'm a little nervous...) | ||
babydrop | SmokeMachine____: I think the trick is to imagine your audience naked... | 13:48 | |
13:48
g4 left
|
|||
SmokeMachine____ | :) | 13:48 | |
moritz | babydrop: somehow I think that'd totally freak me out | ||
DrForr | With *this* crowd?... | ||
babydrop | :D | ||
13:51
giraffe left
13:52
abraxxa1 joined,
abraxxa left
|
|||
dalek | : 4fa19f2 | (Fernando Correa de Oliveira)++ | misc/perl6advent-2016/schedule: Adding me on day 22 |
13:53 | |
: fdcae64 | (Zoffix Znet)++ | misc/perl6advent-2016/schedule: Merge pull request #22 from FCO/master Adding me on day 22 |
|||
babydrop | m: say 'foobar' ~~ / 'foo' [<!before 'bar'> || $<foo>='bar' <&die: ~$<foo>>]/; | 13:56 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Cursor<43474064> in block <unit> at <tmp> line 1» | ||
babydrop | hm, how come it doesn't capture the stuff? | ||
The actual rule being this: gist.github.com/zoffixznet/7e368cb...3ebaa6cdba and I don't think it's matching, 'cause I'm getting weird compilation errors | 13:57 | ||
oh | |||
13:58
giraffe joined
|
|||
babydrop | m: say 'foobar' ~~ / 'foo' [<!before 'bar'> || $<foo>='bar' {} <&die: ~$<foo>>]/; | 13:58 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«Cursor<63601808>bar in block <unit> at <tmp> line 1» | ||
babydrop | it's that bug | ||
14:02
grondilu left,
sufrosti1o left,
sufrostico left
|
|||
babydrop | m: say 36754/37000 | 14:03 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«0.993351» | ||
babydrop | m: say abs 36754-37000 | 14:04 | |
camelia | rakudo-moar 0ee6bc: OUTPUT«246» | ||
babydrop | $246 until LP6 is funded \o/ | ||
14:04
sufrostico joined,
sufrosti1o joined
|
|||
Ven | ah, thanks for the reminder. | 14:04 | |
14:06
prammer left
|
|||
psch | babydrop: what's bug there? | 14:07 | |
+a | |||
babydrop | the $/ not updated with captures unless you stick a {} | ||
psch | oh, alright | ||
jnthn | It's quite costly to update, so will want a bit of careful analysis | 14:08 | |
babydrop | but I see another bug that I kinda chose to ignore. If I put a space between 'unless' and <.kok>, compilation fails saying unless interpreted as listop: gist.github.com/zoffixznet/fcceeda...9e65607aec | ||
It really doesn't like the <.kok>s... | 14:09 | ||
babydrop snickers | |||
psch | rule has sigspace..? | 14:10 | |
babydrop | oohh.. thanks. Makes sense now :D | ||
14:20
prammer joined
14:23
Skarsnik joined
|
|||
Skarsnik | Hello | 14:24 | |
babydrop | Skarsnik: long time | ||
.match() setting $/ ain't a bug, right? We made it that way on purpose. | |||
Skarsnik | I wanted to know if someone made a script/tool to test code against different version of rakudo? | 14:25 | |
14:26
pierre__ left
14:27
pierre__ joined,
xin0x left
|
|||
psch | committable6: help | 14:27 | |
committable6 | psch, Like this: committable6: f583f22,HEAD say ‘hello’; say ‘world’ | ||
psch | Skarsnik: ^^^ that bot does that | ||
Skarsnik | Yeah, but it's more code that use 'lot' of modules | 14:28 | |
I am just curious of testing the speed gain since january of some of my stuff | 14:29 | ||
psch | in that case you probably have to build all point releases on your own | ||
or, well, rely on someone that has those lying around anyway | |||
14:30
Technaton left
14:31
pierre__ left
14:32
sena_kun left
14:37
kurahaupo__ joined
14:40
sufrosti1o left,
sufrostico left,
nicq20 joined,
cdg joined
14:41
eveith joined,
eveith is now known as Technaton
14:42
sufrostico joined,
sufrosti1o joined,
wamba left
|
|||
[Coke] sees that zoffix has gone from 4 posts to 2 on the schedule. nice. | 14:44 | ||
yoleaux2 | 11:38Z <babydrop> [Coke]: Your post is up soon. I have one already-written stashed away, I could schedule if you need more time. Lemme know | ||
14:45
pyrimidine left
|
|||
[Coke] | there are now 2-4 gaps on the advent schedule. the first gap is in 2-3 days. | 14:45 | |
babydrop | For p6doc experts: stackoverflow.com/questions/4099115...-like-repo | 14:46 | |
FWIW, those types aren't documented | 14:47 | ||
14:49
kurahaupo_ joined,
kyclark joined
14:50
kurahaupo__ left
|
|||
babydrop | grrr | 14:51 | |
[Coke] | (document return types) remember, it's roast, not the compiler that determines what return types are part of the spec. | ||
babydrop | no idea what my SO account it | ||
Someone tell brian $*REPO is not an Installation. | |||
m: say $*REPO.^name | 14:52 | ||
camelia | rakudo-moar 16fbd7: OUTPUT«CompUnit::Repository::Installation» | ||
babydrop | He probably is using .WHAT to view names | ||
[Coke] | me is bummed that all the last minute additions did NOT take the spots they were suggested to take. :| | ||
babydrop | Oh apparently my SO is linked to FB | 14:53 | |
14:53
lighttrr joined
|
|||
ufobat | nine, did you have slides for your talk at the lpw? are they going to be uploaded? | 14:54 | |
14:55
sufrosti1o left
|
|||
nine | ufobat: yes and yes. Thanks for reminding me | 14:55 | |
babydrop | [Coke]: kinda makes sense, since by taking those spots the people would have to churn out the article in like 30 hours | ||
14:55
sufrostico left
|
|||
ufobat | my pleasure :D | 14:55 | |
[Coke] | babydrop: kind of like I am, yes. :| | ||
it beats the alternative of missing a day or you or I writing more. | 14:56 | ||
14:56
seatek left
|
|||
[Coke] | I figure I can still come up with something in time for the 8th. | 14:56 | |
nine | ufobat: online now: niner.name/talks/Web%20development%...0Perl%206/ | ||
14:56
sufrostico joined
|
|||
nine | ufobat: most importantly, the examples directory contains much more example code than I showed. | 14:57 | |
ufobat | ty :) | ||
babydrop | huggable: mu | ||
huggable | babydrop, nothing found | ||
babydrop | huggable: advent | ||
huggable | babydrop, github.com/perl6/mu/blob/master/mi...6/schedule | ||
14:57
sufrosti1o joined
|
|||
[Coke] | DrForr, brrt, RabidGravy, cygx, zostay, ugexe, jnthn, nige, tadzik, nkh, SmokeMachine____, AlexDaniel: if anyone can move up their advent post to fill the empty slots on the 9th and the 11th, that would probably be helpful. | 14:57 | |
lucasb | babydrop++ fixing the 'unless' thing | ||
babydrop: looks like a very complex patch. I wish could be as knowledgeable :) | 14:58 | ||
perlpilot | yay! Learning Perl 6 is fully funded! | ||
El_Che | \o/ | ||
lucasb | $37,090 | 14:59 | |
pledged of $37,000 goal | |||
DrForr | Indeed. At least one person on FB seems to be unconvinced, but .. someone always *will* be. | ||
lucasb | give my $90 back! | ||
just kidding | 15:00 | ||
DrForr | I'll move mine up. I've got to write it tonight anyway. | ||
lucasb | I hope the indentation style used in the book will be something sane :) | ||
moritz | if somebody has a good idea for me, I'd be willing to write a second advent post | 15:01 | |
if not, I might reuse the tictactoe example I used in my training course | |||
dalek | : da0e41f | drforr++ | misc/perl6advent-2016/schedule: Moving mine up, I've got to write it before I leave anyway. |
||
El_Che | I hope the book will have syntax highlighting in the safari digital version | ||
DrForr | As the topic says. | ||
moritz | DrForr++ | 15:02 | |
ufobat | nine, "doesn't have an any('get', 'post')" - i added ANY to my last feature branch ;-) | ||
[Coke] | DrForr: sure you don't want to take #8 ? ;) | 15:03 | |
DrForr | The module isolates the real hackery, I'm just planning to show where the numbers are in the grammar and how to play with that. | ||
[Coke] | and thanks for moving it up one, that helps. | ||
nine | ufobat: good to know :) | ||
DrForr | Well, what I've seen are just 3-4 paragraphs, sure. One moment. | 15:04 | |
nine | ufobat: maybe I get bored enough to fix the glaring performance issue. I realize that I didn't even use that argument in the talk... | 15:05 | |
ufobat | ha! i actually didnt know that it is that bad! :/ | ||
dalek | : 5898cce | drforr++ | misc/perl6advent-2016/schedule: Tighten up release schedule |
15:06 | |
15:06
Lucas_One left
|
|||
DrForr | Done. | 15:06 | |
nine | ufobat: yeah, though all it's missing is probably a cache for the compiled templates. | ||
15:07
brillenfux left
|
|||
[Coke] | DrForr: WOOT | 15:07 | |
ufobat | if so its not that hard to implement, i guess | ||
[Coke] luxuriates in his extra 24 hours! | |||
DrForr | I may actually change the title as I've got another idea I may do... | 15:08 | |
15:08
lizmat left,
Lucas_One joined
|
|||
[Coke] ponders finishing a poker module for the advent calendar; ponders a retrospective that would address why we have parrot and pugs in our history and why that was a good thing, and finally pondering picking some random perl6 feature that doesn't already have an advent article on it. | 15:09 | ||
DrForr | I was thinking about snagging an operator from APL and showing both the syntax for custom operators and implementing it, I actually feel a bit better about that than having to point people to the bit of hackery involved in creating roles. | 15:11 | |
15:11
FROGGS joined
|
|||
DrForr | I know we have .comb and .permute operators, is there an operator to do C(2,5) and so on? (take 2 from a group of 5 elements) | 15:12 | |
15:13
CIAvash left
|
|||
moritz | .combinations | 15:13 | |
m: say (^5).combinations(2) | |||
camelia | rakudo-moar 16fbd7: OUTPUT«((0 1) (0 2) (0 3) (0 4) (1 2) (1 3) (1 4) (2 3) (2 4) (3 4))» | ||
DrForr | sorry, that's not quite what I mean. I meant generate the number of combinations, rather than a list of the combinations. | ||
15:14
prammer left
|
|||
lucasb | m: say +(^5).combinations(2) | 15:14 | |
camelia | rakudo-moar 16fbd7: OUTPUT«10» | ||
lucasb | :D | ||
[Coke] | that's kind of wasteful, but I don't think there's one that just does the math. | 15:15 | |
15:15
Ven left
|
|||
lucasb | combinations has a count-only method | 15:15 | |
DrForr | Granted, but I was thinking of a use that didn't create a potentially-huge list. | ||
lucasb | so... it *does* just the math, no? | ||
github.com/rakudo/rakudo/blob/nom/...ist.pm#L63 | |||
15:16
jonas1 left
|
|||
DrForr | If there's a count-only method that's fine, and it'll do what I'm after. | 15:16 | |
[Coke] | count-only on a non-lazy list has already done the math | ||
s/math/work/ | |||
15:16
khw joined
|
|||
babydrop | m: say (^500000).combinations(2) | 15:16 | |
camelia | rakudo-moar 16fbd7: OUTPUT«((0 1) (0 2) (0 3) (0 4) (0 5) (0 6) (0 7) (0 8) (0 9) (0 10) (0 11) (0 12) (0 13) (0 14) (0 15) (0 16) (0 17) (0 18) (0 19) (0 20) (0 21) (0 22) (0 23) (0 24) (0 25) (0 26) (0 27) (0 28) (0 29) (0 30) (0 31) (0 32) (0 33) (0 34) (0 35) (0 36) (0 37) (0 38…» | ||
babydrop | m: say (^500000).combinations(2).elems | ||
camelia | rakudo-moar 16fbd7: OUTPUT«(timeout)» | ||
[Coke] | oh. huh. I see what the code is implying, but have no idea how that works. nifty. :) | 15:17 | |
babydrop | yes, it just does the math | ||
[Coke] | lucasb++ | ||
babydrop | I think it was the very first PR I sent to Rakudo (it was rejected for a better implementation, but still) :) | ||
15:18
prammer joined
|
|||
[Coke] | ah, I see now. nifty. | 15:18 | |
15:18
wamba joined
|
|||
lucasb | m: say +combinations(10, 2) | 15:18 | |
camelia | rakudo-moar 16fbd7: OUTPUT«45» | ||
DrForr | It's only the binomial distribution, so it's not a *hard* problem. I was just thinking that it's a simple way to generate Pascal's triangle, which is a good math'y thing. | ||
15:18
chansen_ joined
|
|||
[Coke] | also, RabidGravy++ for having 2 posts on the schedule. | 15:19 | |
babydrop | m: my $x = eager combinations(1000, 2); say now - INIT now | 15:20 | |
camelia | rakudo-moar 16fbd7: OUTPUT«1.0414664» | ||
babydrop | m: my $x = eager combinations(1000, 2).elems; say now - INIT now | ||
camelia | rakudo-moar 16fbd7: OUTPUT«0.0101913» | ||
babydrop | m: say permutations(3000) | ||
camelia | rakudo-moar 16fbd7: OUTPUT«Cowardly refusing to permutate more than 20 elements, tried 3000 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
babydrop | wat? :) | ||
15:21
jonas1 joined
|
|||
babydrop | oh, it becomes a huge number OK :) | 15:21 | |
DrForr | Uh, yeah, 3000! is ... non-trivial. | ||
babydrop | m: my $x = eager permutations(9); say now - INIT now | 15:22 | |
camelia | rakudo-moar 16fbd7: OUTPUT«1.13294261» | ||
babydrop | m: my $x = permutations(9).elems; say now - INIT now | ||
camelia | rakudo-moar 16fbd7: OUTPUT«0.03242009» | ||
lucasb | the number has more digits than exists atoms in the universe and bugs in perl 6 | ||
babydrop | That's what I wanted to show that .permutations also has a shortcut for count only | ||
lucasb: heeeey... | 15:23 | ||
lucasb | babydrop: lol, kidding :) | ||
DrForr | Well, anything >10^80 meets that criterion :) Doesn't take much. | 15:24 | |
(atoms in the universe, that is. Bugs in perl 6 ... That may require tetration or beyond. | 15:26 | ||
s/$/) | |||
mspo | can dc(1) do it? | ||
babydrop | New rule: you can't make fun of Perl 6 bugs unless you've fixed at least one during the week the joke is made :) | 15:27 | |
lucasb: DrForr so that means you owe a fix each. | |||
babydrop coughs | 15:28 | ||
I guess I killed the party? :) | |||
Fine fine... | |||
babydrop leaves to do stuff | |||
DrForr | I'm in the air for most of the rest of the week. | ||
psch .oO( ping perl6.party ) | |||
15:32
lighttrr left,
CIAvash joined
|
|||
babydrop | hmmm | 15:32 | |
m: say +permutations(30) | |||
camelia | rakudo-moar 16fbd7: OUTPUT«Cowardly refusing to permutate more than 20 elements, tried 30 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | 15:33 | |
babydrop | m: say permutations(30).elems | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | m: say Failure.new.elems | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | that's sucky | ||
FROGGS | that should throw | ||
babydrop | Cool. Will make it :) | 15:34 | |
15:34
wamba left
15:35
SourceBaby joined,
Undercover joined,
ChanServ sets mode: +v Undercover
15:36
buggable joined
15:47
prammer left,
ggherdov joined
15:50
prammer joined
15:52
pyrimidine joined
15:53
pnu_ left
15:54
pnu_ joined
15:55
mindos joined
|
|||
babydrop | FROGGS: should it throw-throw or just propagate the failure? | 15:56 | |
15:56
cibs left
|
|||
babydrop | and by "it" I mean .list on Failure | 15:56 | |
15:56
pyrimidine left
|
|||
babydrop | m: say Failure.new.list | 15:56 | |
camelia | rakudo-moar 16fbd7: OUTPUT«FailedActually thrown at: in block <unit> at <tmp> line 1» | ||
15:56
sufrostico left
|
|||
babydrop | umm | 15:57 | |
15:57
cibs joined
|
|||
babydrop retraces whatever is causing the infiniloop in the fix | 15:57 | ||
15:57
sufrostico joined
15:59
lighttrr joined
16:00
lighttrr left
|
|||
babydrop | throw-throw, I guess, The alternative is to add a whole ton of methods. Basically anything that uses self.list in Any: github.com/rakudo/rakudo/blob/16fb...Any.pm#L53 | 16:01 | |
16:01
lighttrr joined
16:02
Charlie joined
16:04
cdg left
|
|||
babydrop | What's the difference between these two? one uses `self`, while the other binds to SELF and uses that? Why not self in both? github.com/rakudo/rakudo/blob/16fb...pm#L52-L53 | 16:04 | |
16:05
lighttrr left
|
|||
moritz | babydrop: I think the one with \ doesn't containerize | 16:05 | |
or scalarize, or whatever you call it | 16:06 | ||
16:06
lighttrr joined
|
|||
psch | \ is equivalent to 'is raw' | 16:06 | |
as parameter sigil | |||
the implicit binding to self is "normal" afaik, i.e. you get the same container-treatment that a $-sigil param gets | 16:07 | ||
which, i think, is ro-rebinding | |||
babydrop | k, I think I get it :) | 16:08 | |
The docs for `raw` are weird: docs.perl6.org/routine/raw | |||
16:09
cdg joined
|
|||
moritz | that's because raw is the introspection method on class Parameter | 16:09 | |
babydrop | alright thanks | ||
Skarsnik | building each rakudo release take a while x) | 16:17 | |
babydrop | build several at the same time. | 16:18 | |
hooo | 16:21 | ||
my fix found a bug | |||
in roast | |||
lucasb | ba dum tss | ||
oops, my bad timing | 16:22 | ||
babydrop | in 6.c-errata too | ||
m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; my $arrayref is dynamic = list(1,2,3); dd eval_elsewhere('?(@$*arrayref)'); | 16:23 | ||
camelia | rakudo-moar 16fbd7: OUTPUT«Bool::True» | ||
babydrop | that's the test and Bool::True is passing so all cool, right? But... | ||
m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; my $arrayref is dynamic = list(1,2,3); dd eval_elsewhere('(@$*arrayref)'); | |||
camelia | rakudo-moar 16fbd7: OUTPUT«(Failure.new(exception => X::Dynamic::NotFound.new(name => "\$*arrayref"), backtrace => Backtrace.new),)» | ||
babydrop | It's actually a failure being masked by the ? op | ||
well, the @ op I guess | 16:24 | ||
psch | m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; my $arrayref is dynamic = list(1,2,3); dd eval_elsewhere('(@$arrayref)'); | ||
camelia | rakudo-moar 16fbd7: OUTPUT«(1, 2, 3)» | ||
babydrop | coercer whategver | ||
psch: Yeah, seems like just a typo in the name, right? | |||
psch | babydrop: i'd say so. someone thought every dynamic variable must have a * twigil i'd guess | 16:25 | |
babydrop: unless you have another "but wait!" there..? :) | |||
babydrop | That's the tests: github.com/perl6/roast/blob/6.c-er...#L151-L152 | ||
16:25
AlexDaniel joined
|
|||
psch | curious that the comment doesn't have the * | 16:25 | |
oh wow that's old | 16:26 | ||
Jul 26, 2013 | |||
babydrop | It's also called "$arrayref"... so Perl 5ish :) | ||
psch | maybe the *-twigil did mean "look this up dynamically" back then :) | ||
lucasb | the *-twigil doesn't continue to mean "look this up dynamically" now? | 16:27 | |
psch | lucasb: no, it's a declarative shorthand for the trait 'is dynamic' | 16:28 | |
babydrop | psch: so do I just fix the test or do we need more eyeballs? | ||
I suspect it's just a typo and the test was always broken. The failure being masked by @ coercer | 16:29 | ||
psch | babydrop: well, the commit from 2013 explicitly added the * | ||
babydrop | oh | ||
psch | babydrop: with something along the lines of "fix stuff" | ||
github.com/perl6/roast/commit/2d48...0044acb882 | |||
babydrop | OK, I'll verify with lizmat | 16:30 | |
lucasb | m: sub f { say EVAL '$foo' }; my $foo is dynamic = 42; f | ||
camelia | rakudo-moar 16fbd7: OUTPUT«42» | ||
psch | babydrop: so, yeah, i'm not sure about the semantics there. fact is, * as twigil is similarly weird to how \ as parameter sigil is weird | ||
babydrop: i.e. the whole "trait hiding behind a sigil/twigil" thing | 16:31 | ||
babydrop | aye | ||
lucasb | and... EVAL '$*foo' is an error | ||
m: sub f { say $*foo }; my $*foo = 42; f | 16:32 | ||
camelia | rakudo-moar 16fbd7: OUTPUT«42» | ||
lucasb | babydrop: ah, so you'll just change '(@$*arrayref)' to '(@$arrayref)', right? | ||
psch | and, well... | 16:33 | |
m: my $*x is dynamic(False); sub f { say $*x } | 16:34 | ||
camelia | ( no output ) | ||
psch | m: my $*x is dynamic(False) = 1; sub f { say $*x } | ||
camelia | ( no output ) | ||
psch | m: my $*x is dynamic(False) = 1; sub f { say $*x }; f | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | lucasb: right, that's the question | ||
psch | that's just confusing to me tbh | ||
m: my $x is dynamic(0) = 1; sub f { say $x }; f | |||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | That sub still sees $x without dynamical scope | 16:35 | |
psch | oh right | ||
lucasb | well, the my declaration is before, so it's on the same scope of the sub | ||
psch | m: sub f { say $x }; my $x is dynamic(0) = 1; f | ||
camelia | rakudo-moar 16fbd7: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Variable '$x' is not declaredat <tmp>:1------> 3sub f { say 7⏏5$x }; my $x is dynamic(0) = 1; f» | ||
psch | m: sub f { say $*x }; my $*x is dynamic(0) = 1; f | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
psch | soo that's fishy | ||
cause apparently * is stronger than the trait which is weird | |||
m: sub f(\x is copy) { x++ }; my $x = 0; f $x; say $x | 16:36 | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | m: sub f (\x is raw(0) { x = 42 }; f $ | ||
camelia | rakudo-moar 16fbd7: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Missing blockat <tmp>:1------> 3sub f (\x is raw(0) 7⏏5{ x = 42 }; f $» | ||
babydrop | m: sub f (\x is raw(0)) { x = 42 }; f $ | ||
camelia | ( no output ) | ||
babydrop | I guess same here? | ||
psch | yeah | ||
16:36
pyrimidine joined
|
|||
psch | i'm not if that's even reasonable to think about, though :) | 16:36 | |
TimToady | m: sub f { say ::('$x') }; my $x is dynamic = 1; f | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
babydrop | TimToady: do you know if the $* supposed to be there in these tests? github.com/perl6/roast/blob/6.c-er...#L151-L152 | 16:37 | |
or should it be just plain $arrayref, since that's what the var is named | 16:38 | ||
TimToady | not supposed to have the * | ||
babydrop | \o/ | ||
TimToady | in fact, that shouldn't work | ||
the * on a dynamic var is only stripped at the last moment to look in GLOBAL and PROCESS | |||
lucasb | both 'my $x is dynamic(False)' and 'is dynamic(0)' actually *makes* a variable dynamic. are they suppose to be a no-op in this context? | 16:40 | |
TimToady | also, seems to me that 'is dynamic(False)' could rightfully complain about something or other | ||
looks to me like it's just ignoring the value | |||
16:41
pyrimidine left,
kyclark left
|
|||
lucasb | 'my $*x is dynamic(False)' is a contradiction, right? should be an error or one or the other should take precedence? | 16:41 | |
TimToady suspects a lot of boolean traits actually ignore their value... | |||
we should probably audit that... | 16:42 | ||
babydrop | TimToady: oh, one more Q: should Failure.new.list explode the failure instead of returning a 1-item list with failure in it? | ||
lucasb | like the code: 's :i($ignore-case) /foo/bar/' ? | ||
babydrop | m: say Failure.new.elems; # 'cause currently it causes this issue | ||
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
geekosaur | or possibly just relay the Failure? | ||
TimToady | lucasb: I don't see much use for a variable that might or might not be dynamic | 16:43 | |
babydrop | And relaying the failure would involve adding more than a dozen of methods to Failure.pm, because there's a whole bunch of methods in Any that would infiniloop on trying to call .list again ont hat failure to get a List | ||
like .elems, .Slip, .permutations, .combinations... there's a ton | |||
so, I figured the easier way out is to explode | 16:44 | ||
TimToady | babydrop: in general, listifying should not be checking success/failure status, but pass that through to downstream for something iterating the list to check | ||
so I think the current setup is correcterish | |||
babydrop | hm | 16:45 | |
16:45
kyclark joined,
lizmat joined
|
|||
babydrop | m: say permutations(3000).elems | 16:45 | |
camelia | rakudo-moar 16fbd7: OUTPUT«1» | ||
16:45
cdg left
|
|||
babydrop | ^ but then this doesn't iterate for anything. | 16:45 | |
m: say +permutations(3000) | |||
camelia | rakudo-moar 16fbd7: OUTPUT«Cowardly refusing to permutate more than 20 elements, tried 3000 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
babydrop | ^ and if you try to get .elems using that method you get the Failure. | ||
lizmat | m: dd permutations(3000) | 16:46 | |
yoleaux2 | 15:35Z <gfldex> lizmat: neither do I or I would have proposed something. No worries, nobody is gonna die from a missing docs confusion. | ||
camelia | rakudo-moar 16fbd7: OUTPUT«Failure.new(exception => X::AdHoc.new(payload => "Cowardly refusing to permutate more than 20 elements, tried 3000"), backtrace => Backtrace.new)» | ||
yoleaux2 | 16:32Z <babydrop> lizmat: would recall whether the $* twigils were meant to be here in this commit? The tests actually result in a Failure, which is masked by the @ coercert: github.com/perl6/roast/commit/2d48...5e68e7R146 | ||
16:33Z <babydrop> lizmat: conversation on that: irclog.perlgeek.de/perl6/2016-12-06#i_13691323 | |||
16:33Z <babydrop> lizmat: so I'm wondering whether we fix the tests by removing the '*' from twigils or were they meant to work with the twigils and the tests need to be fudged... | |||
16:39Z <babydrop> lizmat: nevermind, TimToady answered in irclog.perlgeek.de/perl6/2016-12-06#i_13691502 | |||
TimToady | well, maybe that's a good arg for list producers to die instead of fail in such cases | ||
16:47
AlexDaniel left
|
|||
TimToady | that is, if something like permutations is supposed to produce a list and fails completely, it should probably die outright, rather than pretend to return a list of one failure | 16:47 | |
16:48
mscha joined
|
|||
TimToady | poking the failure into the list is a kind of unwarranted mixing of semantic levels | 16:48 | |
distinguish this from processing a list where individual elements might be failures, but the list as a whole still works | 16:49 | ||
lizmat | TimToady: I'm not sure it pokes something into anything | ||
TimToady | in that case, it's fine to poke failures into the list | ||
lizmat | permutations returns either a Seq or a Failure | ||
16:49
jonas1 left
|
|||
TimToady | and I'm saying it should die instead of fail there, I suspect | 16:49 | |
lizmat | but I see your point | 16:50 | |
yeah | |||
TimToady | we do failures so that both parallel and serial processes can preserve the independence of each case, but in this case there is no independence to preserve | 16:51 | |
jnthn | The supply API takes care to keep the value channel and error channel distinct. | ||
Not confusing them in iterable land seems also wise | |||
babydrop | hm... that test actually fails even without the $* twigil | ||
m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; { my $arrayref is dynamic = list(1,2,3); dd eval_elsewhere('(@($arrayref))'); } | |||
camelia | rakudo-moar 16fbd7: OUTPUT«5===SORRY!5=== Error while compiling /home/camelia/EVAL_0Variable '$arrayref' is not declaredat /home/camelia/EVAL_0:1------> 3(@(7⏏5$arrayref))» | ||
babydrop | m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; my $arrayref is dynamic = list(1,2,3); dd eval_elsewhere('(@($arrayref))'); | ||
camelia | rakudo-moar 16fbd7: OUTPUT«(1, 2, 3)» | ||
babydrop | m: use MONKEY; sub eval_elsewhere($code){ EVAL($code) }; my $arrayref = list(1,2,3); dd eval_elsewhere('(@($arrayref))'); | 16:52 | |
camelia | rakudo-moar 16fbd7: OUTPUT«(1, 2, 3)» | ||
TimToady | as I demo'd above, ::() is sufficient, you don't necessarily need EVAL | ||
jnthn | I'd epxect that needs looing up with DYNAMIC::<$arrayref> | ||
babydrop | speaking of list producers... | ||
16:52
skids joined
|
|||
TimToady | that too | 16:52 | |
babydrop | m: say ?@(Failure.new) | ||
camelia | rakudo-moar 16fbd7: OUTPUT«True» | ||
TimToady | sure, but there you're explicitly creating a single-element list that happens to be a Failure | 16:53 | |
mscha | m: my %hash; if %hash<long-key-name><another-long-key-name> && %hash<long-key-name><another-long-key-name> eq "foo" { say "bar" } | ||
camelia | ( no output ) | ||
mscha | m: my %hash; if %hash<long-key-name><another-long-key-name> eq "foo" { say "bar" } | ||
camelia | rakudo-moar 16fbd7: OUTPUT«Use of uninitialized value $v of type Any in string context.Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at <tmp> line 1» | ||
babydrop | Alright thanks. | ||
mscha | Is there an elegant way in Perl 6 to do this without repetition? | ||
babydrop | mscha: andthen | 16:54 | |
m: my %hash; if %hash<long-key-name><another-long-key-name> andthen $_ eq "foo" { say "bar" } | |||
camelia | ( no output ) | ||
jnthn | m: my %hash; if quietly %hash<long-key-name><another-long-key-name> eq "foo" { say "bar" } | ||
camelia | ( no output ) | ||
TimToady | m: my %hash; with %hash<long-key-name><another-long-key-name> { when "foo" { say "bar" } } | ||
camelia | ( no output ) | ||
babydrop | m: my %hash; %hash<long-key-name><another-long-key-name> = 42; if %hash<long-key-name><another-long-key-name> andthen $_ eq "foo" { say "bar" } | 16:55 | |
camelia | ( no output ) | ||
babydrop | bah :( | ||
TimToady | m: my %hash; %hash<long-key-name><another-long-key-name> = 'foo'; with %hash<long-key-name><another-long-key-name> { when "foo" { say "bar" } } | ||
camelia | rakudo-moar 16fbd7: OUTPUT«bar» | ||
mscha | Thanks for the tips, all! There sure IMTOWTDI... :) | ||
babydrop | m: my %hash = foo => 'bar'; if %hash<foo> andthen $_ eq "foo" { say "bar" } | 16:56 | |
camelia | ( no output ) | ||
babydrop doesn't get why that ain't working | |||
m: my %hash = foo => 'bar'; if %hash<foo> andthen dd ($_) eq "foo" { say "bar" } | 16:57 | ||
camelia | rakudo-moar 16fbd7: OUTPUT«Bool::False» | ||
TimToady | foo ne bar | 16:58 | |
babydrop | doh | ||
m: my %hash = foo => 'bar'; if %hash<foo> andthen $_ eq 'bar' { say "bar" } | |||
camelia | rakudo-moar 16fbd7: OUTPUT«bar» | ||
16:58
abraxxa1 left
17:00
sufrosti1o left
17:01
sufrosti1o joined
17:04
zakharyas left
17:14
domidumont left
17:15
pyrimidine joined
|
|||
lucasb | I have a nqp repo dir and a revision tag "2016.11-75-g66308ea" | 17:16 | |
I want to clone this nqp local dir into another directory at the specified revision | |||
timotimo | git clone, then git checkout should do it | 17:17 | |
it'll complain about "detached head" state, but you can ignore it as long as you don't plan to git commit on it | |||
lucasb | timotimo: but git clone will clone everything, right? | 17:18 | |
is there a way to get *only* that revision? | |||
this would save time/space | |||
timotimo | git clone on a local FS will usually use hard links if i'm not mistaken | ||
you may want to check the help on git clone | |||
otherwise use --depth=1, or just use cp instead of git | |||
lucasb | timotimo: alright, thanks! | 17:19 | |
BTW, unrelated... | |||
if the HD drives of the server rakudo.org/downloads ever failed, is there backups of those tarballs? | 17:20 | ||
geekosaur | there's also --shared if you're not making any modifications (but if the original repo loses that branch, your copy goes dead) | 17:21 | |
17:21
prammer left
|
|||
lucasb | geekosaur: I'll take a read at some git manpages. thanks | 17:22 | |
17:24
prammer joined
17:25
wamba joined
17:26
cdg joined
17:28
girafe joined,
prammer left
17:31
prammer joined
17:32
lighttrr left
17:33
domidumont joined,
lighttrr joined,
lighttrr left
17:34
lighttrr joined
17:35
lizmat left
|
|||
babydrop | lucasb: that's a very good question... | 17:38 | |
.seen pmichaud | 17:39 | ||
yoleaux2 | I saw pmichaud 31 Aug 2016 16:30Z in #perl6-dev: <pmichaud> [Coke]: +1 to the rt-introduction document you've drafted. Yes, it means we may end up moving tickets from place to place. | ||
17:41
John joined
17:42
lighttrr left,
itay2805 joined
17:44
prammer left
17:53
itay2805 left
17:55
pyrimidine left,
dakkar left
17:56
lighttrr joined
17:59
prammer joined
18:00
lighttrr left
18:01
lizmat joined
18:05
pyrimidine joined
18:10
pyrimidine left
18:14
nicq20 left
18:18
sena_kun joined
18:20
lighttrr joined
18:21
kyclark_ joined
18:22
kyclark left,
kyclark_ is now known as kyclark
|
|||
John | Hi | 18:25 | |
babydrop | \o\ | 18:26 | |
John | I'm the "troll" who posted in: github.com/perl6/user-experience/issues/5 | ||
I'm sorry if I caused anyone any offence, it wasn't my intention | |||
babydrop | John: it's cool | 18:27 | |
huggable: hug John | |||
huggable hugs John | |||
John | lol | ||
babydrop | John: I wasn't offended. I just locked the issue because that topic causes a lot of bikeshedding, when we could be writing code instead :) | ||
John | Right, i totally get it - to be honest i'm not even sure why it was up for discussion | 18:28 | |
babydrop | People like discussing things :P | ||
John | regardless, it was locked after that guy who essentially dox'd me on github wrote a bunch of nonsense about something i posted on reddit | ||
If possible, could you take both posts down? | 18:29 | ||
babydrop | Sure. | ||
John | I'm just a bit concerned at where this is going | ||
thanks, apprechiate it | |||
huggable: hug babydrop | |||
huggable hugs babydrop | |||
18:30
pyrimidine joined
|
|||
John | You handled that nicely babydrop, i'll say thank you again :) | 18:32 | |
All the best | |||
18:32
John left
18:33
CIAvash left
|
|||
babydrop | Same to you. | 18:33 | |
18:34
pyrimidine left,
pyrimidine joined
|
|||
zgrep | <arnsholt> I'm a bit confused why you want to parse expressions with right-associativity though? That's kind of esoteric <-- Because my goal is to eventually make a working interpreter for an APL-inspired language called k. kparc.com , en.wikipedia.org/wiki/K_(programming_language) :P | 18:40 | |
18:44
CIAvash joined
|
|||
jonadab | Right associativity isn't THAT esoteric. | 18:45 | |
Not at a "why would we bother to support this" level. | |||
Granted, it's far less common than left associativity. | 18:46 | ||
[Coke] wonders how much effort it would take to port his parrot-based APL language to rakudo. | |||
18:49
tojo joined
|
|||
CIAvash | Remember last week I added Perl 6 to AlternativeTo.net? The next day they removed it, today I found out the reason (as I guessed) was that they thought Perl 6 is a new version of Perl, and they already had a page for Perl, so they removed it :) | 18:49 | |
babydrop | ouch :} | 18:50 | |
tojo | playing around with trans: say [email@hidden.address] => '-', :complement); | 18:51 | |
put got this "Use of Nil in string context" | |||
what this mean? | |||
am i doing something wrong | |||
babydrop | tojo: it means a Nil was used as a string... but as to why.. Hm... | ||
m: [email@hidden.address] => '-', :complement); | |||
camelia | rakudo-moar bc13bb: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1» | ||
18:53
pyrimidine left
|
|||
tojo | weird thing | 18:53 | |
babydrop | something or other in the guts ain't working right | ||
m: say [email@hidden.address] .>] => "-", :complement); | |||
camelia | rakudo-moar bc13bb: OUTPUT«-----.----@----.------.-------» | ||
babydrop | is that what it's meant to output? | ||
s: '', 'trans', \(/\@|\./ => '-', :complement) | 18:54 | ||
SourceBaby | babydrop, Sauce is at github.com/rakudo/rakudo/blob/bc13...r.pm#L2112 | ||
tojo | babydrop: yeah, that's right | ||
babydrop | m: say [email@hidden.address] .>] => "-",), :complement); | 18:56 | |
camelia | rakudo-moar bc13bb: OUTPUT«-----.----@----.------.-------» | ||
babydrop | oh, wrong one | ||
m: [email@hidden.address] => '-',), :complement); | |||
camelia | rakudo-moar bc13bb: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1» | ||
babydrop | s: [email@hidden.address] 'trans', \((/\@|\./ => '-',), :complement); | ||
SourceBaby | babydrop, Something's wrong: ERR: Cannot resolve caller sourcery(List, List); none of these signatures match: ($thing, Str:D $method, Capture $c) ($thing, Str:D $method) (&code) (&code, Capture $c) in block <unit> at -e line 6 | ||
babydrop | heh | ||
s: [email@hidden.address] 'trans', \( (/\@|\./ => '-',), :complement ) | 18:57 | ||
SourceBaby | babydrop, Sauce is at github.com/rakudo/rakudo/blob/bc13...r.pm#L2352 | ||
18:57
pyrimidine joined
|
|||
babydrop | that's weird... added spaces and it worked :/ | 18:57 | |
lucasb | say 'ab'.trans(/a/=>'', :complement) | ||
babydrop | m: '@.'.trans: (/./ => '-',), :c | 19:01 | |
camelia | ( no output ) | ||
babydrop | golfed version | ||
bah, I mean.... | |||
m: '@x'.trans: (/\@/ => '-',), :c | |||
camelia | rakudo-moar bc13bb: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1» | ||
19:03
labster joined
19:06
domidumont left,
lighttrr left
|
|||
tojo | so i'm not the only one who's pondering this :) so it's probably rakudo issue and not in my syntax | 19:06 | |
babydrop | tojo: yeah :) I'm raking in the guts ATM trying to find where it's from, in hopes to fix it :) | 19:07 | |
tojo | babydrop: good, thx :) | 19:09 | |
babydrop | tojo: as a workaround you can either use the list of strings variant above or stick a `quietly` before the method call | 19:11 | |
m: quietly say [email@hidden.address] => '-',), :complement); | |||
camelia | rakudo-moar bc13bb: OUTPUT«-----.----@----.------.-------» | ||
19:11
erdic joined
19:12
kyclark left
|
|||
tojo | babydrop: yeah true thx and that quietly is new one for me, good to know | 19:12 | |
RabidGravy | boom | 19:18 | |
19:19
darutoko left
|
|||
babydrop | oh yeah, located the juicy bugglet | 19:20 | |
Tonight! We dine! | |||
19:26
lighttrr joined
|
|||
babydrop | lucasb: why did you leave? I was gonna make you fix it :) You owe one bug fix for making fun of Perl 6's bugs, remember? :") | 19:27 | |
lucasb | babydrop: did you find the cause of the Nil warning? | 19:28 | |
19:29
cdg left
|
|||
babydrop | lucasb: yup | 19:29 | |
lucasb: the $/.chars: github.com/rakudo/rakudo/blob/bc13...r.pm#L2235 | |||
Since on failed matches the $/ is Nil | |||
m: Nil.chars | |||
camelia | rakudo-moar bc13bb: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1» | ||
lucasb | right, babydrop++ | 19:30 | |
babydrop | And I found it by adding CONTROL { when CX::Warn { .die } } and running the code in perl6 --ll-exception that dumps the backtrace | ||
19:31
espadrine left,
kyclark joined
|
|||
babydrop guesses lucasb isn't anxiously spectesting a fix right this second... | 19:32 | ||
or are you? :) | 19:34 | ||
I don't wanna fix it if you're gonna fix it. | |||
19:34
erdic left
19:35
Gothmog_ left,
avar left,
nine left,
nine joined
|
|||
lucasb | babydrop: sorry, I don't have the knowledge to fix this. maybe someday I can contribute | 19:35 | |
19:36
erdic joined,
Gothmog_ joined
|
|||
babydrop | ok :( | 19:36 | |
19:36
avar joined
19:37
domidumont joined
|
|||
RabidGravy | so only the 10 and 11 slots to fill for the Advent | 19:37 | |
stmuk_ | DBIC needs perl6 module versioning! DBIx::Class<auth:ribi> | 19:38 | |
babydrop | heh | ||
lizmat | not <auth:riba> ? | ||
stmuk_ | thats what I meant! | ||
19:40
edehont joined,
kyclark left
19:41
shlomif joined,
shlomif left
19:42
CIAvash left
|
|||
lizmat | lists.scsys.co.uk/pipermail/dbix-cl...12493.html # background | 19:42 | |
babydrop | oh boy! more drama from the dbix-class mailing lis5t | 19:43 | |
babydrop makes a new batch of popcorn | |||
19:43
rindolf left
|
|||
babydrop | tojo: bug's fixed now | 19:43 | |
19:45
rindolf joined
|
|||
RabidGravy | what the actual .... | 19:45 | |
isn't this how DBIC started in the first place? | |||
19:46
domidumont left
|
|||
tojo | babydrop: oh! very nice :) | 19:46 | |
19:48
domidumont joined
|
|||
babydrop | "two forks developed in parallel, by noncooperating, openly adversarial teams"... can they make one of them in Perl 6? :) | 19:49 | |
19:51
edehont left
|
|||
RabidGravy | I've got about half a dozen trial cuts for bits of orm | 19:51 | |
DrForr | Scheduling is done and released for OSCON Austin 2017. | 19:53 | |
I'm in the other side of the same room. | |||
babydrop | Any Perl 6? | 19:54 | |
Oh, I see you in the speakers list :D | 19:56 | ||
DrForr | *only* Perl 6, as far as I can tell. | 19:57 | |
babydrop | conferences.oreilly.com/oscon/oscon...tail/56965 | ||
DrForr | That's the one. I'm going with a more "practical" slant this year, whatever that means. | ||
19:58
Neolite joined
|
|||
pmurias | the problem with :auth is who gets the unqualified module name | 20:01 | |
babydrop | yea | 20:02 | |
future will tell, I guess | 20:03 | ||
.oO( locking the installer to just <X Y Z> auths and ignoring all others. `use Foo::Bar` just uses the module installed ) |
|||
20:07
Tonik joined
20:12
pyrimidine left
20:13
pyrimidine joined
|
|||
RabidGravy | does "sub EXPORT() { { 'Foo' => Foo but Bar }}" work? | 20:13 | |
babydrop | Only one way to find out :D | ||
RabidGravy | there is, but I was hoping there was someone of the same crack induced persuasion who may have tried :) | 20:15 | |
babydrop | heh | ||
no doesn't work | 20:16 | ||
babydrop tries harder | |||
nope | |||
oh doh | |||
[Coke] | RabidGravy: also the 9 and 24 slots if people would like to save people from writing multiple articles. | ||
babydrop | weird | 20:17 | |
m: put "meow" but "moo" | |||
camelia | rakudo-moar 2e1b82: OUTPUT«meow» | ||
babydrop | m: put ("meow" but "moo") | ||
camelia | rakudo-moar 2e1b82: OUTPUT«meow» | ||
20:17
pyrimidine left
|
|||
babydrop | m: ("meow" but "moo").put | 20:17 | |
camelia | rakudo-moar 2e1b82: OUTPUT«meow» | ||
babydrop | Am I smoking crack? | 20:18 | |
m: put (42 but "moo") | |||
camelia | rakudo-moar 2e1b82: OUTPUT«moo» | ||
babydrop | m: ("meow" but "moo").Str.put | ||
camelia | rakudo-moar 2e1b82: OUTPUT«moo» | ||
babydrop | How does that work? | ||
s: '', 'put', \() | |||
SourceBaby | babydrop, Sauce is at github.com/rakudo/rakudo/blob/bc13...Mu.pm#L472 | ||
geekosaur | overrides .Str but not .gist? | ||
Skarsnik | is there something to show a hash ordered by key? | ||
babydrop | geekosaur: yes, but .put uses .Str | 20:19 | |
RabidGravy: yeah, it works, I just confused myself with the above | |||
s: &put, \('x') | |||
SourceBaby | babydrop, Sauce is at github.com/rakudo/rakudo/blob/bc13...ors.pm#L42 | ||
geekosaur | Skarsnik, probably not "stock" since hashes are supposed to be unordered | ||
babydrop | oh, it's cheating with Str! | 20:20 | |
I would sort'f consider that a bugglet TBH | 20:22 | ||
"put uses .Str.... unless it's a Str or any of its subclasses" | |||
workaround's easy tho, so a docbug | 20:23 | ||
20:25
lucasb left
|
|||
Skarsnik | ok I did a my @tab = %hash; say @tab.sort x) | 20:25 | |
20:25
domidumont left
|
|||
babydrop | Skarsnik: why not %hash.sort? | 20:26 | |
cut out the middleman | |||
m: my %h = <a b z c d 52 5>; say %h.sort | |||
camelia | rakudo-moar 2e1b82: OUTPUT«Odd number of elements found where hash initializer expected:Found 7 (implicit) elements:Last element seen: IntStr.new(5, "5") in block <unit> at <tmp> line 1» | ||
babydrop | m: my %h = <a b z c d 52 5 z>; say %h.sort | ||
camelia | rakudo-moar 2e1b82: OUTPUT«(5 => z a => b d => 52 z => c)» | ||
20:29
eliasr left
|
|||
dalek | c: 9257760 | (Zoffix Znet)++ | doc/Type/Mu.pod6: Clarrify .put does not call .Str on Str objects |
20:31 | |
20:32
Ven joined
|
|||
babydrop | m: put "meow" but role { method ^name { dd "heh" } } | 20:33 | |
camelia | rakudo-moar 2e1b82: OUTPUT«Potential difficulties: Useless declaration of a has-scoped method in multi (did you mean 'my method name'?) at <tmp>:1 ------> 3put "meow" but role { method7⏏5 ^name { dd "heh" } }meow» | ||
babydrop | :\ | ||
why is it useless :\ | 20:34 | ||
bisect: m: my $x = "meow" but role { method ^name($) { dd "heh" } } | |||
bisectable6 | babydrop, On both starting points (old=2015.12 new=2e1b82c) the exit code is 0 and the output is identical as well | ||
babydrop, Output on both points: Potential difficulties: Useless declaration of a has-scoped method in multi (did you mean 'my method name'?) at /tmp/LwjJM0qICE:1 ------> m: my $x = "meow" but role { method<HERE> ^name($) { dd "heh" } } | |||
20:34
Ven_ joined,
Ven_ left
20:35
Ven_ joined
|
|||
babydrop | s/role/class/; | 20:36 | |
20:36
AlexDaniel joined
|
|||
babydrop | m: put ("meow" but "moo") but class { method ^name($) { "Int" } }.new | 20:36 | |
camelia | rakudo-moar 2e1b82: OUTPUT«meow» | ||
20:36
Ven left
|
|||
babydrop | How can I trick it from thinking what I have is a Str? | 20:37 | |
it got a multi that expects a Str:D I want it to use the multi for Any | |||
Skarsnik | hm I am confused/rusty, I pasted a string that I get as a %result.perl to a my $hash = blablab; but I get a weird hash | ||
do I need to eval ? | |||
babydrop | Skarsnik: yes | 20:38 | |
Skarsnik: EVAL is the reverse of .perl | |||
RabidGravy | hmm my name isn't getting exported | ||
babydrop | m: my %hash = <a b c d e f g>; my %z = %hash.perl.EVAL; dd %z | 20:39 | |
camelia | rakudo-moar 2e1b82: OUTPUT«Odd number of elements found where hash initializer expected:Found 7 (implicit) elements:Last element seen: "g" in block <unit> at <tmp> line 1» | ||
babydrop | m: my %hash = <a b c d e f g z>; my %z = %hash.perl.EVAL; dd %z | ||
camelia | rakudo-moar 2e1b82: OUTPUT«Hash %z = {:a("b"), :c("d"), :e("f"), :g("z")}» | ||
RabidGravy | that is I can export something that ca used as a type | 20:40 | |
can't | |||
20:40
Neolite left
|
|||
babydrop | damn, say() also cheats with Str :/ | 20:40 | |
20:40
Ven_ left
|
|||
babydrop | RabidGravy: works fine for me | 20:41 | |
RabidGravy: gist.github.com/zoffixznet/4171c4a...247d36242b | |||
RabidGravy | Hmm | 20:43 | |
yeah, I'm not seeing the name | 20:44 | ||
babydrop | You mean in my code? That it's still calling it Int? | 20:45 | |
whoa | 20:46 | ||
"When invoking 2 '', provided outer frame 0x2915d18 (4 'EXPORT') does not match expected static frame 0x2915e20 (3 '')" | |||
:D | |||
That's by trying to use sub EXPORT() { { "Foo" => Int but class { method ^name($) { "Foo" } } } } | |||
20:46
Xliff-ZZzzZZ is now known as Xliff
|
|||
Xliff | Does anyone here know if there is a way for Atom to mimic Sublime's right side nav window? | 20:47 | |
(I know it's OT, but...) | |||
20:47
pyrimidine joined
|
|||
babydrop | Xliff: atom.io/packages/minimap | 20:47 | |
Xliff | Thanks babyZof | 20:48 | |
20:51
Tonik left
|
|||
Skarsnik | gist.github.com/Skarsnik/88c3d956b...0ad5511b9f hm I get a weird hash (the rakudo release path are supposed to be the key); a whole line is a key :( | 20:53 | |
RabidGravy | ah, babydrop, it's colons, it doesn't export things with colons in the name right | 20:54 | |
which makes sense | |||
20:55
cpage_ joined,
cdg joined
21:05
lighttrr left
|
|||
babydrop | RabidGravy, does it? Hoe come? | 21:05 | |
m: gist.github.com/Skarsnik/88c3d956b...0ad5511b9f | |||
camelia | ( no output ) | ||
RabidGravy | well I guess it doesn't try to pick the package parts | 21:07 | |
21:07
lighttrr joined
|
|||
RabidGravy | it would be good if it did though | 21:09 | |
21:09
pyrimidine left
21:11
lighttrr left
21:14
spebern joined
|
|||
ufobat | nine, is youre examples/Bailador directory wrong, there are the Dancer examples | 21:15 | |
21:16
skids left
|
|||
nine | ufobat: nope, that's alright. It's not "Dancer" but "Dancr" which is the name of the example app in the Dancer tutorial | 21:17 | |
ufobat: FWIW it's confused me, too a couple of times | |||
ufobat | but it does use Dancer2:from<Perl5> so its Dancer not Bailador? | 21:18 | |
Xliff | Wheee... minimap not showing up. Will wait for help on #atom. | ||
21:19
tojo left
|
|||
[Coke] | DrForr++, in case I didn't do that already | 21:20 | |
21:22
TEttinger joined
|
|||
ufobat | ah! dancr.pm6 vs dancr.pm6.html ;) | 21:25 | |
AlexDaniel | . | 21:27 | |
yoleaux2 | 13:08Z <babydrop> AlexDaniel: why not finish off your ticket and submit tests too? rt.perl.org/Ticket/Display.html?id...et-history | ||
AlexDaniel | babydrop: because I'm kinda busy :( | ||
lizmat | decommute& | ||
21:27
lizmat left
|
|||
AlexDaniel | samcv: “would be nice if unicodable6 stored all the stuff in a datastructure instead of havig to search all of them” – why? | 21:29 | |
samcv | faster to search through them | ||
yoleaux2 | 30 Nov 2016 20:41Z <babydrop> samcv: if you're willing to improve rakudo.org (it's Wordpress), I'm sure we can find you an account :) RE: twitter.com/samcv6/status/804044061355044864 | ||
21:29
pyrimidine joined
|
|||
AlexDaniel | samcv: right now it is a bit slow because we are using the rakudo with debugging symbols | 21:29 | |
21:29
setty1 left
|
|||
samcv | i noticed i got a 2+x speed improvement when I loaded a hash on startup | 21:30 | |
AlexDaniel | but I'd suggest to make rakudo faster instead of optimizing unicodable :P | ||
samcv | maybe more than that | ||
hah | |||
true | |||
21:30
lighttrr joined
|
|||
AlexDaniel | unless we expect the number of symbols in unicode to double in the next years, I don't think there is an issue | 21:30 | |
samcv | u: penguin | ||
unicodable6 | samcv, U+1F427 PENGUIN [So] (🐧) | 21:31 | |
AlexDaniel | let's try without debugging symbols | ||
samcv | i don't think that's the issue. it searches through all the unicode symbols, and calling the unicode properties each time is slow for hundreds of thousands of times. would be better to store the text to search in some structure | ||
i'll be back in an hour or so | 21:32 | ||
maybe i'll test your unicodable6 vs what i did for my bot. github.com/samcv/keira-perl6-ircbo...odable.pm6 | |||
AlexDaniel | sure it will be better, but if I recall correctly it takes about 3 seconds to do a stupid sequential match | ||
perlpilot | AlexDaniel: as soon as we make contact with the aliens, we'll have whole new sets of glyphs in unicode, so it could double ;) | ||
[Coke] | huh. did we lose the ability to make gists private? | ||
samcv | .tell babydrop will be back in an hour, i'm open to that! would be great | 21:33 | |
yoleaux2 | samcv: I'll pass your message to babydrop. | ||
AlexDaniel | [Coke]: what gists? | ||
[Coke] | on gist.github.com | ||
I just accidentally made a public one, and there's no switch I can see to make it private. | |||
21:34
setty1 joined
|
|||
perlpilot | [Coke]: by "we" you mean the perl6 group or just people in general? | 21:34 | |
21:34
sufrostico left,
pyrimidine left
|
|||
RabidGravy | I just thought you got the button upfront | 21:34 | |
jnthn doesn't remember a switch to make it private, but still sees the button to make a new one secret | |||
[Coke] | anyone in general. | ||
21:34
sufrosti1o left
|
|||
[Coke] hurls github.com/blog/1837-change-the-vi...your-gists for what he was expecting. | 21:34 | ||
perlpilot | I still see two buttons "Create secret gist" and "Create public gist" | ||
[Coke] | perlpilot: yes. I'm talking about changing an existing one. | 21:35 | |
perlpilot | oh, yes, I see that now. I'm slow :) | ||
21:36
sufrostico joined
|
|||
RabidGravy | you can change a secret one to be public but not the other way round | 21:36 | |
21:36
sufrosti1o joined,
bisectable6 joined,
unicodable6 joined,
evalable6 joined,
committable6 joined,
ChanServ sets mode: +v bisectable6,
ChanServ sets mode: +v committable6,
benchable6 joined
|
|||
AlexDaniel | let's see | 21:36 | |
u: penguin | |||
unicodable6 | AlexDaniel, U+1F427 PENGUIN [So] (🐧) | ||
AlexDaniel | u: penguin | ||
unicodable6 | AlexDaniel, U+1F427 PENGUIN [So] (🐧) | ||
AlexDaniel | yeah, kinda slow :) | 21:37 | |
but still kinda impressive that it can do it so fast | |||
[Coke] | I tweeted 'em, at least maybe the new feature page that google led me to will get cleaned up. | 21:38 | |
timotimo | what page now? | 21:39 | |
AlexDaniel | samcv: that being said, if we split the whole range into 8 chunks… we will be able to do it in about one second :D | 21:41 | |
21:42
kurahaupo_ left
|
|||
AlexDaniel | samcv: like, I know that this is not a proper solution, but it is so fun :) | 21:42 | |
[Coke] | timotimo: the one I just hURLed above. | ||
timotimo | the gist feature? | 21:43 | |
21:44
bjz_ left
|
|||
[Coke] | timotimo: the what now? | 21:46 | |
21:54
sena_kun left
|
|||
timotimo | making gists public/private after the fact? | 21:54 | |
mscha | m: say "hello, world".subst(/<[aeiou]>/, $0, :g); # What am I doing wrong? | 21:55 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1hll, wrld» | ||
perlpilot | mscha: what do you think is in $0 and why? :) | 21:56 | |
timotimo | m: $_ = "hello, world"; s/<[aeiou]>/ = $0; say $_ | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Malformed replacement part; couldn't find final /at <tmp>:1------> 3hello, world"; s/<[aeiou]>/ = $0; say $_7⏏5<EOL> expecting any of: postfix» | ||
timotimo | m: $_ = "hello, world"; s{<[aeiou]>} = $0; say $_ | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1hllo, world» | ||
timotimo | m: $_ = "hello, world"; s{(<[aeiou]>)} = $0; say $_ | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«hello, world» | ||
mscha | m: say "hello, world".subst(/(<[aeiou]>)/, $0, :g); # What am I doing wrong? | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1hll, wrld» | ||
timotimo | m: say "hello, world".subst(/(<[aeiou]>)/, $0, :g); | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1Use of Nil in string context in block <unit> at <tmp> line 1hll, wrld» | ||
perlpilot | mscha: same question :) | 21:57 | |
timotimo | ah, you alreday did that | ||
mscha | So, .subst can't refer to the original string? | ||
timotimo | AFAIK we never got a proper way to write to the $/ outside the .subst | ||
jnthn | Arguments are evaluated at the time of method calls | ||
timotimo | right | ||
it'd have to be thunked | |||
m: say "hello, world".subst(/(<[aeiou]>)/, -> $/ { $0 }, :g); | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«hello, world» | ||
timotimo | m: say "hello, world".subst(/(<[aeiou]>)/, -> $/ { " $0 " }, :g); | 21:58 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«h e ll o , w o rld» | ||
21:58
cooper_ left
|
|||
mscha | Ah, OK, thanks! | 21:58 | |
jnthn | m: say "hello, world".subst(/(<[aeiou]>)/, *[0], :g) # another way | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«hello, world» | ||
21:58
cooper_ joined,
cooper_ left,
cooper_ joined
|
|||
jnthn | (*[0] being another way to write { $_[0] }) | 21:58 | |
perlpilot | mscha: m: say "hello, world".subst(/<[aeiou]>/, { " $_ "}, :g); # also | 21:59 | |
m: say "hello, world".subst(/<[aeiou]>/, { " $_ "}, :g); # also | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«h e ll o , w o rld» | ||
AlexDaniel | oh | 22:00 | |
RabidGravy | I'd forgotten that I'd made .at(DateTime $d -> Promise) in Chronic | 22:01 | |
which is good as I was going to write it again :) | 22:03 | ||
22:03
bjz joined
22:04
sufrostico left
22:05
sufrosti1o left
|
|||
RabidGravy | so I only have to finish two modules for the later advent post :) | 22:05 | |
jnthn | 'night, #perl6 | ||
timotimo | gnite jnthn :) | ||
RabidGravy | toodles | ||
22:06
firstdayonthejob joined,
sufrostico joined,
sufrosti1o joined
22:10
lighttrr_ joined
22:11
sufrosti1o left,
sufrostico left
22:12
sufrostico joined
22:13
sufrosti1o joined,
firstdayonthejob left,
lighttrr left,
RabidGravy left
22:14
lighttrr_ left
22:20
mscha left
22:22
bjz left
22:26
firstdayonthejob joined
22:36
yqt joined
22:37
wamba left
22:38
pyrimidine joined
22:43
pyrimidine left
|
|||
tailgate | if I use $string.split(", ") on a string and the returned list contains Nil, how do I get rid of them? | 22:46 | |
timotimo | docs.perl6.org/routine/split - check this out | 22:47 | |
it shouldn't contain Nil, though. just "" | |||
22:48
spebern left
22:53
kurahaupo__ joined,
skids joined
22:55
kurahaupo__ left
22:56
kurahaupo__ joined
|
|||
babydrop | tailgate: if you do have Nil, I'd like to see an example | 22:57 | |
yoleaux2 | 21:33Z <samcv> babydrop: will be back in an hour, i'm open to that! would be great | ||
babydrop | m: dd quietly Nil.split: ", "; # 'cause even splitting a Nil doesn't give you a Nil | 22:58 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«("",)» | ||
AlexDaniel | m: say ‘x’.split(‘’ x -9999999999999999999) | 23:00 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«repeat count > 1073741824 arbitrarily unsupported... in block <unit> at <tmp> line 1» | ||
AlexDaniel | xD | ||
m: say ‘’ x -9999999999999999999 | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«repeat count > 1073741824 arbitrarily unsupported... in block <unit> at <tmp> line 1» | ||
AlexDaniel | I wonder why this does not warn | 23:01 | |
m: say 42 x Nil | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«» | ||
AlexDaniel | m: say 42 x Any | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«» | ||
AlexDaniel | wait | 23:02 | |
commit: HEAD~200,HEAD say 42 x Nil | |||
committable6 | AlexDaniel, ¦«HEAD~200,HEAD»: | ||
AlexDaniel | commit: HEAD~500,HEAD say 42 x Nil | ||
committable6 | AlexDaniel, ¦«HEAD~500»: Use of Nil in numeric context in block <unit> at /tmp/RcAZ2vGcy9 line 1¦«HEAD»: | 23:03 | |
AlexDaniel | bisect: say 42 x Nil | ||
bisectable6 | AlexDaniel, Bisecting by output (old=2015.12 new=4fd6e94) because on both starting points the exit code is 0 | ||
AlexDaniel, bisect log: gist.github.com/a79b6900041204962d...d95f6738a7 | |||
AlexDaniel, (2016-09-01) github.com/rakudo/rakudo/commit/63...6892a7df4f | |||
AlexDaniel | bisect: old=2016.10 say 42 x Nil | ||
bisectable6 | AlexDaniel, Bisecting by output (old=2016.10 new=4fd6e94) because on both starting points the exit code is 0 | ||
AlexDaniel, bisect log: gist.github.com/26674ebaf8f4165b56...4b2cc82071 | |||
AlexDaniel, (2016-10-16) github.com/rakudo/rakudo/commit/2d...5c7c2527fc | 23:04 | ||
AlexDaniel | commit: 2016.10,HEAD say 42 x Nil | ||
committable6 | AlexDaniel, ¦«2016.10»: Use of Nil in numeric context in block <unit> at /tmp/Z14728_pyG line 1¦«HEAD»: | ||
AlexDaniel | babydrop: do you know what's happening here? | ||
babydrop | heh | 23:08 | |
23:09
yoleaux joined
|
|||
babydrop | Yup. The behaviour is that a type object gets interpreted as 0 | 23:09 | |
23:09
ChanServ sets mode: +v yoleaux
|
|||
babydrop | Prior to my change in the above commit, the behaviour was the same, except it also did that for Failure objects, which made them silently slip away | 23:09 | |
AlexDaniel | but we definitely want a warning there, right? | 23:10 | |
23:10
firstdayonthejob left
|
|||
babydrop | Nope. At least, IIRC the previous commit to that part prior to my change is moritz adding the explicit feature for type objects to be treated as zero. | 23:11 | |
There's probably a usecase for it, maybe moritz remembers what is was. | 23:12 | ||
AlexDaniel | … hmm… | ||
babydrop | Ahh | 23:13 | |
AlexDaniel: github.com/rakudo/rakudo/commit/23...c51bc75a69 | |||
so maybe see if there's a way to aboid that recursion while still getting the warnings, unless there's a test explicitly testing that type objects don't produce warnings | |||
m: &infix:<x>.candidates».signature».gist.say | 23:14 | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«(() ($x) ($s, Num:D $n) ($s, Any:D $n) ($s, Any:U $n) (Str:D $s, Int:D $repetition --> Str:D) (str $s, int $repetition --> str))» | ||
23:14
Skarsnik left
|
|||
babydrop | s: &infix:<x>, \('', Any) | 23:15 | |
SourceBaby | babydrop, Sauce is at github.com/rakudo/rakudo/blob/4fd6...ngy.pm#L32 | ||
babydrop | oh right, I need to be doing that on that commit :) | ||
babydrop goes back to playing Warframe | |||
23:17
pyrimidine joined,
prammer left
23:21
pyrimidine left,
pyrimidine joined
23:26
pyrimidine left
|
|||
AlexDaniel | m: say 42.roll(-1) | 23:28 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«(42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 …» | ||
AlexDaniel | what's the idea behind this | ||
babydrop | For someone who's too busy to commit a test, you sure have lots of time to break stuff :) | 23:29 | |
AlexDaniel | Ah, I got the idea | 23:30 | |
23:30
ssotka joined
|
|||
AlexDaniel | m: say 42.roll(-18446744073709551613) | 23:30 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«(42 42 42)» | ||
AlexDaniel | babydrop: well, breaking stuff is what I do to relax between my coding bursts | 23:31 | |
babydrop | AlexDaniel: it makes the assumption the number is positive and keeps decrementing it in an attempt to reach zero: github.com/rakudo/rakudo/blob/4fd6...t.pm#L1115 | ||
prolly should do something smarter here: github.com/rakudo/rakudo/blob/4fd6...t.pm#L1107 | 23:32 | ||
pmurias | what would be the correct behavior? throw an exception? or have a subset in the signature? | 23:33 | |
AlexDaniel | bisect: old=2015.10 say 42.roll(-1) | ||
babydrop | No subsets in the signature, it's slow | ||
bisectable6 | AlexDaniel, Bisecting by output (old=2015.10 new=4fd6e94) because on both starting points the exit code is 0 | ||
AlexDaniel, bisect log: gist.github.com/184042f8db7282eb04...ac8171b5bf | 23:34 | ||
AlexDaniel, (2015-11-12) github.com/rakudo/rakudo/commit/f4...9679eb9692 | |||
babydrop | We have an exception for that type of stuff | ||
AlexDaniel | oops | ||
babydrop | m: try ''.substr(42); say $!.^name | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«X::OutOfRange» | ||
babydrop | That out, I s'pose will do | ||
m: try [][-100]; say $!.^name | 23:35 | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unsupported use of a negative -100 subscript to index from the end; in Perl 6 please use a function such as *-100at <tmp>:1------> 3try [][-100]7⏏5; say $!.^name» | ||
babydrop | m: try '[][-100]'.EVAL; say $!.^name | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«X::Obsolete» | ||
babydrop | heh | ||
oh, well, yeah, not the todo but here: github.com/rakudo/rakudo/blob/4fd6...t.pm#L1095 | 23:36 | ||
(the doing smarter stuff I mean) | |||
m: dd 42.roll: 500 | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«(42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,…» | ||
babydrop | m: dd Failure.new.roll.elems | 23:37 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«1» | ||
babydrop | maaan... this stuff keeps unraveling. | ||
Maybe we need to audit what methods are aflicted with that issue. | 23:38 | ||
23:38
pmurias left
|
|||
babydrop | TIL we have rotate. | 23:38 | |
m: say 'Perl 6'.comb.rotate | 23:39 | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«No such method 'rotate' for invocant of type 'Seq' in block <unit> at <tmp> line 1» | ||
babydrop | m: say 'Perl 6'.comb.List.rotate | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«(e r l 6 P)» | ||
babydrop | m: say Failure.new.rotate.elems | ||
camelia | rakudo-moar 4fd6e9: OUTPUT«FailedActually thrown at: in any at gen/moar/Metamodel.nqp line 3063 in block <unit> at <tmp> line 1» | ||
babydrop | m: dd [.elems, .pick.elems, .roll.elems, .eager.elems, .Slip.elems, .Array.elems, .List.elems, .Capture.elems, .rotor(42).elems ] given Failure.new | 23:42 | |
camelia | rakudo-moar 4fd6e9: OUTPUT«[1, 1, 1, 1, 1, 1, 1, 0, 0]» | ||
23:47
ufobat left
|
|||
AlexDaniel | ok, so | 23:51 | |
m: say (2, 5, 8).rotor(1) | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«((2) (5) (8))» | ||
AlexDaniel | makes sense | ||
m: say (2).rotor(1) | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«((2))» | ||
AlexDaniel | ok | ||
m: say ().rotor(1) | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«<anon|150046848>.new» | ||
23:51
lukaramu left
|
|||
AlexDaniel | what's that? | 23:51 | |
bisect: say ().rotor(1) | 23:53 | ||
bisectable6 | AlexDaniel, Bisecting by output (old=2015.12 new=4fd6e94) because on both starting points the exit code is 0 | ||
AlexDaniel, bisect log: gist.github.com/a0bb5a6b6898b39bb8...c86374de4b | |||
AlexDaniel, (2016-07-09) github.com/rakudo/rakudo/commit/40...a3157a3455 | |||
AlexDaniel | oops! | ||
babydrop thinks we need a "You break it. You fix it" policy :) | 23:56 | ||
AlexDaniel | babydrop: I know a better one | 23:57 | |
babydrop | AlexDaniel: are you recording these? | ||
AlexDaniel | babydrop: “You find it. You fix it” | ||
RT #130281 RT #130282 RT #130283 | 23:58 | ||
babydrop | AlexDaniel++ | ||
m: dd Rakudo::Internals.EmptyIterator | |||
camelia | rakudo-moar 4fd6e9: OUTPUT«<anon|150046848>.new» | ||
babydrop has no idea what that is.... | |||
That's what ().rotor(1) gives | |||
AlexDaniel | babydrop: I don't know anything about the Failure thingy you were talking about some minutes ago | 23:59 | |
babydrop: so perhaps you'll have to submit a ticket yourself, if it is needed | |||
babydrop | AlexDaniel: irclog.perlgeek.de/perl6/2016-12-06#i_13691543 |