»ö« 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.
00:10 loveperl left 00:12 lizmat left 00:16 pyrimidine joined 00:18 BenGoldberg joined
japhb .tell [Coke] IIRC there were two reasons for PNG versions of the type graphs: 1) Browsers that did not support SVG inline, and 2) Browsers with NoScript or similar security technology enabled (which often disables SVG). 00:18
yoleaux japhb: I'll pass your message to [Coke].
00:20 pyrimidine left 00:24 espadrine left 00:29 cibs left 00:31 cibs joined 00:39 pyrimidine joined 00:40 BenGoldberg left 00:42 perlpilot left 00:44 pyrimidine left, pierre_ joined 00:49 pierre_ left 00:51 lizmat joined
AlexDaniel what's [big] about it 00:51
00:55 aborazmeh joined, aborazmeh left, aborazmeh joined 01:03 wamba left 01:07 j joined, j is now known as Guest27761 01:14 pyrimidine joined 01:16 mr_ron left, mr_ron joined 01:19 pyrimidine left, AlexDaniel left 01:24 mr_ron left 01:26 pyrimidine joined 01:29 Guest27761 left 01:31 buggable is now known as Guest91376, NeuralAnomaly is now known as Guest13761, pyrimidine left 01:36 itcharlie joined 01:39 pyrimidine joined 01:42 itcharlie left 01:43 pyrimidine left 01:48 bitmap left 01:49 bitmap joined 01:53 cpage_ left 01:55 pyrimidine joined 02:00 pyrimidine left, cpage_ joined 02:16 cgfbee left, baest left, jargan joined, baest joined 02:17 cgfbee joined 02:22 pyrimidine joined
[Coke] samcv: looks like it's more than twice as slow here: gist.github.com/coke/1fb4a80aa8339...cc1a0a2981 02:23
yoleaux 00:18Z <japhb> [Coke]: IIRC there were two reasons for PNG versions of the type graphs: 1) Browsers that did not support SVG inline, and 2) Browsers with NoScript or similar security technology enabled (which often disables SVG).
[Coke] samcv: got a TON of duplicate messages during the final stages with the highlights version, not sure if that contributed. 02:24
samcv hmm
from travis's build it seems to be like 10% slower
but i'm working atm on being able to make it async
well the node side
and output json which contains the filename it read from and the html (newline delimited) 02:25
02:27 pyrimidine left
[Coke] samcv: note that parallel=2 SEGVS or worse with the current version. 02:28
(on master)
samcv yeah
[Coke] .tell japhb - yah, I'm suggesting that we have enough SVG support now we can drop that requirement. 02:30
yoleaux [Coke]: I'll pass your message to japhb.
[Coke] (I am also generally OK with the site not being 100% without javascript) 02:31
02:32 pyrimidine joined
samcv you mean client side? 02:33
02:37 colomon left, colomon joined
samcv also i'm going to try calling stdout write directly instead of console.log 02:37
02:39 pyrimidine left
dalek c/highlights: 6180396 | samcv++ | highlights/highlight-filename-from-stdin.coffee:
Make highlights async, use process.stdout.write not console.log

console.log can do formatting of javascript data structures Hopefully will be faster printing that way.
Not sure if making it async will make it faster, the same, or slowing though.
02:41
samcv well let's see what this does
really curious. 02:42
02:44 quicoju joined
[Coke] I can try again. 02:44
samcv also what node version do you have? 02:45
02:45 ilbot3 left, pierre_ joined 02:48 ilbot3 joined
[Coke] v6.3.0 02:48
I see 6.9.2 is current, checking macports.
samcv that's probably fine i guess. i don't know much about node
i have v7.2.1 atm 02:49
[Coke] er, I guess current means something and I meant LTS.
02:50 pierre_ left 02:52 kalkin- left, kalkin-_ joined 02:56 xtreak joined
[Coke] upgrades to 7.2.1 02:56
02:57 pyrimidine joined
samcv also i made it async so. it's maybe possible that now the wrong text will be in different places 02:58
but i think most likely not, since it waits for a response (perl6)
before sending the next request. so i'm 95% sure that won't happen
[Coke] died with Cannot receive a message on a closed channel 02:59
samcv at the end?
[Coke] your parallel isn't tied to --parallel?
samcv it doesn't do it parallel. i just made the node part asynchronous
idk coke maybe it sent a nonreal filename? though then i think it should print out an error 03:00
i'm building right now
03:02 noganex_ joined
samcv err or wait maybe i didn't make it async. hold on 03:02
03:05 noganex left 03:10 rburkholder left
dalek c/highlights: cbaca0a | samcv++ | / (2 files):
Actually make the coffeescript asynchronous

Also remove an unneeded repo from the Makefile.
  `highlights` is already in our node package file,
so it automatically downloads.
03:14
03:20 cpage_ left 03:21 cpage_ joined 03:23 mr-foobar left 03:35 colomon left 03:37 colomon joined
labster news.ycombinator.com/item?id=13216924 Upvotes would be nice for today's advent calendar entry. People need to learn about P5 interop. Also good job tadzik++ 03:37
samcv the post title is not very informative :\ 03:38
03:38 kurahaupo joined
labster it has a link right next to it with "perl6advent" 03:43
samcv: Should I edit the title? 03:44
samcv yes 03:45
very much so
Bridging the gap between Perl 5 and Perl 6
03:46 ufobat left 03:49 wentam joined 03:54 aborazmeh left 03:56 quicoju left 04:00 noganex joined, wentam left 04:02 noganex_ left 04:06 BenGoldberg joined
japhb . 04:08
yoleaux 02:30Z <[Coke]> japhb: - yah, I'm suggesting that we have enough SVG support now we can drop that requirement.
japhb [Coke]: Understood, just passing on the history. OOC, why do you want to get rid of the PNGs? 04:09
04:22 teksteiner joined
teksteiner Hey everyone, new to Perl6, when I use `say` with a variable in the following string, like `say "time: $seconds"`, how do I put a character behind seconds without a space? I know that I could do `say "time: $seconds" ~ "s"`. 04:29
04:29 xtreak left
MasterDuke m: my $second = now; say "time: {$second}s" 04:32
camelia rakudo-moar a96292: OUTPUT«time: Instant:1482208366.513932s␤»
teksteiner Ah I see, didnt know it was possible to use {} inside strings either, thank you :) 04:33
04:34 xtreak joined
MasterDuke np. fyi, {} inside a string allows you to perform arbitrary computation 04:36
and on that bombshell, i'm out of here 04:37
teksteiner Alright, have a nice day.
04:43 mr-foobar joined 04:47 pierre_ joined 04:51 pierre_ left 05:05 baest_ joined 05:07 baest left 05:08 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 05:10 baest_ is now known as baest, teksteiner left 05:12 teksteiner joined 05:13 AndyBotwin left 05:17 djbkd left, djbkd joined 05:22 djbkd left, teksteiner left 05:23 teksteiner joined
samcv welcome to perl 6 teksteiner :) 05:27
05:29 skids left 05:30 teksteiner left 05:32 teksteiner joined 05:40 Cabanossi left, teksteiner left 05:41 teksteiner joined 05:42 Cabanossi joined 05:51 Sgeo_ joined 05:52 cognominal left 05:53 Sgeo left 06:01 khw left
samcv hmm roast is the current status of the Perl 6 standard right? so we can change things that may be different in 6.c? 06:07
samcv _really_ wants to remove the ornate parenthesis ;)
06:11 gregf_ left
TEttinger samcv: I agree, very confusing 06:14
samcv i mean it can stay in the 6.c branch of roast, but i just want to remove it. that's what i want for christmas ;)
06:16 xtreak left
samcv and then when Bidi_Mirroring_Glyph works properly in Moar, then can easily automate the testing of all things in unicode 06:16
m: say '('uniprop('bmg')
camelia rakudo-moar a96292: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3say '('7⏏5uniprop('bmg')␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifie…»
samcv m: say '('.uniprop('bmg')
camelia rakudo-moar a96292: OUTPUT«0029␤»
samcv m: say '('.uniprop('bmg').WHAT
camelia rakudo-moar a96292: OUTPUT«(Str)␤»
06:17 holli joined
holli good localtime good sirs and ladies. may i kindly draw your attention to this perlmonks post of mine which describes a Perl6/Inline::Perl5 problem. 06:18
www.perlmonks.org/?node_id=1178000
06:18 bjz joined
samcv reading 06:19
06:20 xtreak joined
samcv why did you make class YTDL::App is Wx::App? 06:21
in perl 5 do you have to use base or you don't get the routine's imported? 06:22
06:23 cyphase left
holli the Perl5 code is right there. yes because it's supposed to ISA Wx::App 06:23
samcv i see the perl 5 code. but the question was just, if that sub is automatically exported or not
hold on i have Wx installed. let me see 06:24
holli i don't know
06:25 Tonik joined 06:26 bjz left 06:28 cyphase joined, raiph joined, bjz joined
raiph holli: what happened when you tried 'sub'? 06:29
yoleaux 19 Dec 2016 22:08Z <nine> raiph: your suggestion to use "method" instead of "sub" sounds entirely sane. Wonder if it helped.
raiph er, tried 'method'
samcv that doesn't work. i tried a sub
for me at least
06:30 bjz left, bjz_ joined 06:31 nige1 joined
holli neither "method" nor "sub" do work 06:32
06:32 bjz_ left
samcv i don't think you can inherit from perl 5 programs. you can use perl 5 objects and stuff though 06:34
and routines
inheriting from it seems like it wouldn't work...
nige1 .tell zoffix thanks for the tip to turn on JSON output for perl6 -> RAKUDO_EXCEPTION_HANDLER=JSON 06:35
yoleaux nige1: I'll pass your message to zoffix.
samcv but i could be wrong
nige1 .tell zoffix I've update the code to use JSON instead github.com/nige123/perl6fix/blob/m...r/perl6fix 06:36
yoleaux nige1: I'll pass your message to zoffix.
samcv oh holli 06:37
what you are looking for is not `is` but the `does` keyword
nige1 next time I'll show advent drafts to the channel first
samcv does inherits the way you want it to
class YTDL::App does Wx::App will inherit variables and all other stuff. does inherits mostly everything 06:38
but i get this error: Wx::App is not composable, so YTDL::App cannot compose it
idk somebody else here might know more about using Inline::Perl5 :\ 06:39
at least that's how objects inherit in perl 6, not sure about the magic that happens in inline
holli bummer 06:40
samcv well let me keep trying actually...
holli ponders writing a Perl6 to C wrapper for Wx 06:42
samcv have you ever used NativeCall before?
i've used it before, it's pretty good
holli nope. not a clue about c
samcv do you know C?
holli that's the adventure :)
samcv NativeCall is the perl 6 thingy that hooks up to NativeCall
err.
i mean hooks up to C libraries 06:43
holli i know. looks easy. emphasize on "looks"
samcv well i can help you a lot more with that than with inline perl 5 hah 06:44
i mean i'm not a pro, but i have used it some
raiph IP5 just uses NativeCall
samcv yeah
raiph you can create a P6 class that's a subclass of a P5 class
do we have a P6 bot that has IP5 and some P5 modules installed? 06:46
06:46 bjz joined 06:47 pierre_ joined 06:48 darutoko joined 06:50 cyphase left 06:51 RabidGravy joined
holli apparently not 06:52
06:52 pierre_ left
holli i fucked up the link btw 06:54
www.perlmonks.org/?node_id=1177946 this is the OP
nige1 .tell zoffix also fixed the advent entry on fixing flow perl6advent.wordpress.com/2016/12/...xing-flow/ to use JSON instead
yoleaux nige1: I'll pass your message to zoffix.
06:55 cyphase joined
raiph .tell nine irclog.perlgeek.de/perl6/2016-12-20#i_13770361 06:59
yoleaux raiph: I'll pass your message to nine.
07:00 geekosaur left
raiph holli: I plan to take another look at what you're trying later this week 07:01
goodnight #perl6
07:02 geekosaur joined
holli gn 07:02
07:03 pyrimidine left 07:08 ufobat joined 07:13 pierre_ joined, wamba joined 07:16 pyrimidine joined
holli off to work 07:17
cya
07:17 holli left 07:21 CIAvash joined 07:22 pyrimidine left 07:25 pierre_ left 07:26 pyrimidine joined 07:28 Actualeyes left
nine samcv: you _can_ inherit from Perl 5 classes 07:31
yoleaux 06:59Z <raiph> nine: irclog.perlgeek.de/perl6/2016-12-20#i_13770361
samcv that's pretty neat nine 07:32
how is that feat accomplished?
nine When you "use Wx::App" a wrapper class called Wx::App is created in Perl 6 which forwards method calls to Perl 5. You can inherit from this wrapper. 07:33
07:34 Tonik left
samcv can using Wx::App work though, because it tries to call a perl 5 sub? 07:34
nine Like in: niner.name/talks/Perl%205%20and%20P...-parser.pl
samcv sweet! 07:35
nine I don't know Wx::App, but I assume it should work just like HTML::Parser.
07:37 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg
nine .tell holli cases like "use Wx::App:from<Perl5>; my $app = Wx::SimpleApp.new;" are exactly why I worked on lexical module loading mentioned in rakudo.org/2016/12/17/lexical-module-loading/ Now that that's out of the way I can improve Inline::Perl5 07:38
yoleaux nine: I'll pass your message to holli.
samcv nine++ 07:39
when is this landing in nom? 07:41
nine It did yesterday
samcv pulls 07:42
masak .oO( "I need this on my master branch yesterday!" )
mornin', #perl6 07:43
07:43 jargan is now known as jast
samcv morning 07:43
07:44 pierre_ joined
teksteiner good morning 07:44
07:45 BenGoldberg left 07:46 BenGoldberg joined 07:47 dayangkun joined 07:48 domidumont joined 07:50 domidumont left 07:51 dayangkun left 07:52 nige1 left 07:53 dayangkun joined, domidumont joined, dayangkun left 07:55 CIAvash left 08:05 nige1 joined
andrzeju_ hello PERL!:) 08:05
nine andrzeju_: good morning 08:09
08:09 CIAvash joined 08:13 pierre_ left 08:16 pyrimidi_ joined, pyrimidine left 08:23 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 08:25 zakharyas joined 08:26 leah2 left
nine .tell holli I now understand the bug in Inline::Perl5 which causes your Wx app to fail. The subclass doesn't exist in Perl 5 and the Perl 5 constructor is called with "Wx::App" as package so $this->can( 'OnInit' ) will return the OnInit of the base class. Fixable but a bit involved. 08:29
yoleaux nine: I'll pass your message to holli.
08:40 thayne left 08:42 dakkar joined, xtreak left 08:45 nige1 left
DrForr .tell mr_ron I'm back from vacation, ping me re: roman numerals. 08:45
yoleaux DrForr: I'll pass your message to mr_ron.
08:50 xtreak joined 08:51 g4 joined
ufobat is this a bad idea: token FilterExpr { <PrimaryExpr> | <FilterExpr> <Predicate> } because of the recursion in this token? and is this a bad idea esp because of backtracking? (just by having this in my grammar, not even matching against it, increases the execution time of .parse() from 7 to 19sec) 08:52
08:53 xtreak left 08:54 xtreak joined
DrForr ufobat - Probably, yes. What language is this for, if I may be so bold? 08:58
I.E. there may well be a better way to do this.
lizmat news.ycombinator.com/item?id=13216924 # labster's advent post on HN 08:59
labster Hi lizmat
lizmat also clickbaits p6weekly.wordpress.com/2016/12/19/...christmas/ 09:00
labster o/
labster Happy Advent
\o
ufobat DrForr, i am playing around with xpath 09:01
09:01 xtreak left
DrForr Oh, cool. I was just wondering because that expression just might allow more than you intended. 09:02
ufobat DrForr, i am trying to figure out why a) its so slow b) my grammar ony matches when i use Grammar::Debugger github.com/ufobat/p6-XML-XPath
i just wrote down the spec in a perl grammar, not much thinking about it first and just give it a try.. 09:03
09:04 BenGoldberg left
DrForr The first thing I see is that everything's written as a token. That's a bit odd to me, because tokens are usually single blocks of text. If you're in an XPath construct it's possible, but I'm not sure. 09:05
tadzik oh, someone did find that My Little Pony module, now I have to think of a prize :o 09:06
DrForr Sparkle glue? 09:07
arnsholt ufobat: It's a bad idea because it'll recurse infinitely if PrimaryExpr doesn't match 09:08
ufobat i tought so, so if there is recursion it must like token A { <B> | <C> <A> } 09:09
DrForr, what is the way to decide when a token is not sufficient? 09:11
jast only in a recursive descent / LL parser
DrForr Well, the thing is that's really just a way to generate arbitrary sequences of <B>|<C>, I *think*.
arnsholt Anyways, you can just expand it into FilterExpr { <PrimaryExpr> <Predicate>* } 09:12
DrForr And yea, BNF and LALR(n) aren't the same as PEGs.
arnsholt ufobat: More or less. You need to consume at least one more character before recursing back into A
jast that's a different expression, actually
arnsholt So it'd fail if <C> can match the empty string
ufobat AH! 09:13
DrForr arnsholt: I thought that was the case to, but <primary><Predicate><Primary> is allowed because of the recursion, and I didn't think he wanted that. That's why I was curious about the language.
ufobat: I generally follow the rule that a token is meant to be a single term like 123 or -23.7 or "foo bar", and anything else is a rule connecting tokens. 09:14
arnsholt A primary after the predicate isn't licenced by that FilterExpr rule
jast wouldn't it be: FilterExpr { <PrimaryExpr>* <Predicate> }
arnsholt jast: That's what I thought initially too 09:15
DrForr Oh, I ws reading backwards. My bad.
arnsholt But if you sketch the parse tree top-down, you'll see it
ufobat jast, probably, yeah :)
jast oh, yeah
arnsholt FE => FE Pred => FE Pred Pred => ...
jast man, reading grammars is hard :)
arnsholt Yeah, it's really hard to develop good intuitions about them
jast I actually think ordered choice instead of | makes it easier to understand them 09:16
not "easy", though
ufobat DrForr, but rules are "tokens with whitespaces" right? if so why is a rule "probably" better?
i thought my probelm is to identify when backtracking is required and when it isnt 09:17
jast because of the PEG-like capability's of P6 grammars you can often avoid left recursion a lot more easily than with traditional grammar definitions 09:18
dang, I did just put that apostroph there, didn't I? bad day, apparently...
09:18 thayne joined
arnsholt Where PEG-like is quantification of subrule matches? 09:18
DrForr It makes your intentions clearer, to start.
jast in this case, yeah 09:19
arnsholt That's easily expressible in both top-down and bottom-up CFG parsing though
jast it is, but with traditional definitions you have to split up your productions further, with this you can avoid that
arnsholt There's a PEG component in HLL::Grammar in NQP, but that's not directly available to Perl 6 grammars
jast (when using top-down parsing, at least. LR-type parsers don't care about left recursion, of course.) 09:20
09:20 ocbtec joined
DrForr BNF and other grammars go through hell to represent <X><Y>* and <X>+<Y> because of {reduce,shift}-reduce conflicts; PEGs don't have that problem. 09:20
jast neither do the other bottom-up techniques I can think of 09:21
ufobat let me refere to one of my first questions again. the speed issue. Grammar::Debugger tells me that i am not using the mentioned token, still the .parse() is much! slower with that token in it. is that "okay" or a bug?
arnsholt The thing some bottom-up algorithms doesn't like is empty productions
jast without knowing anything about the internals, I'd say it's something that could probably be improved on :)
ufobat having all my "wrong" tokens in my grammar without Grammar::Debugger it doesn't parse at all, but with G::D it does
arnsholt But the details of that escape me. It's been ages since I learned about that stuff 09:22
DrForr I'd say it was Grammar::Debugger interfering with your grammar. It modifies the grammar internally to inject debugging code, but that can change the grammar itself as well.
jast I don't know about all of the details either
arnsholt And I haven't had occasion to use them since, these alagorithms being pretty useless for natural languague =)
jast do you do other kinds of NLP, then? 09:23
I mean there are algorithms that can deal with ambiguities in a grammar... not that that makes your statement any less true :} 09:24
ufobat are there other ways of debugging a grammar without modifing it.. maybe an action class with a good sub FALLBACK?
arnsholt jast: I didn't do much parsing (recently left academia and became a developer =), but yeah for grammar-driven parsing you'd use other algorithms 09:25
DrForr ufobat: FWIW I've seen several cases of G::D interfering with existing grammars just as you're describing. I didn't hae the knowledge at the time to try to debug the problem so I stopped using the module and relied on a better test suite.
arnsholt Most notably CKY
jast I haven't done a lot of exotic parsing myself, but for a while I had these crazy ideas about creating a language with syntax that is fully mutable at runtime... 09:26
so I read a lot of papers about... things.
09:26 wamba left
jast ufobat: if all else fails, you could try and involve a few extra pairs of eyes 09:27
DrForr jast: I have a module that does that on a drive somewhere, though it never got around to being completed.
arnsholt jast: "syntax ... fully mutable at runtime" Perl 6 you mean? =D 09:28
jast for extra difficulty my ideas involved static typing
with optional type inference
and I don't really have the patience to actually sit down and implement that with all of the crazy implications, when there are "close enough" languages that already exist 09:29
DrForr ufobat: I understand the idea of just doing black-box testing, but I think you'd be happier with a larger test suite probing just the .parse method - you can add a dynamic variable to dump the test output without having to test the entire find* layer.
jast one example being Perl 6, yes
ufobat okay :-) thanks for all the help and ideas, i am trying to avoid the left recursion first 09:30
DrForr jast: Apple Dylan tried something like that a *long* time ago, albeit not to much success.
lizmat news.ycombinator.com/item?id=13216924 # correction: tadzik's advent post
ufobat DrForr, absolutly! 09:31
jast I gave up on the idea of "fully" mutable after a while, anyway, because if syntax can be freely mutated by any module you use, you can run into nasty conflicts very quickly 09:32
ufobat is there a Test::* module that provides timeouts for methods? because its not fun testing something that goes into a infinite recusion till everything blowes up 09:33
DrForr ufobat: Also, check out github.com/drforr/perl6-ANTLR4/blo...t/03-ast.t for some other ideas. I need to finish rewriting it due to the fact that the code predates the GLR, so please don't take the general case seriously.
ufobat ty!
DrForr ufobat: Oo, good idea. I'm not aware of one, though usually when I'm dealing with a spin-lock like that it's inside the actual parser and not a set of mutually-recursing terms. 09:34
09:35 rindolf joined
DrForr ufobat: Also the grammar itself may be of interest, as it's parsing an XML-like grammar then *generating* a Perl6-like grammar :) 09:36
El_Che you lost me at xml 09:37
goodmorning
09:38 xtreak joined
ufobat morning 09:38
well i need to go back to p5 for work before i cna play around more :-) i am *really* thankful for all the comments on that :) 09:39
DrForr ufobat: Really I don't find that 1;1 translation of grammars works all that well from BNF-PEG, which is one of the deeper reasons why I decided to focus on other parsing tools. 09:40
09:44 espadrine joined
DrForr .tell ufobat PathExpr should probably be reordered as well or rewritten to { <FilterExpr> [ [ '//' | '/' ] <RelativeLocationPath> ]? | <LocationPath> } 09:49
yoleaux DrForr: I'll pass your message to ufobat.
drrho just to test my understanding of TIE/UNTIE in Perl6: 09:50
is it correct that this functionality is covered by subclassing Array, List, Hash, etc. ? 09:51
09:51 AlexDaniel joined
moritz or implementing the Positional / Associative roles, yes 09:52
DrForr .tell ufobat '<MultipyOperator> on term 32 is a tyop for 'MultiplyOperator'. 09:53
yoleaux DrForr: I'll pass your message to ufobat.
09:54 domidumont left
drrho moritz: thx, this is actually REALLY nifty. 09:55
09:56 chris2_ joined 09:57 chris2_ is now known as leah2 10:00 xtreak left
moritz drrho: docs.perl6.org/language/subscripts#Custom_types 10:01
DrForr .tell ufobat { <Step> %% [ '//' | '/' ] } # may improve clarity as well. 10:02
yoleaux DrForr: I'll pass your message to ufobat.
10:03 jonas1 joined 10:06 AlexDaniel left 10:10 Praise joined, Praise left, Praise joined 10:13 mr-foobar left 10:15 bjz left, bjz_ joined 10:16 Vynce joined 10:20 mr-foobar joined, domidumont joined 10:28 aries_liuxueyang joined 10:30 domidumont left 10:37 espadrine left, ocbtec left 10:39 wamba joined
ufobat DrForr, your changes makes the grammar work, within 120sec and 50% memory of my laptop :p 10:40
yoleaux 09:49Z <DrForr> ufobat: PathExpr should probably be reordered as well or rewritten to { <FilterExpr> [ [ '//' | '/' ] <RelativeLocationPath> ]? | <LocationPath> }
09:53Z <DrForr> ufobat: '<MultipyOperator> on term 32 is a tyop for 'MultiplyOperator'.
10:02Z <DrForr> ufobat: { <Step> %% [ '//' | '/' ] } # may improve clarity as well.
DrForr Yay! 10:44
10:45 labster left
ufobat down to 10sec 10:49
DrForr Wow.
mst MULTIPY # map Inline::Python->new, 1..10; 10:51
10:52 TEttinger left, rindolf left
ufobat 0,8sec 10:54
jast that's a difference
10:56 rindolf joined 10:58 ChoHag joined 11:00 dayangkun joined 11:01 wamba left
ufobat DrForr, you were to fast on FB , i'm down to 0.3 11:04
this sounds like a perfect moment for lunch break 11:05
DrForr [Citation added]
11:11 ChoHag left 11:12 ChoHag joined 11:14 perlawhirl joined
timotimo mst: doesn't python have some global state that'd mess up your multipys? 11:14
mst timotimo: DrForr's the one with the MultipyOperator, presumable he's got an overload that fixes that :D 11:15
DrForr Aroo?
timotimo oh, i get it :)
samcv mmm eggnog. tastes like Perl 6 :) 11:17
mst DrForr: <+yoleaux> 09:53Z <DrForr> ufobat: '<MultipyOperator> on term 32 11:18
DrForr Oh. That was ufobat's grammar. Phew, thought I was shanghaid into working on yet another project :) 11:19
11:20 ChoHag left, dayangkun left 11:21 ChoHag joined, wamba joined 11:23 dayangkun joined, Vynce left 11:27 geekosaur left
titsuki_ bisect: my $a = Pointer[int32].new(10); $a.deref.say; 11:28
bisectable6 titsuki_, On both starting points (old=2015.12 new=a962928) the exit code is 1 and the output is identical as well
titsuki_, Output on both points: 04===SORRY!04=== Error while compiling /tmp/dX05SIba0f␤Undeclared name:␤ Pointer used at line 1␤
11:28 dayangkun left 11:29 geekosaur joined
jnthn Needs a `use NativeCall` 11:30
titsuki_ jnthn: thx! 11:31
jnthn m: use NativeCall; my $a = Pointer[int32].new(10); $a.deref.say;
camelia rakudo-moar a96292: OUTPUT«Internal error: unhandled target type␤ in sub nativecast at /home/camelia/rakudo-m-inst-1/share/perl6/sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types) line 5␤ in method deref at /home/camelia/rakudo-m-inst-1/share/perl6/sources/51…»
jnthn And that I've no idea about. :)
titsuki_ jnthn: I see thx. 11:32
11:32 pyrimidi_ left
titsuki_ bisect: use NativeCall; my $a = Pointer[int32].new(10); $a.deref.say; 11:33
bisectable6 titsuki_, Bisecting by output (old=2015.12 new=a962928) because on both starting points the exit code is 1
titsuki_, bisect log: gist.github.com/d12ef28d4f5cd03605...d11a788565 11:34
titsuki_, (2015-12-25) github.com/rakudo/rakudo/commit/07...dc61f84053
11:38 pyrimidine joined 11:42 pyrimidine left 11:45 Actualeyes joined
notviki To those not subbed to Freenode's notices: read info freenode.net/news/PSA-brief-update-infra 11:52
11:52 aries_liuxueyang left
notviki DrForr: so I take it we shall be expecting you to optimize src/Perl6/Grammar.nqp next? :) 11:52
11:53 aries_liuxueyang joined
DrForr And have to rewrite Perl6::Parser? Fat chance :) 11:55
11:56 pyrimidine joined
notviki hm... perl6.wtf update failed... 11:58
+ ./perl6 nqp/MoarVM/tools/parse_coverage_report.p6 --annotations=setting coverage/full-cover gen/moar/m-CORE.setting
Usage:
nqp/MoarVM/tools/parse_coverage_report.p6 [--annotations=<Str>] <file> <source> [<filename>]
m: setting.say 11:59
camelia rakudo-moar a96292: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ setting used at line 1␤␤»
notviki weird
oh
m-CORE.setting is probably CORE.setting now
12:01 pyrimidine left
lizmat notviki: yeah, someone normalized the naming scheme 12:03
notviki MasterDuke did :)
notviki restarts the script
12:06 pyrimidine joined 12:08 domidumont joined 12:10 pyrimidine left 12:13 lukaramu joined 12:15 bjz joined 12:17 domidumont left, Actualeyes left, bjz_ left 12:18 domidumont joined 12:22 mr-foobar left 12:24 pyrimidine joined, mr-foobar joined 12:28 Actualeyes joined, pyrimidine left 12:32 thayne left 12:34 pyrimidine joined 12:39 pyrimidine left 12:43 pyrimidine joined 12:48 pyrimidine left 12:49 mscha joined
mscha m: my $r = ^42; .say for $r.min, $r.max, $r.minmax; # I know this works as documented, but it's not very dwimmy. 12:50
camelia rakudo-moar 99e33f: OUTPUT«0␤42␤(0 41)␤»
12:52 pyrimidine joined
mscha Wouldn't it be better if ($r.min, $r.max) would be the same as $r.minmax, and have something like $r.lower and $r.upper that do what $r.min and $r.max do now? 12:52
lizmat mscha: please rakudobug this, so it will not fall through the cracks 12:53
12:57 pyrimidine left 13:02 espadrine joined
jnthn It may well be more useful that way it is. 13:02
13:02 pyrimidine joined
jnthn m: (1, 5, 3).minmax 13:02
camelia ( no output )
jnthn m: say (1, 5, 3).minmax
camelia rakudo-moar ece2c6: OUTPUT«1..5␤»
jnthn Consistent with "what are the min and max within the list this expands to" 13:03
Though...
m: say ^42 .minmax.WHAT 13:04
camelia rakudo-moar ece2c6: OUTPUT«===SORRY!===␤Method call must either supply a name or have a child node that evaluates to the name␤»
jnthn m: say (^42).minmax.WHAT
camelia rakudo-moar ece2c6: OUTPUT«(List)␤»
jnthn m: say (1, 3, 5).minmax.WHAT
camelia rakudo-moar ece2c6: OUTPUT«(Range)␤»
jnthn That's odd.
mscha Yes, I like minmax the way it is; I just think that (^42).max == 42 is wrong. (Should be 41, and something like .upper should be 42.) 13:05
13:07 pyrimidine left 13:20 andrzeju_ left
notviki s: ^42, 'max', \() 13:20
SourceBaby notviki, Something's wrong: ␤ERR: Unhandled exception: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp' (from 'gen/moar/main.nqp')␤ at <unknown>:1 (/home/zoffix/services/sourceable/building-perl6/perl6.moarvm:<dependencies+deserialize>)␤
13:20 pyrimidine joined
notviki s: ^42, 'max', \() 13:21
SourceBaby notviki, Something's wrong: ␤ERR: Unhandled exception: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp' (from 'gen/moar/main.nqp')␤ at <unknown>:1 (/home/zoffix/services/sourceable/building-perl6/perl6.moarvm:<dependencies+deserialize>)␤
notviki -_-
13:21 andrzeju_ joined
notviki stupid robot 13:21
It probabably just fails to check $!exclude-max thing 13:22
m: say (1..5).max
camelia rakudo-moar ece2c6: OUTPUT«5␤»
notviki m: say (1..^5).max
camelia rakudo-moar ece2c6: OUTPUT«5␤»
notviki m: say (1^..5).min
camelia rakudo-moar ece2c6: OUTPUT«1␤»
13:22 mr_ron joined
notviki s: ^42, 'max', \() 13:22
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/5d08....moarvm#L1
notviki 0.o
that's... weird 13:23
m: (^42).^lookup('max' 13:24
camelia rakudo-moar ece2c6: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> 3(^42).^lookup('max'7⏏5<EOL>␤»
notviki m: (^42).^lookup('max').file
camelia ( no output )
notviki m: (^42).^lookup('max').file.say
camelia rakudo-moar ece2c6: OUTPUT«/home/camelia/rakudo-m-inst-1/share/perl6/runtime/CORE.setting.moarvm␤»
notviki bisect: (^42).^lookup('max').file.say
bisectable6 notviki, Bisecting by output (old=2015.12 new=5d084a7) because on both starting points the exit code is 0
notviki, bisect log: gist.github.com/f576db123a34f3c07f...8a621ae1b5
notviki, (2016-03-02) github.com/rakudo/rakudo/commit/fd...7e379b5038
13:25 pyrimidine left
notviki oohhhhh 13:25
There's no bug.
mscha: .min/.max on ranges indicate their min/max points. The whether or not the end points are excluded is a separate (and surprisingly private) attribute 13:26
Ah, there are methods for them excludes-min
m: my $r = ^42; dd [ $r.max, $r.excludes-max ] 13:27
camelia rakudo-moar ece2c6: OUTPUT«[42, Bool::True]␤»
mscha I know, but it's very undwimmy that minmax gives different values than min and max.
notviki umm.... but you just said you liked minmax :P
[Coke] japhb: less code, less time building docs.
notviki s: ^42, 'minmax', \() 13:28
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/5d08...ge.pm#L638
notviki 0.o
m: sink ^42 .minmax
camelia ( no output )
mscha Yes, I think the dwimmy thing would be: (^42).minmax == (0,41), (^42).max == 41, (^42).upper == 42.
notviki huh 13:29
13:29 Praise left
notviki mscha: but 41 isn't max 13:29
m: say 41.5 ~~ ^42
camelia rakudo-moar ece2c6: OUTPUT«True␤»
mscha notviki: it is according to minmax.
notviki mscha: well, it's broken, I see in the code it's supposed to return a Failure
13:30 pyrimidine joined
mscha m: say (^42).is-int; 13:30
camelia rakudo-moar ece2c6: OUTPUT«True␤»
mscha “If the Range is an integer range (as indicated by is-int), then this method returns a list with the first and last value it will iterate over (taking into account excludes-min and excludes-max). If the range is not an integer range, the method will return a two element list containing the start and end point of the range unless either of excludes-min or excludes-max are True in which case a Failure is returned.” 13:31
13:31 Praise joined, Praise left, Praise joined, wamba left
notviki OK, so nothing's broken then 13:32
mscha It behaves as documented, so in that respect nothing is broken, no. 13:33
It's just not very dwimmy.
notviki Well, what's the point of having a third method that does the same thing as the other two?
13:34 perlpilot joined
lizmat notviki: a point could be self-documenting code 13:34
13:35 pyrimidine left
mscha notviki: there already is a third method. ;-) 13:35
m: say (^42).int-bounds;
camelia rakudo-moar 5d084a: OUTPUT«(0 41)␤»
notviki heh
4th method then :P 13:36
13:36 marchelzo joined
notviki m: (^42.2).int-bounds.say 13:36
camelia rakudo-moar 5d084a: OUTPUT«(0 42)␤»
notviki m: (^42.2).minmax.say 13:37
camelia rakudo-moar 5d084a: OUTPUT«Cannot return minmax on Range with excluded ends␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
notviki m: (^42.2).max.say
camelia rakudo-moar 5d084a: OUTPUT«42.2␤»
marchelzo what's the best way to learn perl6
fast
notviki jumps into TARDIS and burns .minmax with fire
marchelzo i want the fast track
mscha m: say (^42).is-int;
camelia rakudo-moar 5d084a: OUTPUT«True␤»
mscha m: say (^42.2).is-int;
camelia rakudo-moar 5d084a: OUTPUT«False␤»
notviki marchelzo: learnxinyminutes.com/docs/perl6/ 13:38
marchelzo why is (^42) an int?
mscha method int-bounds: “Returns a Failure if it is not an integer range.”
[Coke] m: say (^42).WHAT
camelia rakudo-moar 5d084a: OUTPUT«(Range)␤»
notviki marchelzo: it's not
[Coke] ^^
mscha is-int: “Returns True if both end points are Int values.”
notviki marchelzo: is-int is a method on a Range object
marchelzo that is a misleading nme 13:39
name
notviki marchelzo: what would you have called it?
marchelzo is-int-range
notviki >_<
marchelzo endpoints-are-ints
mr_ron m: my \x = 11; say ⅹ; say x; my $Gordian = 1; my $Gordian-I = 2; say $Gordian-I -2; say $Gordian-Ⅰ -2; # confusion between letter x and I and roman numerals for some fonts
yoleaux 15 Dec 2016 20:17Z <nine> mr_ron: Your gist matches what I have lying around here locally
08:45Z <DrForr> mr_ron: I'm back from vacation, ping me re: roman numerals.
camelia rakudo-moar 5d084a: OUTPUT«10␤11␤0␤-2␤»
lizmat remembers an attempt to create a intrange class
13:39 pyrimidine joined
notviki no-thanks-we-like-short-names-I-mean-you're-already-calling-it-on-a-Range-object 13:39
marchelzo so what
there's so much polymorphism in perl6 that doesn't help you much 13:40
for all i know is-int is a method on Mu or Any
mr_ron see www.software-path.com/roman-unicode...ation.html for rendering in more fonts ...
mscha m: my $r = ^42; say $r.minmax; say $r.is-int; say 41.5 ~~ $r; # inconsistent
camelia rakudo-moar 5d084a: OUTPUT«(0 41)␤True␤True␤»
notviki marchelzo: it may help to know Perl 6 before arguing whether we have shitty method names...
mr_ron I think this is really a font issue but wanted some other eyes to take a look. 13:41
marchelzo notviki: why?
i have an even shorter name that would be better 13:42
in-Z
notviki marchelzo: because you'd know we don't have methods for checking whether something is an int so assuming .is-int is a method on a Mu or Any for checking whether something is an Int object (or is it the native int?)
mscha marchelzo: .ℤ 13:43
13:44 pyrimidine left
marchelzo ok, but still, it reads as though you're asking whether the Range is an int. 13:44
not its endpoints
mscha: yeah but that's hard to type
notviki And asking whether Range is an int is SA?D>KJ< LSAHR: BRVEAUOWAIKg:%n &;2S#:qwl 13:45
DrForr mr_ron: Yes, 1 and I can be hard to distinguish, and there are a bunch of different X-looking characters in Unicode. I'm not sure what you're asking or suggesting though.
marchelzo notviki: exactly. so why are you doing it?
having is-int on string that checked /\d+/ would make sense for example, because then the string would literally represent a valid integer. but a range is never an integer. unless maybe the endpoints are both the /same/ integer. 13:46
notviki marchelzo: so you could come here every December and argue about our method names, of course. 13:47
marchelzo ?
notviki I see in 2015 you were arguing about .roll on a Bag being a poor name.
marchelzo haha really?
i don't remember that 13:48
why doesn't perl6 allow ? in method names? allowing - seems like it would pose even more challenges for the parser 13:50
awwaiid '-' has some limited placement rules that help, but it is hard on the parser for sure
mr_ron DrForr: the example tries to show code that looks very similar but gives different numerical results. It seems that nobody is very concerned though. Don't quite understand the use case for Unicode Nl numerals when you have a module that does that. 13:51
I guess it looks neat ...
s/Nl numerals/Nl numbers/
moritz marchelzo: it does, as long as you quote them
jnthn Allowing - in names isn't particularly hard on the parser - at least, it ain't provided you're parsing with a Perl 6 grammar :) 13:52
notviki m: say now - 1
camelia rakudo-moar af1501: OUTPUT«Instant:1482241981.597594␤»
notviki m: say now-1
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ now used at line 1. Did you mean 'not', 'HOW'?␤␤»
notviki :}
moritz marchelzo: but the question could be extend to any number of characters, and the answer is that you get more corner cases the more characters you allow
marchelzo: and - seems to be pretty common as a word separator 13:53
marchelzo ? would save you from the is- prefix
notviki marchelzo: we have .? safe-call operator
jnthn Would also be formally ambiguous with .?foo
awwaiid marchelzo: a prefix '?' does bool coercerion. Yeah, in rubyland they love the '?' ending on method names to eliminate the is- prefixes
moritz and if you try to read the code, your voice goes up to formulate a question after reading the method name, even if the sentence isn't finished
mst awwaiid: I kinda like it from lisps 13:54
awwaiid marchelzo: many of these broad language questions can be summarized as: it was certainly considered and this is what we ended up with so far 13:55
marchelzo jnthn: it wouldn't be ambiguous with .?foo if you only allowed trailing question marks
lizmat marchelzo: github.com/FROGGS/p6-Slang-Piersing
jnthn marchelzo: True. But we aren't going to, at least, not unless you quote it. :)
Or you write a slang, like lizmat linked, to tweak the language to enable it. :) 13:56
marchelzo how do you quote an identifier?
awwaiid lizmat++ # good language tweak link
jnthn With quotes
."foo"()
marchelzo why is that a thing?
notviki doesn't see lizmat linking anything :/
notviki now does 13:57
jnthn m: class C { method ::('m?') { say 42 } }; C.'m?'()
camelia rakudo-moar af1501: OUTPUT«42␤»
jnthn marchelzo: Primarily used to interpolate into the string
awwaiid marchelzo: ."dynamic-$method"()
jnthn For calls with late-bound names
marchelzo i see
13:58 pyrimidine joined
marchelzo but could you do simply .$some-string 13:58
m: class C { method ::('m?') { say 42 } }; my $s = 'm?'; C.$s() 13:59
camelia rakudo-moar af1501: OUTPUT«No such method 'CALL-ME' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
awwaiid m: class C { method ::('m?') { say 42 } }; my $m = 'm?'; C.$m()
camelia rakudo-moar af1501: OUTPUT«No such method 'CALL-ME' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
jnthn marchelzo: That mans something different.
.$code-object() 14:00
awwaiid m: class C { method ::('m?') { say 42 } }; my $m = 'm?'; $real-m = C.^methods.first; C.$real-m()
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$real-m' is not declared␤at <tmp>:1␤------> 3od ::('m?') { say 42 } }; my $m = 'm?'; 7⏏5$real-m = C.^methods.first; C.$real-m()␤»
awwaiid m: class C { method ::('m?') { say 42 } }; my $m = 'm?'; my $real-m = C.^methods.first; C.$real-m()
camelia rakudo-moar af1501: OUTPUT«42␤»
14:03 lucasb joined
DrForr mr_ron: Looking closer I can see that there's some confusion, but having spent time tracking down the creative ways students abuse Unicode I can assure you those are minor :) H*ll, U+10916 PHOENICIAN NUMBER ONE looks like a slash. 14:03
m: say 1𐤖3 14:04
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Bogus postfix␤at <tmp>:1␤------> 3say 17⏏5𐤖3␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ stat…»
14:04 pmurias joined, pyrimidine left
DrForr Hurr, r-to-l lossage? 14:04
notviki It's a No char, it can't be combined with other digits 14:05
DrForr Yeah, just saw that in proprties.
notviki m: say keys <a b c> ∖ <b c> 14:06
camelia rakudo-moar af1501: OUTPUT«(a)␤»
notviki Now THAT looks like slash
mr_ron m: say 3 - Ⅰ; 14:07
camelia rakudo-moar af1501: OUTPUT«2␤»
mr_ron m: say 3Ⅰ;
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Bogus postfix␤at <tmp>:1␤------> 3say 37⏏5Ⅰ;␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ state…»
mr_ron Nl works like No ... planning to document later today I hope 14:08
DrForr But see what notviki just pointed out re: combining.
mr_ron Nd can be combined. No and Nl can't. If there is more to it please explain ... 14:09
14:10 pyrimidine joined
notviki m: (^0x110000).grep(*.uniprop eq "Nl")».chr.say 14:11
camelia rakudo-moar af1501: OUTPUT«(ᛮ ᛯ ᛰ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ Ⅺ Ⅻ Ⅼ Ⅽ Ⅾ Ⅿ ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ ⅹ ⅺ ⅻ ⅼ ⅽ ⅾ ⅿ ↀ ↁ ↂ ↅ ↆ ↇ ↈ 〇 〡 〢 〣 〤 〥 〦 〧 〨 〩 〸 〹 〺 ꛦ ꛧ ꛨ ꛩ ꛪ ꛫ ꛬ ꛭ ꛮ…»
DrForr Probably mentioned in UTR25 re: how numbers combine?
notviki 0.o
mr_ron www.fileformat.info/info/unicode/ca...l/list.htm
notviki m: say ↀ + ↁ + ↂ + ↅ + ↆ + ↇ + ↈ + 〇 + 〡+ 〢+ 〣+ 〤 +〥 +〦 +〧 +〨 +〩 14:12
camelia rakudo-moar af1501: OUTPUT«166101␤»
notviki that's just sick
u: ↈ
unicodable6 notviki, U+2188 ROMAN NUMERAL ONE HUNDRED THOUSAND [Nl] (ↈ)
notviki, U+0020 SPACE [Zs] ( )
notviki u: ↂ
unicodable6 notviki, U+2182 ROMAN NUMERAL TEN THOUSAND [Nl] (ↂ)
notviki didn't even know about these
u: 〢 14:13
unicodable6 notviki, U+3022 HANGZHOU NUMERAL TWO [Nl] (〢)
mr_ron github.com/perl6/roast/blob/da6fde.../numbers.t
14:14 pyrimidine left
dalek c: 6524f06 | (Zoffix Znet)++ | doc/Language/unicode_texas.pod6:
Document Nl digits can be used just like No ones
14:15
synopsebot6 Link: doc.perl6.org/language/unicode_texas
14:16 pyrimidine joined
DrForr m: multi infix:<⁢>($x,$y) {{$x * $y };} say 2⁢3; 14:17
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Strange text after block (missing semicolon or comma?)␤at <tmp>:1␤------> 3multi infix:<⁢>($x,$y) {{$x * $y };}7⏏5 say 2⁢3;␤ expecting any of:␤ infix␤ infix stopper␤ …»
DrForr Wow. Paste buffer screws *that* up royally.
notviki perl6.party/post/Anguish--Invisible...Data-Theft 14:18
m: sub prefix:<⁣> is tighter(&infix:<or>) { say $^a }; ⁣my $x = 42;
camelia rakudo-moar af1501: OUTPUT«42␤»
notviki m: sub infix:<⁣> { $^a + $^b }; say 2⁣2; 14:19
camelia rakudo-moar af1501: OUTPUT«4␤»
DrForr It looks like this though: multi infix:<>($x,$y){$x*$y); say 23; # returns 6.
notviki m: sub infix:<⁣> { $^a + $^b }; say 1⁣2⁣3⁣4⁣5⁣6⁣7⁣8⁣9⁣0; 14:20
DrForr (if you fill in the right character between <> and '2' and '3'.)
camelia rakudo-moar af1501: OUTPUT«45␤»
14:20 pyrimidine left
notviki m: sub infix:<⁣> { $^a * $^b }; say 1⁣2⁣3⁣4⁣5⁣6⁣7⁣8⁣9⁣ == [*] ^9+1; 14:21
camelia rakudo-moar af1501: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Preceding context expects a term, but found infix == instead␤at <tmp>:1␤------> 3{ $^a * $^b }; say 1⁣2⁣3⁣4⁣5⁣6⁣7⁣8⁣9⁣ ==7⏏5 [*] ^9+1;␤»
notviki m: sub infix:<⁣> { $^a * $^b }; say 1⁣2⁣3⁣4⁣5⁣6⁣7⁣8⁣9 == [*] ^9+1;
camelia rakudo-moar af1501: OUTPUT«True␤»
notviki \o/
marchelzo what is $^a
notviki marchelzo: docs.perl6.org/language/variables#...entry-%24^ 14:22
[Coke] any feedback on github.com/perl6/doc/pull/1059? do we need to push it to prod to get feedback? (I'd rather not do that.)
notviki [Coke]: well, that's the only sane way to play with it, isn't it? I'm not waiting an hour to build my own copy of docs 14:23
[Coke] I can build the docs in 5m here (assuming I've done it once before)
so, yikes.
I mean, if you're availble for testing right now, go ahead and pull the trigger? :)
notviki ehehe 14:24
[Coke] I can guarantee it sucks less than the last version, which says not much.
notviki [Coke]: does the browser freeze up when you type "me" into the search box?.
[Coke] notviki: let me double check.
14:24 pyrimidine joined
[Coke] notviki: when building docs locally, turn off syntax highlighting and call htmlify directly (don't need to build bigpage for docs) 14:25
notviki Are you still double checking or.... ? 14:30
[Coke] notviki: "perl6 htmlify --no-highlight" here takes 5m18s 14:31
Just finished.
notviki [Coke]: if you built it before, you said?
I don't have anything built 14:32
[Coke] no; 'me' is super fast here.
notviki OK. Well....
[Coke] notviki: the first time it has to build the type graphs. (another reason I want to kill the hard work there.)
dalek c: b8bd868 | coke++ | / (3 files):
Switch to sift4 for fuzzy searching

Try to avoid some degenerate cases, don't use fuzzy search on small search terms, don't search too deep on fuzzy checks.
c: c8ec3c7 | coke++ | / (16 files):
Merge branch 'master' into coke/levenshtein
c: dd0aa1d | coke++ | xt/trailing-whitespace.t:
This file no longer exists
c: ed11e4a | (Zoffix Znet)++ | / (4 files):
Merge pull request #1059 from perl6/coke/levenshtein

Coke/levenshtein
marchelzo what is the difference between my $a = ... and my @a = ... 14:36
is it just a hint for the parser
to allow things like my @a = 1, 2, 3
[Coke] wonders the easiest way to discover when the latest doc build is done.
m: my $a = 1,2,3;
camelia rakudo-moar 899864: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant integer 2 in sink context (lines 1, 1)␤Useless use of constant integer 3 in sink context (lines 1, 1)␤»
[Coke] m: my $a = (1,2,3);
camelia ( no output )
marchelzo right, is that all it does?
its only significance is in changing the way the expression to the right of the = is parsed? 14:37
14:38 CIAvash left
notviki star: use LWP::Simple; LWP::Simple.get("doc.perl6.org").contains("ed11e4a") and say "It's done!" 14:38
camelia star-m 2016.10: OUTPUT«501 Protocol scheme 'https' is only supported if IO::Socket::SSL is installed <URL:doc.perl6.org/>␤␤ in method request_shell at /home/camelia/star-2016.10/share/perl6/site/sources/2A99795C71C31D3D9A9D39DCFC0379F0F4CDEDC5 (LWP::Simple) line 54␤ …»
notviki >:(
DrForr "it" being the change between $a and @a? I think you've got the wrong end of the stick here. @a and $a is the important bit here, the RHS can have the same text no matter what the LHS is.
[Coke] m: my @a = 1,2,3; # for parity 14:39
camelia ( no output )
marchelzo my @a = 1, 2, 3; is parsed differently than my $a = 1, 2, 3;
[Coke] I am surprised those act differently, actually. :)
marchelzo but is that the only difference
notviki m: my @a = 1; @a.^name.say; my $a = 1; $a.^name.say
camelia rakudo-moar 899864: OUTPUT«Array␤Int␤»
marchelzo yes
but after initialization, they are the same, right? 14:40
my @a = 1, 2, 3; is the same as my $a = [1, 2, 3];
DrForr marchelzo: @a and $a are different variables. They're not "the same" in any sense of the word. 14:41
marchelzo right but apart from the names
[Coke] DrForr: well, they're more the same than they are in p5. :)
marchelzo the fact that it was declared with @ doesn't change its behavior
right?
DrForr One assigns to an array, the other assigns to an array *reference*. 14:42
[Coke] DrForr: um.
marchelzo so in 'my $a = [1, 2, 3];', $a is not an array?
[Coke] m: my @a = 1, 2, 3; my $a = [1, 2, 3]; say @a.WHAT; say $a.WHAT;
camelia rakudo-moar 899864: OUTPUT«(Array)␤(Array)␤»
notviki marchelzo: no, not right.
dalek c: 608dd5c | MasterDuke17++ | doc/Language/performance.pod6:
Fix typo in SQL profile output demo
synopsebot6 Link: doc.perl6.org/language/performance
notviki m: my @a = 1, 2, 3; my $a = [1, 2, 3]; for @a { .say }; for $a { .say }
camelia rakudo-moar 899864: OUTPUT«1␤2␤3␤[1 2 3]␤»
marchelzo notviki: then what is an array reference? 14:43
mscha m: my @a = 1,2,3; my $a = [1,2,3]; say @a.perl; say $a.perl;
camelia rakudo-moar 899864: OUTPUT«[1, 2, 3]␤$[1, 2, 3]␤»
DrForr Sigh.
notviki marchelzo: I don't know. Perl 6 doesn't have references.
m: my @a = 1, 2, 3; my $a = [1, 2, 3]; sub foo (+@a) { dd @a }; foo @a 14:44
camelia rakudo-moar 899864: OUTPUT«[1, 2, 3]␤»
marchelzo so $a and @a differ only in name and how the RHS of their initialization will be interpreted?
notviki m: my @a = 1, 2, 3; my $a = [1, 2, 3]; sub foo (+@a) { dd @a }; foo $a
camelia rakudo-moar 899864: OUTPUT«[[1, 2, 3],]␤»
DrForr "only"... That seems to be pretty darn important to me. 14:45
marchelzo ok but that's wrong apparently
why does $a become [[1, 2, 3],] in that example
notviki Because the array is itemized 14:46
marchelzo itemized
mst m: my $a = [1, 2, 3]; sub foo (+@a) { dd @a }; foo $a
camelia rakudo-moar 899864: OUTPUT«[[1, 2, 3],]␤»
mst m: my $a = [1, 2, 3]; sub foo (+@a) { dd @a }; foo |$a
camelia rakudo-moar 899864: OUTPUT«[1, 2, 3]␤»
DrForr marchelzo: $a doesn't "become" in that example, it's just one of the arguments in the list.
marchelzo yes
DrForr $a is still [1,2,3] in the example, it doesn't turn into [[1,2,3],]. The [..,] is added because $a is one of the arguments in the list. 14:47
dalek c: 6fdea58 | coke++ | html/js/sift4-common.js:
add missing file
[Coke] ^^ that needs to percolate before search will work. :| 14:48
14:48 g4 left
marchelzo what does the + mean in the parameter @a? 14:48
notviki [Coke]: I did magic... 14:50
[Coke]: now it tells me docs.perl6.org/js/levenshtein.js?v=1 is not found
oh nm
[Coke] yes, I removed that.
whew.
got half of it right. thanks for the magic.
notviki oh heh 14:51
Masterduke's commit undid my magic :)
notviki magiks again
Works fine for me (performance-wise) 14:52
14:52 mr_ron left
[Coke] so, short stuff uses the same old mechanism. longer things use sift4, falling back to the old 'contains' logic. so now 'me' and 'starts_with' both work. 14:52
notviki marchelzo: docs.perl6.org/type/Signature#Sing...ule_Slurpy 14:53
And I think this is a more detailed explanation docs.perl6.org/language/functions#...onventions 14:54
14:56 colomon left 14:57 AlexDaniel joined 15:00 Khisanth left 15:02 koma joined
pmurias marchelzo: re $foo."method_name" it's also useful for calling method on objects from other languages 15:04
marchelzo other languages? 15:05
pmurias for example Ruby or Perl 5 15:06
marchelzo: we have modules like Inline::Perl5 and Inline::Ruby 15:07
marchelzo i see
15:09 colomon joined
dalek c: f140dd4 | coke++ | doc/Language/5to6-perlfunc.pod6:
split up 'sem*' header.

resolves #1058
15:12
synopsebot6 Link: doc.perl6.org/language/5to6-perlfunc
15:13 Khisanth joined 15:14 wamba joined, koma left 15:24 kalkin-_ left 15:25 kalkin- joined 15:38 teksteiner left 15:43 skids joined 15:45 jonas1 left 15:48 troys joined, perlawhirl left 15:52 thayne joined 15:54 thayne left 15:56 thayne joined
tadzik ahhah 15:57
I had a custom-drawn My Little Pony for the advent post contest winner 15:58
notviki ... advent post contest?
tadzik perl6advent.wordpress.com/2016/12/...g-the-gap/ look for [1]
notviki I guess this is where I show that I don't have the stamina to read an advent post daily :) 15:59
tadzik I don't blame you :) 16:00
there's too many cool calendars to keep track sometimes
16:00 thayne left
notviki tadzik: so who drew that, you? 16:01
tadzik nah, a friend who actually can draw :) 16:02
notviki hehe :) 16:03
perlpilot tadzik++ nice voice in that article.
16:04 cognominal joined
notviki I actually wrote some Perl 6 code last night. First time since end of July :) 16:05
Alerter IRC bot for when a timed mission for a rare resource in a game I play shows up: github.com/zoffixznet/warframe-ale...r/alert.p6 16:06
tadzik perlpilot: hehe, thanks :) I first intended it as one little flavour line and then just couldn't contain myself :P 16:07
16:07 cdg joined
notviki
.oO( Santa Claus Magical factory has redshift... is it because it's moving away from us at very fast speed? )
16:21
Nice article, but IME that P5-P6 compat isn't all that nice and shiny. 16:25
For starters, I had to recompile my perl5 with fPIC; I dunno if stock perl5 dists have installed comes with that. 16:26
But also I had some hairpulling when working with Mojolicious's templates where you get Perl 6 objects in Perl 5 land, basically
and, I forget who it was (lead dev of Catalyst?), who had trouble getting his apps to work 16:27
John Napiorkowski. 16:28
jnap_
perlpilot -fPIC should be fairly common IMHO. 16:31
notviki good
timotimo what about -fPIE? :) 16:32
notviki All I know is I run "perlbrew install perl-stable -Duseshrplib" and stuff works. I've no idea what it enables where 16:33
I mean "perlbrew install perl-stable -Duseshrplib -Dusemultiplicity"
notviki looks at timestamp on perl6.wtf 16:35
Seems like the script still didn't make it :(
16:35 wamba left
nine notviki IME distros usually compile with -fPIC. Actually they should compile everything that way, since it's a precondition for ASLR which should be turned on universally but sadly isn't. 16:36
tadzik my system perl has shrplib enabled, and usemultiplicity=define, whatever that means
notviki nine: cool 16:37
16:38 cdg_ joined 16:40 troys is now known as troys_, cdg left
jnap_ notviki: I think nine has done a lot of work around Catalyst / Perl6 integration 16:43
I really don't consider myself dev lead on that, I just fix problems when I spot them, and hopefully without adding new ones :) 16:44
perlpilot jnap_: cat wrangler?
jnap_ I think the biggest issue is the intellectual different between subroutine attributes in Perl5 and Perl6 16:45
perlpilot has no idea who contributes to Catalyst anymore
jnap_ pretty much nobody, I can't seem to find stuff people besides myself are excited about, or make excitement. Help /suggestions welcomed 16:46
nine Well Catalyst usually just works. Last time it's caused me issues was years ago. 16:47
notviki perlpilot: did you enjoy the economy lesson on that grant proposal? :) 16:48
perlpilot more like annoyed by it, but whatever. I said what I wanted to say
jnap_ nine: it definitely works, just I have OCD over a few things :) 16:49
notviki I don't get what the person's point was in that lesson. "The benefits derived from the existence of this book are additive".. well, OK, so what are these supposed benefits?
considering the grant doesn't contribute to book's existence. 16:50
nine jnap_: well, same here. It's just that don't have time to give in to it all that often ;)
16:51 khw joined 16:52 acrussell joined, holli joined 16:53 xiaomiao left
holli sometimes i put a slice of cheese on my head and pretend i'd be a sandwich 16:53
yoleaux 07:38Z <nine> holli: cases like "use Wx::App:from<Perl5>; my $app = Wx::SimpleApp.new;" are exactly why I worked on lexical module loading mentioned in rakudo.org/2016/12/17/lexical-module-loading/ Now that that's out of the way I can improve Inline::Perl5
08:29Z <nine> holli: I now understand the bug in Inline::Perl5 which causes your Wx app to fail. The subclass doesn't exist in Perl 5 and the Perl 5 constructor is called with "Wx::App" as package so $this->can( 'OnInit' ) will return the OnInit of the base class. Fixable but a bit involved.
notviki holli: but sandwiches have cheese in the middle, not top! 16:55
16:55 xiaomiao joined, xiaomiao left, xiaomiao joined
holli there can never be enough cheese and i am totally cheesy 16:56
16:57 troys_ is now known as troys
notviki Sounds like you're better off to put bread on your head then... 16:57
16:58 xiaomiao left
notviki Why do you want to pretend to be a sandwich? 17:01
17:03 xiaomiao joined 17:06 Praise left
japhb notviki: github.com/jonathanstowe/META6 17:07
GAH
notviki: www.foodnetwork.com/recipes/food-ne...ecipe.html
Sandwich classically made with the cheese on top.
17:07 Praise joined, Praise left, Praise joined
notviki But that page calls it "tuna melt", not "tuna sandwich" 17:09
And even the dictionary defined 'sandwich' verb as "to insert between two other things"
japhb notviki: en.wikipedia.org/wiki/Open_sandwich 17:10
17:11 domidumont left
japhb It's possible this is a regional way of using the name, but note that the example on that last wiki page is Norwegian. 17:11
notviki But that wiki page is for "OPEN sandwich" 17:16
en.wikipedia.org/wiki/Sandwich
17:16 lukaramu left 17:17 AlexDaniel left
notviki :/ 17:25
The email from Kickstarter asking how I want to receive drafts of the book saying "comment here" next to a link that leads to a Kickstarter page, but if I visit it, it says "for backers only [for $50 etc etc tiers]", even though I'm a backer at $50 tier 17:26
japhb does his best imitation of Kang and/or Kodos: "I SAY IF A HUMAN WANTS TO PUT CHEESE ON TOP OF A SINGLE SLICE OF BREAD AND CALL IT A SANDWICH, IT IS A SANDWICH! ALSO, VOTE FOR SENATOR KA ... BOB DOLE!"
notviki has no idea who either Kang or Kodos is 17:27
japhb Recurring characters on The Simpsons -- an alien couple that takes over the US election in a "Treehouse of Horror" episode, among other things. 17:28
17:29 wamba joined
notviki and the "survey" link just lands me on the kickstarter home page 17:30
Fucking scam this shit is. 17:31
Ah. I was logged in under a wrong account. 17:32
17:34 dakkar left
colomon Probably the only Simpsons episode I quote more often that the Kang / Kodos election is the Cromulent one. 17:35
jonadab has actually never watched an entire Simpsons episode but is familiar with the word "cromulent" from other contexts. 17:36
notviki It's a cromulent word... 17:38
jonadab Yes. 17:40
colomon perfectly cromulent, even
17:40 Actualeyes left
jonadab And even if it's not listed in many dictionaries, the reader can generally glork the general piggandisp. 17:40
17:51 rindolf left 17:54 acrussell left 17:55 pierre_ joined 18:01 domidumont joined
notviki Is there a way to give a sub instead of a block to whatever? 18:08
I mean whenever
m: class { method foo { start react { whenever Supply.interval(.1) sub { rand < .5 and return; say "hi"; } } } }.foo; sleep 1; 18:09
camelia rakudo-moar 0745ae: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3art react { whenever Supply.interval(.1)7⏏5 sub { rand < .5 and return; say "hi"; }␤ expecting any of:␤ block or pointy block␤ infix␤ …»
notviki just spotted a bug in code that avoided requirement of the `sub` with `when`, but left the `return` in :o
m: class { method foo { start react { whenever Supply.interval(.1) { when rand < .5 { say "fail"; return; }; say "hi"; } } } }.foo; sleep 1; 18:10
camelia rakudo-moar 0745ae: OUTPUT«hi␤hi␤fail␤»
notviki ^ with the fail condition being network failure :) so instead of sleeping for 5 minutes and retrying my app would just... stop doing stuff
m: class { method foo { start Supply.interval(.1).tap: sub ($) { if rand < .5 { say "fail"; return; }; say "hi"; } } }.foo; sleep 1; 18:11
camelia rakudo-moar 0745ae: OUTPUT«hi␤hi␤hi␤hi␤fail␤hi␤fail␤fail␤fail␤fail␤»
notviki There's more than one way to skin a class, I s'pose 18:12
18:15 rindolf joined 18:16 kurahaupo left
notviki m: start react whenever Supply.interval(.1) {sub { rand < .5 and say "fail" and return; say "hi" }()}; sleep 1 18:21
camelia rakudo-moar 0745ae: OUTPUT«fail␤hi␤fail␤fail␤fail␤hi␤hi␤fail␤fail␤hi␤»
notviki :)
18:28 dalek left 18:29 dalek joined, ChanServ sets mode: +v dalek
jnthn Since whenever is a loop we should really be able to say `next` in it 18:29
And `last` to unsubscribe to further events
notviki :o
jnthn I can't remember if I actually got around to that
If not, file me an RT :) 18:30
notviki m: start react whenever Supply.interval(.1) { rand < .5 and say "fail $_" and next; say "hi $_" }; sleep 1
camelia rakudo-moar 0745ae: OUTPUT«hi 0␤fail 1␤»
notviki m: start react whenever Supply.interval(.1) { rand < .5 and say "fail $_" and next; say "hi $_" }; sleep 1
camelia rakudo-moar 0745ae: OUTPUT«fail 0␤»
notviki m: start react whenever Supply.interval(.1) { rand < .5 and say "fail $_" and next; say "hi $_" }; sleep 1
camelia rakudo-moar 0745ae: OUTPUT«fail 0␤»
notviki interesting
jnthn: BTW, someone asked a few days back and I wasn't 100% sure... It is OK to have ^ start blocks like that one? The ones that aren't awaited by anything or ones that can be still running when program exits 18:31
'cause in Perl 5 forking willi-nilly leads to zombies and the question was whether that aflicted the start blocks
jnthn It's not forking, it's just scheduling work on the thread pool :) 18:32
notviki OK :)
jnthn The main reason it's not "OK" is that start returns a Promise
And any errors will break that Promise
But if nothing cares...you'll silently ignore errors
(Unless you've a CATCH) 18:33
But in terms of leaks, no, there's not an issue
japhb
.oO( If a Promise errors in sink context and there's no block there to CATCH it .... )
jnthn :) 18:34
Xliff Vat is "sink context"?
notviki m: 42
camelia rakudo-moar e8573e: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant integer 42 in sink context (line 1)␤»
Xliff Is that something like "$a + 2"
18:34 FROGGS joined
notviki Xliff: do you know Perl 5? It's like void context in there 18:35
Xliff OK, so the output of an expression that goes nowhere?
notviki yeah
Xliff kk
geekosaur sink context means you used an expression in a context where it will be ignored
Xliff notvikiZoffixBot++
geekosaur ...where its value/result will be ignored
jnthn We have pondered whether sinking a Promise should do something like .then({ .status == Broken && .cause.rethrow })
japhb Was that the royal we?
jnthn Pretty sure TimToady has suggested it at some point as well as me. :-) 18:36
18:36 pierre_ left
jnthn So, only if you think we're royalty :P 18:36
notviki :)
japhb And yeah, I'd like that, as long as there's a decent way to silence it on purpose (quietly?)
18:37 mscha left
jnthn m: class C { method sink() { say 'here' } }; C.new; 18:37
camelia rakudo-moar e8573e: OUTPUT«here␤»
jnthn m: class C { method sink() { say 'here' } }; quietly C.new;
camelia rakudo-moar e8573e: OUTPUT«here␤»
jnthn Alas no :)
japhb I find that in my concurrent code, the biggest problem I have during development is figuring out what exactly happened in some dead subtask.
notviki m: class C { method sink() { say 'here' } }; $ = C.new; 18:38
camelia ( no output )
jnthn japhb: Did the recentish improvements that made an unhandled broken Promise display both the stack trace of the point of the cause *and* the point the result was obtained help at all? 18:39
notviki I notice the location is missing in those. 18:40
m: await start { die "what went wrong" }
camelia rakudo-moar e8573e: OUTPUT«===SORRY!===␤what went wrong␤»
jnthn o.O
m: await start { die "what went wrong" }; CATCH { default { say .WHAT } } 18:41
camelia rakudo-moar e8573e: OUTPUT«(AdHoc+{Broken})␤»
jnthn wat, it even went and attached the correct info do it
japhb jnthn: Yes, although I would sometimes see the same backtrace in both cases. I don't offhand recall what mode those cases special.
jnthn m: await start { die "what went wrong" }; CATCH { default { .say } }
camelia rakudo-moar e8573e: OUTPUT«Tried to get the result of a broken Promise␤ in block <unit> at <tmp> line 1␤␤Original exception:␤ what went wrong␤ in block at <tmp> line 1␤␤»
jnthn Why on earth does it say SORRY rather than showing that? :/
The .gist is even correct 18:42
japhb Actually, I've seen that a lot
jnthn I'm sure it didn't do that when I originally added it :(
japhb Nodnod
jnthn wonders where it's deciding it's compile time... 18:43
notviki m: await start { die "what went wrong" }; CATCH { default { say .backtrace && .backtrace.is-runtime } }
camelia rakudo-moar e8573e: OUTPUT«False␤»
japhb puts a bet on "It actually decides it's not not compile time"
notviki m: await start { die "what went wrong" }; CATCH { default { say .backtrace } }
camelia rakudo-moar e8573e: OUTPUT«Backtrace.new␤»
notviki m: await start { die "what went wrong" }; CATCH { default { say so .backtrace } }
camelia rakudo-moar e8573e: OUTPUT«True␤»
jnthn m: await start { die "what went wrong" }; CATCH { default { say .backtrace.is-runtime } } 18:44
camelia rakudo-moar e8573e: OUTPUT«False␤»
notviki Looks like it's just looks that it's not is-runtime backtrace here: github.com/rakudo/rakudo/blob/nom/...on.pm#L345
jnthn Odd
notviki m: BEGIN %*ENV<RAKUDO_EXCEPTIONS_HANDLER>='JSON'; await start { die "what went wrong" }; 18:45
camelia rakudo-moar e8573e: OUTPUT«{␤ "X::AdHoc+{X::Promise::Broken}" : {␤ "payload" : "what went wrong",␤ "message" : "what went wrong",␤ "result-backtrace" : " in block <unit> at <tmp> line 1\n"␤ }␤}»
notviki neat
jnthn m: await start { die "what went wrong" }; CATCH { default { say .backtrace.full } } 18:47
camelia rakudo-moar e8573e: OUTPUT« in method throw at SETTING::src/core/Exception.pm line 63␤ in sub die at SETTING::src/core/control.pm line 179␤ in block at <tmp> line 1␤ in block at SETTING::src/core/Promise.pm line 175␤ in block at SETTING::src/core/ThreadPoolScheduler.…»
jnthn m: await start { die "what went wrong" }; CATCH { default { say .backtrace.full ~~ /THREAD-ENTRY/ } }
camelia rakudo-moar e8573e: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter - (must be quoted to match literally)␤at <tmp>:1␤------> 3default { say .backtrace.full ~~ /THREAD7⏏5-ENTRY/ } }␤Unable to parse regex; couldn't find final '/'␤at <tmp>:1␤------> 3efaul…»
jnthn m: await start { die "what went wrong" }; CATCH { default { say .backtrace.full ~~ /THREAD\-ENTRY/ } }
camelia rakudo-moar e8573e: OUTPUT«Nil␤»
notviki jnthn: maybe this Backtrace.new needs the runtime attr set? github.com/rakudo/rakudo/commit/ab...9dcb11R129 18:51
or "something" set
m: Backtrace.new.is-runtime.say
camelia rakudo-moar e8573e: OUTPUT«True␤»
notviki oh :| never mind
jnthn It's pretty odd 18:52
The nqp::backtrace output is actually missing things I'd expect to see
oh wait, no it's not
I misread
m: say (anon sub foo()).name
camelia rakudo-moar e8573e: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3say (anon sub foo()7⏏5).name␤ expecting any of:␤ new name to be defined␤»
jnthn m: say (anon sub foo() { }).name
camelia rakudo-moar e8573e: OUTPUT«foo␤»
notviki bets $5 it's the `but` operator 18:53
s: &infix:<but>
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/e857...ors.pm#L47
notviki s: Mu, 'clone' 18:54
SourceBaby notviki, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Mu, Str); 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␤␤
notviki dammit
s: 1, 'clone'
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/e857...Mu.pm#L625
jnthn Yeah, the last frame nqp::backtrace returns is the THREAD-ENTRY that we're looking for
But somehow it ends up not getting into the post-processed set of Backtrace::Frames
japhb notviki: Need a Mu or \ on that 'thing'? 18:55
notviki committable6: 0c75e5d m: await start { die "what went wrong" }
committable6 notviki, ¦«0c75e5d»: ===SORRY!===␤what went wrong «exit code = 1»
notviki OK, so it wasn't me messing up when I modified .clone :} 18:56
committable6: abf6caf06eb7 m: await start { die "what went wrong" }
committable6 notviki, ¦«2015.12,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10»: what went wrong␤ in block <unit> at /tmp/wHdDa0A1PC line 1␤ «exit code = 1»␤¦«2016.11,2016.12,HEAD»: ===SORRY!===␤what went wrong «exit code = 1»
notviki wat
AlexDaniel, your robot is strange 18:57
committable6: abf6caf m: await start { die "what went wrong" }
committable6 notviki, ¦«2015.12,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10»: what went wrong␤ in block <unit> at /tmp/wi98JHSSpx line 1␤ «exit code = 1»␤¦«2016.11,2016.12,HEAD»: ===SORRY!===␤what went wrong «exit code = 1»
lucasb committable6: abf6caf06eb7 await start { die "what went wrong" }
committable6 lucasb, ¦«2015.12,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10»: what went wrong␤ in block <unit> at /tmp/FeJTyfHcXJ line 1␤ «exit code = 1»␤¦«2016.11,2016.12,HEAD»: ===SORRY!===␤what went wrong «exit code = 1»
jnthn Since we're losing the last frame it smells a tad off-by-one-ish
lucasb jnthn: github.com/rakudo/rakudo/commit/ab...80e5efecbf 18:59
notviki lucasb: that's teh commit that added better error messages :) 19:00
lucasb bisectable6 pointed to it
ahh :)
notviki m: sub (\a) {}(Mu) 19:01
camelia rakudo-moar e8573e: OUTPUT«Type check failed in binding to a; expected Any but got Mu (Mu)␤ in sub at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
notviki japhb: what do you mean by "\"?
ohhh. heh, I see the glitch in bot 19:04
It's spots "6c" in the commit SHA and thinks that's all I gave it
japhb notviki: Sorry, braino on my part.
dalek ateverable/zoffixznet-patch-1: fd56f80 | (Zoffix Znet)++ | Whateverable.pm6:
Prevent erroneous identification of a commit SHA as 6.c

To prevent glitches like this: irclog.perlgeek.de/perl6/2016-12-20#i_13774319
19:07
jnthn Ah, I mighta found it. 19:09
notviki \o/ 19:10
0.o 19:12
buggable seems to have dropped off, but I still see it's able to see this channel's log in its terminal output
19:13 Guest91376 left
notviki oh 19:13
Oooohh
I turned on nickname enforser in nickserv that's why
jnthn Yay, got a fix
notviki \o/
jnthn spectesting
I guess it could use a test, but I need to cook noms 19:14
Anyone want to task-steal the test writing? :)
notviki Yes, I can. 19:15
19:15 rindolf left
dalek ateverable: 57c735d | (Zoffix Znet)++ | Whateverable.pm6:
Prevent erroneous identification of a commit SHA as 6.c (#84)

To prevent glitches like this: irclog.perlgeek.de/perl6/2016-12-20#i_13774319
19:15
19:15 darutoko left 19:17 SourceBaby left 19:18 Undercover left 19:19 huggable left, buggable joined, ChanServ sets mode: +v buggable, huggable joined, ChanServ sets mode: +v huggable 19:20 SourceBaby joined, ChanServ sets mode: +v SourceBaby, Undercover joined, ChanServ sets mode: +v Undercover
jnthn notviki: Thanks! :-) 19:20
Fix pushed
19:21 rindolf joined 19:25 pierre_ joined
notviki buggable: speed 19:26
buggable notviki, ▃▄▃▃▃▃▄▅▄▄▄▅▃▄▄▃▄▃▅▄▄▄▄▂▂▃▃▂▃▃▃▃▃█▁▁▂▂▁▁▂▁▂▁▂▂▁▁▁▂ data for 2016-11-30–2016-12-20; variance: 6.053s–7.592s
notviki buggable: eco
buggable notviki, Out of 760 Ecosystem dists, 126 have warnings and 0 have errors. See modules.perl6.org/update.log for details 19:27
19:27 sena_kun joined 19:28 dataf3l joined 19:29 pierre_ left 19:30 cdg_ left 19:32 drrho left 19:34 troys is now known as troys_
RabidGravy has is-deeply changed with regard to hashes in the last few weeks? 19:36
I had a dumb test that has just started failing 19:37
19:39 dataf3l left
lucasb Test.pm6 history doesn't show any recent change. do you have an example? 19:41
19:41 dataf3l joined
lucasb ah, there's a5073f9615 "Add Seq candidates to is-deeply to .cache them" 19:41
idk if it's related 19:42
notviki Nope 19:45
And that was awhile back IIRC
19:45 zakharyas left
notviki RabidGravy: we fixed autovivication bug in hash arrays.... 19:46
19:46 dataf3l left
RabidGravy it was a stupid test anyway 19:47
lizmat star-m: my $a; $a[*-0] = 42; dd $a
camelia star-m 2016.10: OUTPUT«Array $a = $[Any, 42]␤»
lizmat m: my $a; $a[*-0] = 42; dd $a
camelia rakudo-moar b8df3a: OUTPUT«Array $a = $[42]␤»
notviki I guess in anything :) 19:48
lizmat yup
19:49 lucasb left, wamba left 19:50 labster joined 19:52 domidumont left 19:53 dataf3l joined 19:55 loveperl joined
loveperl How to know if a variable is not empty? 19:56
moritz define "not empty" please
notviki loveperl: what do you mean by empty?
gfldex m: my $a = 1; say so $a ~~ Empty; 19:57
camelia rakudo-moar b8df3a: OUTPUT«False␤»
loveperl That is not null
notviki loveperl: well, what's full :)
gfldex: that's very confusing :/
gfldex deconfusing link: docs.perl6.org/language/typesystem...efinedness 19:58
RabidGravy m: my $a; say $a.defined
camelia rakudo-moar b8df3a: OUTPUT«False␤»
moritz loveperl: it might be 'with $x { ... }' or 'if $x { ... }' depending on your use case
loveperl: mostly if you want to consider 0 and '' "empty" or not 19:59
notviki m: my $a = Failure.new; say $a.defined
camelia rakudo-moar b8df3a: OUTPUT«False␤»
moritz is 0 null?
gfldex we don't got null
the whole point of the typesystem of Perl 6 is that we don't got a untyped undefined value 20:00
(unless something leaks, what it shouldn't)
loveperl: don't worry. It took me about a year to understand how definedness and containers work. 20:01
That's why I wrote that section of the docs. :)
notviki m: my $a = [1, 2, 3] but class { method ^name ($) { "elems" }; method Real { 0 } }.new; say so $a ~~ Empty; 20:02
camelia rakudo-moar b8df3a: OUTPUT«True␤»
notviki ehehe
gfldex Sir, please put that keyboard down! 20:03
also, that's a ENODOC 20:04
notviki Which part? I'm pretty sure it is doc
gfldex method ^method-name
notviki ah
notviki shrugs
gfldex i will fulltext search
notviki Well, IIRC I added such an example for `but` operator, but I've no idea if it's documented elsewhere
20:05 drrho joined, pmurias left
notviki m: use nqp; class Foo { method ^mro($) { nqp::list } }; Foo.new.^methods(:all).say 20:06
camelia rakudo-moar b8df3a: OUTPUT«()␤»
notviki ehehehe
m: use nqp; class Foo { method ^mro($) { nqp::list } }; Foo.new.^can("elems").say 20:07
camelia rakudo-moar b8df3a: OUTPUT«()␤»
notviki Hm, I wonder if that can be used as a fix for grammar's defauylt Actions class being an Any
gfldex roast seams not to know about `method ^` 20:08
notviki :(
gfldex OMGWTFNOSPEC!!111
notviki It'd need to be checked with jnthn then. Maybe the fact that you can override it like that is a Rakudo-specific thing 20:09
gfldex what means you will have to find a better example
or we need more spec
notviki Yeah, I'll change it
20:13 pierre__ joined
notviki m: my $s = 12 but class Warbles { method hi { 'hello' } }.new; $s.Warbles.hi.say 20:13
camelia rakudo-moar b8df3a: OUTPUT«hello␤»
dalek c: b5ccb5c | (Zoffix Znet)++ | doc/Language/operators.pod6:
Change example with method ^name in it

  'cause it's not specced ATM irclog.perlgeek.de/perl6/2016-12-20#i_13774824
20:14
synopsebot6 Link: doc.perl6.org/language/operators
notviki m: use nqp; class Foo { method ^mro($) { nqp::list } }; grammar { token TOP { <clone> }; token clone { "meow" } }.parse("meow", :actions(Foo)).say 20:15
camelia rakudo-moar b8df3a: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in any !reduce at /home/camelia/rakudo-m-inst-1/share/nqp/lib/QRegex.moarvm line 1␤ in regex clone at <tmp> line 1␤ in regex TOP at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
notviki nope
that was RE "notviki │ Hm, I wonder if that can be used as a fix "
RabidGravy Oooh, the lexical use really messed Sofa up though 20:16
notviki Really? 0.o
RabidGravy all the rest were stupid tests things
there's quite a bit of MOP hackery going on in Sofa 20:17
japhb I'm just wondering how to refer to another package's our variables in the lexical import world. (In particular, if A uses B, how does B refer to A's our variables?) 20:19
20:20 labster left
japhb This comes up with modules like Terminal-Print in which the "main" module uses various submodules to implement pieces of its API, but those submodules need to refer to things defined in the main/parent module. 20:20
20:25 pmurias joined 20:28 cdg joined 20:30 pmurias left, pmurias joined
gfldex m: my $zen = True but False; say $zen; 20:30
camelia rakudo-moar b8df3a: OUTPUT«False␤»
20:31 Tonik joined 20:32 labster joined 20:33 troys_ is now known as troys 20:34 zakharyas joined
arnsholt just tried to write a Perl 5 conditional without braces around the condition 20:40
That's a first =D
Usually it's the other way around
colomon has been doing that routinely for a couple of years now 20:42
RabidGravy yeah I really struggle with it 20:44
colomon I occasionally do it in C++ too 20:45
samcv morning perl 6 20:46
colomon \o
notviki morning?! But I thought it was quitting time already :o
20:47 AlexDaniel joined
colomon notviki: you have quitting time? ;) 20:47
notviki Sure. It's in 2 minutes :) 20:48
20:50 labster left
notviki relocates 20:50
japhb samcv: Still looking for a job? 20:53
samcv yes
japhb I ask because you mentioned being interested in something DevOps-ish, and I was going to try to convince you to apply for Google SRE. :-) 20:54
japhb is an SRE Manager (SRM) at Google in Mountain View
samcv oh cool :)
japhb careers.google.com, just search for SRE 20:56
samcv reading the page now
japhb (y)
moritz uhm, how well does that work, applying through the website without an introduction/reference?
RabidGravy mind this morning I nearly walked out of my job,
japhb moritz: Better if you mention that you know someone on the inside. :-) 20:57
20:57 dataf3l left
japhb Also, SRE is a rarer skill set and interest pool than general SWE, so probably a somewhat smaller pool of applicants (I wouldn't actually know, since I'm not in sourcing or recruiting, that's just a guess.) 20:58
20:59 FROGGS left, pyrimidine left
japhb RabidGravy: That sounds like a pretty sucky morning. :-( 20:59
stmuk_ It's worth doing the SRE interviews just to see how interviews should be done 21:00
21:00 pyrimidine joined
japhb Yeah, that was the first time I can recall *enjoying* my interviews. 21:00
stmuk_ I enjoyed them but fell down at the whiteboard stage 21:01
japhb stmuk_: White board programming is definitely a non-trivial skill. 21:03
RabidGravy a very poor and shallow high level architectural decision had percolated down to me as an article of faith
japhb RabidGravy: *sigh*
stmuk_ they also had a production outage during my interview ;)
japhb stmuk_: Dang. Interviewer was oncall? 21:04
21:04 bjz left, dataf3l joined, pierre__ left
stmuk_ this was a few years back .. several interviewers had to go off 21:04
japhb Yikes, that must have been quite a day. 21:05
21:05 loveperl left, pyrimidine left
stmuk_ they didnt look happy 21:05
21:05 loveperl joined 21:09 pyrimidine joined 21:10 labster joined, labster left, labster joined
AlexDaniel jnthn: hello. “In the meantime, I suggest creating a second scheduler to use for timer (or Proc::Async) events.” – what does it mean exactly? How? Is there any example somewhere? 21:12
RabidGravy you can create a new ThreadPoolScheduler and use .schedule-on on the Supplies to use that one 21:15
or say, Supply.interval can take a scheduler argument 21:17
21:17 troys is now known as troys_
RabidGravy a few of the supply, methods aren't documented as taking a scheduler but do 21:19
AlexDaniel committable6: abf6caf06eb7 m: await start { die "what went wrong" } 21:21
committable6 AlexDaniel, gist.github.com/b602d88634a37bcc35...a2af342c32
jnthn AlexDaniel: You create another one with ThreadPoolScheduler.new 21:22
AlexDaniel: And I think you can pass it to Proc::Async's constructor (or to start, I forget)
So create one of those somewhere to use for Proc::Async
21:23 dataf3l left 21:24 stmuk joined 21:25 committable6 left, pyrimidine left, committable6 joined, ChanServ sets mode: +v committable6, bjz joined
AlexDaniel committable6: abf6caf06eb7 m: await start { die "what went wrong" } 21:25
committable6 AlexDaniel, ¦«abf6caf»: ===SORRY!===␤what went wrong «exit code = 1»
AlexDaniel notviki: thanks
21:26 pyrimidine joined, dataf3l joined 21:27 stmuk_ left 21:31 pyrimidine left
RabidGravy start takes a scheduler 21:36
21:37 pyrimidine joined 21:38 bjz left 21:40 loveperl left 21:41 dataf3l left 21:42 loveperl joined
loveperl How to destroy a variable? 21:43
21:43 dataf3l joined
japhb loveperl: "destroy" in what sense? 21:44
loveperl translate.google.es/#en/es/Somethi...n%20php%3F 21:45
Something like unset in php?
japhb loveperl: Perhaps you are looking for `temp $foo = Any;` or somesuch? 21:48
docs.perl6.org/routine/temp
AlexDaniel loveperl: or maybe just $x = Nil ?
japhb AlexDaniel: I suggested temp because php.net/manual/en/function.unset.php indicates it doesn't change the variable in outside scopes, only the current one. 21:49
AlexDaniel japhb: right
loveperl Something like this but with perl unset($ f ["repeat"]); 21:51
japhb doesn't know what that code would do in PHP
moritz temp $x = Nil ? 21:54
loveperl What I want is to remove an index from a hash 21:55
21:55 pyrimidine left
RabidGravy :delete 21:55
21:55 pyrimidine joined
RabidGravy m: my %f = foo => 1; say %f; %f<foo>:delete; say %f; 21:56
camelia rakudo-moar b8df3a: OUTPUT«{foo => 1}␤{}␤»
21:56 thalunil joined 21:58 thalunil left 21:59 bwisti joined 22:00 pyrimidine left 22:03 cognominal left 22:04 pyrimidine joined 22:09 pyrimidine left, skids left 22:16 troys_ is now known as troys 22:17 zakharyas left
AlexDaniel huggable: xy 22:18
huggable AlexDaniel, nothing found
AlexDaniel huggable: XY
huggable AlexDaniel, nothing found
AlexDaniel :-/
huggable: xy problem
huggable AlexDaniel, You want to do X, but don't know how. You think you can solve it using Y, but don't know how to do that, either. So, you ask about Y in order to solve X, which doesn't make sense. You should ask about X.
AlexDaniel there you go
RabidGravy boom! 22:22
22:22 pyrimidine joined 22:25 TEttinger joined 22:28 RabidGravy left 22:31 pyrimidine left 22:41 pyrimidine joined 22:43 colomon_ joined, rindolf left 22:45 pyrimidine left 22:46 colomon left, colomon_ is now known as colomon 22:47 rindolf joined
samcv AlexDaniel, i ended up making to-json in JSON::Fast 2.8x faster 22:50
so hope my pull gets through
AlexDaniel hmmmmm
samcv by using strings with subst instead of regex
22:50 pyrimidine joined
AlexDaniel samcv: do you think it will make Pastebin::Gist faster? 22:50
samcv maybe
depending on how long it spends in to-json 22:51
but it was 2.9x faster on a 50mb random string
marchelzo samcv: can i see 22:52
samcv yea
github.com/timo/json_fast/pull/17/...11cdd94eR6 22:53
22:54 colomon left 22:55 colomon joined, Tonik left 22:56 cognominal joined
AlexDaniel samcv: hey 22:56
samcv: what about trans?
samcv: isn't it going to be even faster? 22:57
japhb samcv: That first commit (github.com/timo/json_fast/pull/17/...c21161e58) includes a lot of changes to unrelated test files. Would be better with a separate commit for the general cleanups that aren't part of the actual fix. 22:58
23:00 sena_kun left 23:01 cpage_ left
samcv japhb, indeed 23:01
23:01 cpage_ joined
samcv AlexDaniel, what going to be faster 23:01
but yeah it is? 23:02
didn't i say that
AlexDaniel samcv: .trans instead of sequential .subst
maybe, maybe not. Try it?
samcv it can only replace with single characters AlexDaniel
AlexDaniel m: say ‘hello’.trans(‘e’ => ‘really?’) 23:03
camelia rakudo-moar b8df3a: OUTPUT«hrllo␤»
samcv m: 'abc'.trans('a' => 'zzz')
camelia ( no output )
samcv yep
AlexDaniel wait… um…
commit: all say ‘hello’.trans(‘e’ => ‘really?’)
committable6 AlexDaniel, gist.github.com/69f98c65b146f4f4d9...535fdc301c
marchelzo m: say 'abc'.trasn('a' => 'zzz')
camelia rakudo-moar b8df3a: OUTPUT«No such method 'trasn' for invocant of type 'Str'␤ in block <unit> at <tmp> line 1␤␤»
marchelzo T_T
AlexDaniel did you mean trans? :) 23:04
marchelzo m: say 'abc'.trans('a' => 'zzz')
camelia rakudo-moar b8df3a: OUTPUT«zbc␤»
samcv commit: say ‘hello’.trans(‘e’ => ‘really?’)
committable6 samcv, ¦«say»: Cannot find this revision
samcv commit: all ‘hello’.trans(‘e’ => ‘really?’).say
committable6 samcv, gist.github.com/c502932247c44d8053...871e3a4815
samcv bisectable6 ‘hello’.trans(‘e’ => ‘really?’).say
MasterDuke m: say 'abc'.trans(['a'] => ['zzz']) 23:05
camelia rakudo-moar b8df3a: OUTPUT«zzzbc␤»
samcv bisectable6, say 'test'
bisectable6 samcv, On both starting points (old=2015.12 new=b8df3a6) the exit code is 0 and the output is identical as well
samcv, Output on both points: test
samcv chmm MasterDuke so that one worked?
AlexDaniel Yea!!! Yay!
I remember it was working! 23:06
marchelzo samcv: which one didn't work?
23:06 dataf3l left
samcv m: 'abc'.trans('a' => 'zzz').say 23:06
camelia rakudo-moar b8df3a: OUTPUT«zbc␤»
AlexDaniel right, because a pair works differently
m: 'abc'.trans('aby' => 'zzz').say
camelia rakudo-moar b8df3a: OUTPUT«zzc␤»
MasterDuke the docs show examples docs.perl6.org/routine/trans
AlexDaniel MasterDuke++
samcv don't confuse me with the facts MasterDuke
;)
MasterDuke but the docs for trans could use some more explaining 23:07
samcv ^
AlexDaniel MasterDuke: file an issue
samcv also uhm i guess we could just use trans to do every single control character?
AlexDaniel samcv: yes! That's what I was saying :)
MasterDuke samcv: i made the exact same error the first time i tried to use trans
marchelzo write the json parser in C
samcv longgg list
23:07 dataf3l joined
samcv ahh wtf gives. moar is freezing my computer 23:09
23:09 dataf3l left
samcv last time running the same program the computer hard froze 23:09
and i had to force it off
notviki prolly nommed all the RAM and started swapping...
23:10 dataf3l joined
notviki You need... moar... RAM 23:10
:}
samcv unlimited?
23:11 dataf3l left 23:16 loveperl left
AlexDaniel .tell jnthn 「$proc.start(scheduler => ThreadPoolScheduler.new);」 seems to work. What's going to happen if I create a new scheduler for every Proc::Async (just like in the example)? 23:17
yoleaux AlexDaniel: I'll pass your message to jnthn.
23:18 colomon left, wamba joined 23:19 dataf3l joined, troys is now known as troys_ 23:20 rindolf left 23:23 dataf3l left 23:24 colomon joined, Actualeyes joined 23:26 colomon left, colomon joined 23:27 pyrimidine left 23:28 pyrimidine joined 23:32 pyrimidine left
samcv i'm working on getting the docs with highlights things being possible from multiple threads using json. just have to get the perl 6 part to work 23:32
though i think it crashes if using multiple threads far before it gets to the highlighting part 23:33
23:33 colomon left 23:34 Actualeyes left 23:35 pmurias left
samcv nice it works now :) 23:36
23:37 pyrimidine joined 23:39 cdg left
dalek c/highlights: 7ab0b2a | samcv++ | / (4 files):
Use a new CSS file name so we don't have to deal with caching

Also is renamed to be accurate about which highlighter it is designed for.
23:41
c/highlights: 58770cc | samcv++ | h (2 files):
Use JSON to communicate with highlights

This will allow us to use multiple threads by waiting for the results from the correct file to be returned, and not just using the result returned most recently.
23:41 pyrimidine left 23:43 rburkholder joined 23:45 colomon joined 23:52 Actualeyes joined
samcv be back later 23:53
23:54 troys_ is now known as troys
dudz soon as i get paid i'm going to honor my bounced payment for kickstart of the perl6 oreilly book: www.learningperl6.com 23:54
should be later today ^
23:55 pyrimidine joined
notviki dudz: it's author rarelly visits here. You may wish to tweet him instead: twitter.com/briandfoy 23:57
AlexDaniel Hm, I wonder what people think about reversing the arrow direction in our type graphs. If it's not UML anyway, why make it point to the parent?
dudz arh yes
a tweet isn't a pm right, its a public message? 23:59
23:59 dataf3l joined
AlexDaniel notviki: what do you think? 23:59