»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
00:01 colomon joined 00:02 Mso150 joined 00:13 cognome left, cognome joined 00:16 cognome left, cognome joined 00:17 cognome_ joined, cognome left 00:21 xenoterracide_ joined 00:22 cognome_ left 00:26 Hor|zon joined 00:31 Hor|zon left 00:43 kurahaupo left 00:44 cognome joined 00:45 cognome_ joined, cognome left 00:50 cognome_ left 00:53 xenoterracide__ joined 00:54 mls left, mls joined, xenoterracide_ left 01:01 lizmat_ joined, lizmat left 01:08 xenoterracide__ left 01:09 camelia left 01:10 akagi201__ joined 01:13 Sqirrel left 01:18 camelia joined 01:19 ChanServ sets mode: +v camelia 01:26 ezra1 joined 01:28 ezra1 left 01:30 mls left, mls joined 01:44 _slade_ left 01:46 cognome joined 01:50 cognome left 01:55 colomon left 01:58 yeahnoob joined 02:01 colomon joined 02:02 bjz joined 02:11 colomon left 02:13 colomon joined 02:15 chenryn joined 02:16 yeahnoob left 02:17 JimmyZ joined 02:18 kurahaupo joined 02:23 yeahnoob joined 02:27 colomon left, Hor|zon joined 02:32 Hor|zon left 02:33 colomon joined 02:36 aborazmeh joined 02:40 Mouq joined 02:41 Mso150 left
Mouq r: say ::('X').:: 02:43
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!===␤MVMArray: Can't pop from an empty array␤»
..rakudo-parrot 0d1ab2: OUTPUT«===SORRY!===␤QRPA: Can't pop from an empty array!␤»
02:46 cognome joined
Mouq r: say nqp::who(::("X")) # more what I was expecting 02:48
camelia rakudo-moar 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc, "Anon" => Anon, "Assignment" => Assignment, "Attribute" => Attribute, "Augment" => Augment, "Backslash" => Backslash, "Bind" => X::Bind, "Buf" => Buf, "Caller" => Caller, "Channel" => Channel, "Comp" => X::Comp, "Composition" => Compos…»
..rakudo-parrot 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc, "Anon" => Anon, "Assignment" => Assignment, "Attribute" => Attribute, "Augment" => Augment, "Backslash" => Backslash, "Bind" => X::Bind, "Buf" => Buf, "Caller" => Caller, "Comp" => X::Comp, "Composition" => Composition, "Constructor"…»
02:50 _slade_ joined, noganex_ joined 02:51 cognome left 02:53 noganex left
JimmyZ r: say ::("X").WHO 02:55
camelia rakudo-moar 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc, "Anon" => Anon, "Assignment" => Assignment, "Attribute" => Attribute, "Augment" => Augment, "Backslash" => Backslash, "Bind" => X::Bind, "Buf" => Buf, "Caller" => Caller, "Channel" => Channel, "Comp" => X::Comp, "Composition" => Compos…»
..rakudo-parrot 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc, "Anon" => Anon, "Assignment" => Assignment, "Attribute" => Attribute, "Augment" => Augment, "Backslash" => Backslash, "Bind" => X::Bind, "Buf" => Buf, "Caller" => Caller, "Comp" => X::Comp, "Composition" => Composition, "Constructor"…»
Mouq Oh, huh :P JimmyZ++ 02:56
03:03 JimmyZ_ joined 03:04 JimmyZ left, JimmyZ_ is now known as JimmyZ 03:05 ivanshmakov left 03:18 aborazmeh left 03:20 akagi201__ left
tadzik inhuman waking hours :| 03:25
BenGoldberg r: say ::("X").WHO.sort 03:26
yoleaux 12 Oct 2014 04:46Z <japhb> BenGoldberg: if you're thinking of take-task(), I asked about that after the talk, and jnthn++ explained that it was smarter than he initially let on -- meet-condition sets the condition *without* releasing the method lock, which only gets released at actual method exit, which is when other threads can notice the condition was met.
camelia rakudo-moar 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc "Anon" => Anon "Assignment" => Assignment "Attribute" => Attribute "Augment" => Augment "Backslash" => Backslash "Bind" => X::Bind "Buf" => Buf "Caller" => Caller "Channel" => Channel "Comp" => X::Comp "Composition" => Composition "Cons…»
..rakudo-parrot 0d1ab2: OUTPUT«"AdHoc" => X::AdHoc "Anon" => Anon "Assignment" => Assignment "Attribute" => Attribute "Augment" => Augment "Backslash" => Backslash "Bind" => X::Bind "Buf" => Buf "Caller" => Caller "Comp" => X::Comp "Composition" => Composition "Constructor" => Constru…»
BenGoldberg Why does moar have '"Channel" => Channel', but not parrot? 03:27
JimmyZ because rakudo doesn't support thread on parrot 03:29
03:31 ivanshmakov joined 03:38 araujo left 03:46 cognome joined 03:50 cognome left 03:51 kaare_ joined 03:52 BenGoldberg left 03:54 cognome joined 03:59 cognome left 04:02 kurahaupo left 04:03 xenoterracide__ joined 04:19 anaeem1 joined 04:22 ghostlin_ joined 04:23 anaeem1 left, anaeem1_ joined 04:28 kyun joined, Hor|zon joined 04:33 Hor|zon left 04:45 xenoterracide__ left, ggoebel1111118 joined 04:46 cognome joined 04:48 ggoebel1111117 left 04:50 cognome left 04:59 chenryn left, [Sno]_ left 05:26 chenryn joined 05:27 ghostlin_ left 05:35 ecocode joined 05:36 pepl joined 05:39 anaeem1__ joined 05:43 anaeem1_ left 05:44 kurahaupo joined 05:46 cognome joined, virtualsue joined 05:50 cognome left 06:00 gfldex joined 06:11 anaeem1__ left 06:12 anaeem1_ joined
sergot mornign o/ 06:21
06:21 chenryn left 06:22 chenryn joined 06:23 ghostlines joined 06:24 bartolin joined
japhb Someone else is awake! :-) 06:24
06:25 gfldex left 06:26 anaeem1_ left, anaeem1 joined
dalek ast: 58ec1cf | usev6++ | S16-filehandles/filetest.t:
Add test for RT #111400
06:26
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=111400
06:27 ghostlines left 06:28 rindolf joined, JimmyZ_ joined 06:29 Hor|zon joined
dalek rl6-bench/stress: a68da1b | (Geoffrey Broadwell)++ | timeall:
Skip runs that failed when computing best times; be braver about pushing failed runs onto timing lists
06:30
06:31 pepl left 06:32 JimmyZ left, JimmyZ_ is now known as JimmyZ
JimmyZ good morning, #hackthoners 06:33
06:34 Hor|zon left 06:35 kaleem joined 06:39 bjz left
japhb o/ JimmyZ 06:41
bartolin .tell brrt wrt 112678, the relevant line is S03:800 (just saw your question in the backlog)
synopsebot Link: perlcabal.org/syn/S03.html#line_800
yoleaux bartolin: I'll pass your message to brrt.
japhb wanders off in the general direction of the venue, though probably making some stops on the way. 06:42
06:43 chenryn left 06:46 cognome joined 06:48 chenryn joined
masak good morning, #perl6 06:50
06:50 cognome left
moritz \o masak, #perl6 06:50
rindolf masak: morning #perl6 06:52
What's up?
masak I'm hoping to blog today about macros. 06:53
saying it here so that the pressure is on :)
timotimo o/
masak by the way, these blog posts will be simple, small, and about one thing. not trying to solve the whole macro business all at once.
their main intended role is as focus for constructive discussion. 06:54
06:56 pepl joined 07:01 Ven joined 07:04 leont joined
Ven o/ 07:04
timotimo what a surprise, it's ven! 07:05
Ven you just wanted to hear me bip, didni't you? eh.
go and prepare so that we don't get late
masak: go go and blog! :) 07:06
07:07 zakharyas joined
leont Morning 07:09
07:13 kjs_ joined 07:19 darutoko joined
Ven o/, leont 07:21
bartolin m: class B { has Int $.x where 0|1 }; my $b = B.new( x => 2 ); say $b 07:24
camelia rakudo-moar 0d1ab2: OUTPUT«B.new(x => 2)␤»
bartolin shouldn't that behave identically to the following:
07:24 mauke joined
bartolin subset ZeroOne of Int where 0|1; class A { has ZeroOne $.x }; my $a = A.new( x => 2); say $a 07:24
m: subset ZeroOne of Int where 0|1; class A { has ZeroOne $.x }; my $a = A.new( x => 2); say $a
camelia rakudo-moar 0d1ab2: OUTPUT«Type check failed in assignment to '$!x'; expected 'ZeroOne' but got 'Int'␤ in block at src/gen/m-CORE.setting:958␤ in method BUILDALL at src/gen/m-CORE.setting:950␤ in method bless at src/gen/m-CORE.setting:939␤ in method new at src/gen/m-COR…»
bartolin (it's from RT #75858) 07:25
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=75858
Ven m: sub f { 1}; sub s { say f }; s; do { my &f = sub { 5 }; s; } 07:26
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!===␤Null regex not allowed␤at /tmp/tIs_MNonV0:1␤------> say f }; s; do { my &f = sub { 5 }; s; ⏏}␤Couldn't find terminator ;␤at /tmp/tIs_MNonV0:1␤------> say f }; s; do { my &f = sub { 5 };…»
timotimo oh hey leont 07:27
i kind of think it may be a good idea to not allow ; as the delimiter of regexes 07:28
Ven m: temp &bar := sub {...};
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/4D7sOnSmSk␤Cannot use bind operator with this left-hand side␤at /tmp/4D7sOnSmSk:1␤------> temp &bar := sub {...}⏏;␤ expecting any of:␤ argument list␤ …»
Ven ^ this is from s06
07:28 virtualsue left
TimToady commuting & 07:30
(we have ncw10)
timotimo .o( we have nwc10 and we are not afraid to use it ) 07:31
07:35 kjs_ left
mauke hello from ncm 07:36
Ven \o
07:39 Ven left, azawawi joined
timotimo leont: we are about to go to breakfast; you're probably already there? 07:41
07:44 pecastro left
masak is disappointed that (a) moritz.faui2k3.org/tmp/profile-to-j...#callgraph doesn't activate the right tab, and (b) it's not actually a graph, it's a series of tubes^Wlinks in a table leading to more tables 07:45
leont timotimo: not yet, will be there soon 07:46
07:46 cognome joined
masak also, there isn't an obvious way to go back up the tree. like the '..' directory movement. 07:47
I'm fully aware that this is a "patches welcome" situation, so... 07:48
m: my @a = [<a m c>], [<d e f>], [<g h i>]; say "slicing -- @a[*;1].join()!" 07:49
camelia rakudo-moar 0d1ab2: OUTPUT«slicing -- meh!␤»
masak ;)
07:50 rurban joined 07:51 cognome left, abraxxa joined 07:53 chenryn left 07:55 _sri left 08:00 lizmat_ left 08:01 leont left
moritz ideal would be a click trail, where in step there is a routine name, and two percentages 08:02
percentage of total run time, and percentage of callee's run time
dalek ast: 96c8778 | usev6++ | S32-hash/delete-adverb.t:
Add test for RT #74946
08:04
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=74946
08:04 _sri joined 08:05 _sri left 08:06 chenryn joined 08:07 ghostlines joined, _sri joined
JimmyZ masak: yeah, patches welcome :P 08:12
m: my @a = [<a m c>], [<d e f>], [<g h i>]; say "slicing -- @a[*;1]!" 08:13
camelia rakudo-moar 0d1ab2: OUTPUT«slicing -- m e h!␤»
moritz wow, I didn't know that worked 08:14
masak meh :P
srsly though -- seing S09 land, even a little bit... that's Christmas to me. 08:15
japhb resists breaking into song, for the (great) benefit of the other hackathoners 08:16
masak :)
japhb: it's the thought that counts.
azawawi hi #perl6 08:20
jnthn morning, #perl6 08:21
08:21 Sqirrel joined
moritz \o jnthn 08:21
kyun Good aftrnoon, #perl 08:22
6
08:22 fhelmberger joined
moritz now I can't get Tom Lehrer's Christmas Carol out of my head, and japhb and masak are to blame :-) 08:22
jnthn masak: There *is* a way up the tree, see the breadcrumbs trail.
08:23 lizmat joined
jnthn masak: And the plan for that page is for it to include an icycle graph (upside-down flame graph that doesn't burn :P) 08:23
For now it's plenty useful anyway. :)
08:24 Hor|zon joined
jnthn As for the linking thing - yeah, patches welcome. I looked at the bit of Angular that does those sorts of things and it looked less than intuitive. :) 08:24
08:24 fhelmberger left 08:25 fhelmberger joined, ptc joined 08:26 ptc is now known as Guest31939, Guest31939 left
moritz oh, the breadcrumb path is at the very top 08:27
08:27 Mso150 joined
masak oh -- missed the breadcrum trail 08:28
pmichaud good morning, #perl6
masak pmichaud! \o/
jnthn: ooh, icycle graph. sounds like a job for D3. 08:29
jnthn: and sounds like it could be done during a hackathon sometime.
jnthn masak: Oh, I realized those graphs are just a bunch of cells so you just do it by generating an epic table, with carefully set colspans :)
masak o.O 08:30
jnthn Why make it hard? :)
masak .oO( giveupandusetables.com ) 08:31
jnthn :D
Well, not so much give up as "realize you don't need to use This Year's Hot New Library" to achieve something that ain't all that hard ;)
masak *nod* 08:32
well, don't let me stand in the way of the simple solution :)
jnthn I don't think I'm trendy enough to be a JS developer. :)
08:34 rurban left
nine jnthn: why tables? Seems simpler to use just nested divs: <div id="MAIN" style="width: 200px";><div id="foo" style="float:left; width: 100px"><a href="#foo">foo</a></div><div id="bar" style="float:left; width: 70px"><a href="#bar">bar</a></div><a href="#MAIN">MAIN</a></div> 08:36
CSS: #flamegraph a { display: block; clear: left; } 08:37
08:37 ptc_p61 joined, rurban joined, ptc_p61 left
moritz ... until they start to float because your viewport is too small 08:37
08:38 ptc_p61 joined
nine Oh, making it an icycle graph requires putting the <a>s before the lower level <div>s. 08:38
lizmat timotimo: re irclog.perlgeek.de/perl6/2014-10-12#i_9497281 , yes, I think so. $*EXECUTABLE_NAME is a string
nine moritz: no because the outermost <div> has a fixed width 08:39
moritz: one could also give the widths as percentages to make it flexible.
jnthn nine: 'cus float + line stuff up = suffering every darn time... 08:40
pmichaud r: my @a = <a b c>; my @b = <d e f>; say (@a,@b)[2]; 08:41
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«(Mu)␤»
pmichaud r: my @a = <a b c>; my @b = <d e f>; say (@a,@b)[1];
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«d e f␤» 08:42
08:42 Hor|zon left
pmichaud r: my @b = <d e f>; say (0,2,4,@b,8,@b)[3,4] 08:45
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«d e f 8␤»
pmichaud r: my @b = <d e f>; say (0,2,4,@b,8,@b)[3,4].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«4␤»
08:46 Mso150 left, cognome joined
pmichaud r: say (0,(1,2,3)).elems 08:47
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«2␤»
pmichaud r: say (0,(1,2,3))[0..1].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«2␤»
pmichaud r: say (0,(1,2,3))[0,1].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«2␤»
pmichaud r: say (0,(1,2,3),4)[0..4].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«3␤» 08:48
nine jnthn: still seems simple to me: niner.name/icycles.html
moritz: ^^^
pmichaud r: my @b = (1,2,3); say (0,@b,4)[0..4].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«6␤»
pmichaud r: my @b = (1,2,3); say (0,@b,4)[0,1,2].elems
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«5␤»
08:48 FROGGS left
pmichaud r: my @b = (1,2,3); say (0,(1,2,3),4)[0,1,2].elems 08:48
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«3␤»
08:49 woolfy joined
jnthn nine: Well, if somebody sends in a patch that does it that way then it'll end up that way. ;) 08:49
08:49 dakkar joined
pmichaud r: my @b = (1,2,3); say (0,@(1,2,3),4)[0,1,2].elems; 08:49
nine Percentages seem to work perfectly fine as well.
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«5␤»
pmichaud r: my @b = (1,2,3); say (0,@b).elems; say (0,(1,2,3)).elems; say (0,@(1,2,3)).elems 08:50
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«2␤2␤2␤»
08:50 cognome left
pmichaud r: my @b = (1,2,3); say (0,@b)[0,1].elems; say (0,(1,2,3))[0,1].elems; say (0,@(1,2,3))[0,1].elems 08:50
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«4␤2␤4␤»
pmichaud my brane hurts now :) 08:51
moritz so .elems on a slice flattens
... but only for arrays or lists, not parcels 08:52
pmichaud which is wrong imo :)
moritz did I observe that correctly?
pmichaud: agreed. When it doesn't flatten without the slice, the slice shouldn't make it flatten 08:53
nine jnthn: where can I find the source code to patch?
moritz nine++ # asking the right questions
jnthn nine: github.com/perl6/nqp/blob/master/s...plate.html 08:54
If you work in the NQP build directory it should prefer the one in the repo
08:54 Hor|zon joined
pmichaud of course, rakudo's current response could be implementation bug... I'm just wanting to see if we can decide what the semantic *should* be. 08:56
nine jnthn: thanks. I'll have a look at it in the evening 08:57
08:57 virtualsue joined
pmichaud TimToady: any thoughts on subscripting above? 09:00
TimToady: related question: if .[] on Parcel doesn't flatten, I'm thinking .[] on List shouldn't flatten either
09:01 mls left
mephinet hmm, I just rakudobrew'd, and now get an extra error message on any exception. E.g: 09:01
class Foo { has $.fn is IO::Path; }; Foo.new();
shows the correct error:
use of uninitialized value of type Any in string context in any at src/Perl6/World.nqp:1844
but then follows up with:
Unhandled exception: No exception handler located for warn
with a traceback coming from print_exception
09:01 rurban left
moritz pmichaud, TimToady: so basically the only operation that is left that flattens by default is iteration, right? 09:02
mephinet I can't remember having seen this error message yesterday (while I *definitely* made this error many times yesterday X-)
pmichaud moritz: *no*
iteration doesn't flatten... .map does
moritz mephinet: has $.fn is IO::Path is wrong
09:02 mls joined
moritz mephinet: you likely want has IO::Path $.fn 09:02
mephinet true, thanks for the reminder 09:03
pmichaud moritz: we definitely need to be able to iterate without flattening.
(always have)
moritz pmichaud: ok, I was thinking about for-loops specifically
dalek osystem: 3106776 | paultcochrane++ | META.list:
Add PerlMongers::Hannover to ecosystem

This module is intended as the perl6 version of the equivalent PerlMonger::Hannover perl5 module.
osystem: 61f5e8a | (Tobias Leich)++ | META.list:
Merge pull request #33 from paultcochrane/patch-1

Add PerlMongers::Hannover to ecosystem
pmichaud right, that's a .map
pmichaud that's not general "iteration" :-)
mephinet moritz: thanks!
moritz pmichaud: because that's the standard, user-facing iteration technique
pmichaud well, infix:<...> is a form of iteration, too. 09:04
09:04 jkg left
moritz yes 09:04
and I know that the List.tree implementation also needs a low-level, non-flattening iteration 09:05
pmichaud as do .sort .pick .roll etc
r: say (1,(2,3,4)).max
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«4␤»
pmichaud ouch.
moritz then it would be nice to also have non-flattening iteration exposed to the user, so that they can program the equivalent of built-int functions 09:06
thing.map(:lol, {...}) maybe.
or .lolmap or so
no idea
pmichaud I'm more worried about being able to express "flattening" versus "non-flattening" behaviors in a consistent manner
moritz I'm also worried that currently, you have to memorize whether something flattens or not 09:07
pmichaud I don't like that we have some methods that flatten and some that don't. Worse, we now have differing flattening behaviors for Parcel and List, which used to never be the case.
moritz there doesn't seem to be a good rule of thumb
pmichaud: then we are in violent worry-agreement 09:08
09:08 FROGGS joined, timbunce_ joined
moritz would it be very heritcal to suggest to never flatten implicitly, and always call .flat? 09:09
I know that's a big departure from p5
09:09 Ven joined
moritz but most other programming languages seem to get along fine with that 09:09
pmichaud moritz: well, that's one thing we've been tossing around here
but then this one looks uglyish: (@a,@b).max
moritz ok, slurpies might still flatten 09:10
pmichaud yes, slurpies should flatten, definitely.
moritz (@a, @b).flat.max
not too bad, IMHO
but them I'm not a code golfer
pmichaud moritz: well, it gets weird with:
moritz or
pmichaud (@a,@b).max vs. max @a,@b
moritz another infix operator for , that flattens 09:11
pmichaud that feels very wrongish.
moritz it doesn't, to me
timotimo o/
FROGGS \o
pmichaud and flattening likely needs to be type-based, not constructor-operator based
moritz two different operations, two different operators
pmichaud except I don't think , presently has anything to do with flattening. Unless you're saying one uses something other than ',' to construct a flattening List or Parcel 09:12
japhb moritz: My worries match yours 09:13
moritz pmichaud: that's exactly what I'm saying
pmichaud: iirc, Haskell uses : to concatenate two lists
japhb Why can we not say that .method calls don't flatten, slurpy params do, and the builtins have slurpy params? 09:14
mauke moritz: ++
moritz pmichaud: other than the fact that : is taken (I guess), I wouldn't mind (@a, @b).something to not flatten and (@a:@b).something to flatten
mauke Haskell uses : as cons
09:14 Mouq left
moritz maybe ,, could be flattening list concatenation, or something 09:15
japhb That's an interesting idea
moritz: Would the simple rule I listed above work for you as not having to memorize special cases? 09:16
moritz japhb: yes 09:18
pmichaud we're conjecturing a postfix flattening operator now. I proposed postfix:<@>
moritz (@a, @b)@.something?
TimToady postfix _ would also work, but is as right angles to prefix |
pmichaud moritz: yeah
TimToady *at
moritz TimToady: also postfix _ is ugly for identifiers 09:19
@thingy.blerg\_.sort
what precedence?
TimToady if we required spaces around infix:<|>, we could have a postfix:<|>
but I don't think I want to do that 09:20
09:21 Hor|zon left
FROGGS hah, that is the point where Hor|zon left :P 09:22
TimToady could allow @thingy.blerg._.sort as well, but then only saves 3 chars over .flat
09:22 leont joined
TimToady otoh, I'd really like to know flat context at compile time, and .flat is late bound 09:22
09:23 pecastro joined
moritz and having prefix @ mean flat is out of question? 09:23
pmichaud I don't think that "flat at compile time" is going to quite work, though.
I'm *kind* of okay with prefix @ meaning flat... but it means we need another way to do de-itemization (or just use .list) 09:24
it does make me worry about things where @var is bound to a LoL, too.
because that kinda doesn't flatten
TimToady I think @ only implies Positional
Ven uuuhmmm 09:25
that seems like a rather major change, though 09:26
TimToady I don't think @thingy.blerg.|sort is taken
Ven though I don't really like flattening
pmichaud Ven: you're correct, the shift of .[] from flattening to non-flattening may result in some far-reaching changes
09:27 kjs_ joined
TimToady .|[] 09:27
Ven m: for (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4))) { .say } # iterating flattens as well
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/z9jNE186YU␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/z9jNE186YU:1␤------> , (3, (5, (4, 5), (7, (8, 9)), (3, 4))) ⏏…»
09:27 Hor|zon joined
pmichaud Ven: .map always flattens, yes. 09:27
Ven m: for (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4)))) { .say } # iterating flattens as well 09:28
camelia rakudo-moar 0d1ab2: OUTPUT«1␤2␤3␤5␤4␤5␤7␤8␤9␤3␤4␤»
pmichaud there are iterating forms other than .map that don't flatten
Ven ...right.
I know larry changed .elems to not-flatten recently...
09:28 timbunce_ left
pmichaud well, sometimes. :-) See my examples above. 09:28
TimToady m: (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4)))).deepmap: *.say
camelia rakudo-moar 0d1ab2: OUTPUT«4␤9␤7␤4␤3␤1␤3␤8␤5␤5␤2␤»
Ven I strongly believe that *ONLY* method changing flatten mode (.tree, .item, .list and .lol) should be special
and all the other ones should flatten
09:29 yeahnoob left
TimToady m: say (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4)))).deepmap: *+1 09:29
camelia rakudo-moar 0d1ab2: OUTPUT«2 3 4 6 5 6 8 9 10 4 5␤»
pmichaud Ven: s/.list/.flat/
Ven right.
TimToady m: say (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4)))).deepmap(*+1).perl
camelia rakudo-moar 0d1ab2: OUTPUT«(2, 3, 4, 6, 5, 6, 8, 9, 10, 4, 5)␤»
TimToady uhh 09:30
m: say (1, 2, (3, (5, (4, 5), (7, (8, 9)), (3, 4)))).tree.deepmap(*+1).perl
camelia rakudo-moar 0d1ab2: OUTPUT«(2, 3, (4, (6, (5, 6).item, (8, (9, 10).item).item, (4, 5).item).item).item)␤»
TimToady m: $_ = "food fool foop"; for m:g/(foo)/ {.say} 09:34
camelia rakudo-moar 0d1ab2: OUTPUT«「foo」␤ 0 => 「foo」␤␤「foo」␤ 0 => 「foo」␤␤「foo」␤ 0 => 「foo」␤␤»
TimToady m: $_ = "food fool foop"; for m:g/foo/ {.say} 09:35
camelia rakudo-moar 0d1ab2: OUTPUT«「foo」␤␤「foo」␤␤「foo」␤␤»
pmichaud m: $_ = "dump pump hump"; say m:g/(ump)/.perl
camelia rakudo-moar 0d1ab2: OUTPUT«(Match.new(orig => "dump pump hump", from => 1, to => 4, ast => Any, list => (Match.new(orig => "dump pump hump", from => 1, to => 4, ast => Any, list => ().list, hash => EnumMap.new()),).list, hash => EnumMap.new()), Match.new(orig => "dump pump hump", fr…»
pmichaud m: $_ = "d p h"; say m:g/(\w)/.perl 09:36
camelia rakudo-moar 0d1ab2: OUTPUT«(Match.new(orig => "d p h", from => 0, to => 1, ast => Any, list => (Match.new(orig => "d p h", from => 0, to => 1, ast => Any, list => ().list, hash => EnumMap.new()),).list, hash => EnumMap.new()), Match.new(orig => "d p h", from => 2, to => 3, ast => An…»
TimToady m: if "food fool foop" ~~ rx:g/foo/ {.WHAT.say} 09:37
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/nWykLepH0S␤Adverb g not allowed on rx␤at /tmp/nWykLepH0S:1␤------> if "food fool foop" ~~ rx:g/foo/⏏ {.WHAT.say}␤»
moritz TimToady: there is no rx:g 09:38
TimToady nod
was trying to repro something I thought I remembered, but unsuccessfully
moritz (for the uninitiated, doc.perl6.org/language/regexes#Adverbs talks about why there is no rx:g) 09:39
dalek ecs: ab289f4 | pmichaud++ | S02-bits.pod:
[S02] Remove '$$' and '@$$' fossils, spotted at #apw2014.
pmichaud to bring the channel up to date: last night at dinner I proposed that with some of the other changes being discussed it's likely we can eliminate the Parcel type (and just use List) 09:40
we're kind of investigating that... but more importantly, we need to really get a handle on flattening behavior
because as things stand now .[] on Parcel doesn't flatten and .[] on List does. 09:41
(as well as other strange edge cases)
JimmyZ still doesn't know what is Parcel :P
moritz and I've started to grow fond of parcels :-)
nine +1 for fewer listish types 09:42
JimmyZ +1 too, which always confuses me..
moritz +1 to fewer listisch types, but also +1 to actually having an immutable, list-ish container type 09:43
pmichaud moritz: why immutability, ooc?
moritz pmichaud: because value types can be very handy (for example when used as hash keys, or other identity-preserving operations) 09:44
JimmyZ
.oO(listish can be simpler, since ssa can be simpler ...) :O
pmichaud moritz: well, Parcels are currently "immutable"
but the things they contain are not
(or don't have to be) 09:45
moritz right
pmichaud Is that what you're referring to?
moritz yes, no
the "immutable things can contain mutable things" is another issue
pmichaud I haven't found a place where "immutable list type" is useful (which is why it's plausible to eliminate Parcel)
moritz: so, you want a type where everything in it is immutable
there are four possibilities here: 09:46
moritz pmichaud: yes, but IMHO that's mostly orthogonal to the current discussion
pmichaud 1. a mutable aggregate containing mutable elements (Array)
dalek rl6-bench/stress: c390a4a | (Geoffrey Broadwell)++ | bench:
Add an eager needed to prevent the gather from being entirely too lazy
09:46 cognome joined
rl6-bench/stress: cc141c6 | (Geoffrey Broadwell)++ | bench:
Allow quickstart to be stopped after a particular step, useful for e.g. getting a clean perl6-bench all ready to begin timings without actually building compilers or running benchmarks
pmichaud 2. an immutable aggregate containing mutable elements (Parcel)
moritz (I'd like a general mechanism to have mutability recursively descend into a data structure)
Ven my $a = 'banana'; my $b = 'anna'; say [Z*] ($a, $a).map(*.comb.Bag.values) # how can I make this work? 09:47
pmichaud s/mutability/immutability/ # perhaps?
moritz pmichaud: yes, sorry
Ven m: my $a = 'banana'; my $b = 'anna'; say [Z*] ($a, $a).map(*.comb.Bag.values) # how can I make this work?
camelia rakudo-moar 0d1ab2: OUTPUT«1 3 2 1 3 2␤»
moritz but as long as we don't have that, your 2. is a good first approximation
Ven: what do you want to achieve?
pmichaud moritz: yes, I haven't found any place where that immutability is terribly important (more)
Ven moritz: getting $a.comb.Bag.values Z* $a.comb.Bag.values 09:48
pmichaud knowing that it's fully reified is important, though -- but that can just be an attribute instead of a type
moritz Ven: that looks kinda malformed to me. Bag.values isn't sorted in any way
Ven moritz: I don't want it sorted
TimToady Z requires order
moritz Ven: but Z req.. what TimToady says 09:49
Ven
.oO( Z requires TimToady to speak )
moritz m: say 'aaaabbbccd'.comb.Bag.values for ^5
camelia rakudo-moar 0d1ab2: OUTPUT«4 3 2 1␤4 3 2 1␤4 3 2 1␤4 3 2 1␤4 3 2 1␤»
moritz that looks like an accident :-)
pmichaud anyway, I don't feel as though immutability is an important component of flattening behavior 09:50
moritz pmichaud: I agree, it's not important for flattening
pmichaud 3. a mutable aggregate containing immutable/mutable elements (List)
Ven moritz: I don't understand why it needs order?
nine pmichaud: immutable aggregate containing mutable elements sounds like a tuple in Python. So having such a type helps Python <-> Perl 6 interop.
Ven m: say (1, 3, 2) Z* (1, 3, 2) 09:51
camelia rakudo-moar 0d1ab2: OUTPUT«1 9 4␤»
Ven no order needed?
pmichaud nine: why is the immutable portion important, though?
moritz Ven: well, Bag.values returned (4, 3, 2, 1) here, but it could have just as well returned (4, 1, 2, 3)
pmichaud I mean, what does immutability of the aggregate gain
?
09:51 cognome left
moritz Ven: what's the value of multiplying that with another list? what do you know in the end? 09:51
Ven moritz: that seems very weird. I expect bag(a, b(3), c(2)) to return (1, 3, 2). 09:52
moritz pmichaud: as I said, having something immutable gives you a value type, which makes it much better suited as hash keys
pmichaud (my 4 types weren't orthogonal enough -- I can explain later)
nine pmichaud: I don't know. Seems at least important enough for Python to have a special type for it. From my perspective, it makes round trips of tuples from Python through Perl 6 back to Python possible without any loss.
pmichaud moritz: you mean we would use a Parcel as a hash key?
moritz pmichaud: or for any other operation that values object identity
pmichaud: yes 09:53
TimToady m: say [Z*] (1,3,2), (1,3,2)
camelia rakudo-moar 0d1ab2: OUTPUT«1 9 4␤»
09:53 cognome joined
nine moritz: but for such cases you'd need recursively immutable data structures 09:53
pmichaud exactly
moritz Ven: then your expectations are off. Afaict, bags aren't ordered.
p: say 'aaaabbbccd'.comb.Bag.values for ^5
camelia rakudo-parrot 0d1ab2: OUTPUT«4 3 2 1␤4 3 2 1␤4 3 2 1␤4 3 2 1␤4 3 2 1␤»
Ven no, you'll always get the same result
moritz or is it? 09:54
TimToady only by accident
pmichaud I'm fine if we come up with a immutable aggregate of immutable elements (which we don't presently have), but it's unlikely to be a commonly used type
nine Strange how the discussion turned from reducing the number of listish types to creating new ones...
pmichaud in the sense of I don't think our built-in operations are going to be producing immutable aggregates of immutable elements
nine: my purpose is to get list operations to work. 09:55
moritz pmichaud: fwiw I don't think an immutable container (whether the elements are mutable or not) is essential; I'd just like it for Perl 6 to be easy to build value types
pmichaud nine: that may involve reducing the number of types or increasing them... but I want the result to be reasonably consistent for a newcomer to Perl 6
and sufficiently efficent
moritz so, I'm not going nuclear for preserving parcels, or anything 09:56
(not that I usually go nuclear on anything...)
09:56 kjs_ left
nine pmichaud: a laudable cause. This list stuff and complicated flattening rules made it really difficult for me. 09:56
leont It seem Duraction doesn't really have documentation :-/
pmichaud anyway, at the moment one of the key cruxes of GLR (imo) is getting a handle on flattening behavior
leont Having some kind of abstraction around "give me this in seconds/miliseconds/whatever" would be nice
moritz Ven: S02 says Bag Unordered collection of values that allows duplicates 09:58
10:00 kyun left, denis_boyun_ joined 10:01 _slade_ left 10:09 Hor|zon left
Ven Do we have some kind of "splice"? add an element at some index? 10:09
dalek rl6-bench/stress: 2abd5c7 | (Geoffrey Broadwell)++ | timeall:
Work around recursive reference oops
TimToady m: my @a = <a b d>; @a.splice(2,0,'c'); @a.say 10:10
camelia rakudo-moar 0d1ab2: OUTPUT«a b c d␤»
Ven TimToady++ 10:11
10:13 flaviusb joined 10:16 Hor|zon joined, virtualsue left
dalek ecs: fe47b03 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Change Supply.more to Supply.drip

Nobody really liked "more" anyway. "Drip" sort of signifies the itemness of the things being put in the Supply being tapped. Discussed with
  jnthn++ and pmichaud++
10:18
10:20 TuxCM left
leont That will break a bunch of my code! :-p 10:25
10:25 TuxCM joined 10:26 wollmers joined
Ven isocpp.org/files/papers/N4174.pdf c++ gone crazy 10:29
timotimo it'll have a generous deprecation cycle 10:30
pmichaud yeah, we'll give you until at least the end of today. :) 10:31
FROGGS m: use QAST:from<NQP>; say QAST::Op.new( :op<if> ) # lizmat
camelia rakudo-moar 0d1ab2: OUTPUT«No such method 'gist' for invocant of type 'QAST::Op'␤ in sub say at src/gen/m-CORE.setting:15797␤ in block <unit> at /tmp/lJp8o43zp2:1␤␤»
10:31 JimmyZ left
FROGGS well, 'say'-ing it is probably bogus anyway 10:31
pmichaud r: say Nil.^mro # RT 118717 10:34
camelia rakudo-{parrot,moar} 0d1ab2: OUTPUT«Nil (Iterator) (Iterable) (Cool) (Any) (Mu)␤»
10:34 wollmers left
japhb As requested by Ven, my suggestion for a replacement for 'winner': 'earliest' 10:41
FROGGS bartolin++ 10:43
mephinet To parse XML, which module is the way to go? supernovus/exemel? 10:45
dalek ecs: 83d4beb | TimToady++ | S17-concurrency.pod:
Prefer "emit" to "drip"

  (Also, avoid C<> on verbs that are being used primarily for their meaning,
even if there happens to be a keyword of the same name. The fact we can get away with this means we now have a better verb with the proper valence.)
10:48
Ven Unhandled exception: ctxlexpad needs an MVMContext 10:51
while trying to run perl6-debug
FROGGS mephinet: I am porting XML::LibXML to P6, but for now your have to stick to exemel, aye 10:53
masak I've successfully used exemel. 10:54
nine
.oO( or use XML::LibXML and replace it with the P6 version once that's finished )
pmichaud emi 10:56
emit++ 10:57
timotimo damn you, trigonometry
pmichaud #apw2014 update: consensus here for GLR design is that lists don't flatten by default unless explicitly told to do so. (There may be an exception for .map, .grep, etc.) 11:00
we're trying to come up with a shortcut for .flat -- such as a postfix operator 11:01
moritz sanity++ 11:03
pmichaud++
(everyone involved)++
11:07 virtualsue joined 11:11 TuxCM left 11:12 TuxCM joined 11:17 prevost joined 11:23 chenryn left 11:25 Alina-malina left 11:26 rurban joined, Alina-malina joined
mephinet FROGGS: porting XML::LibXML -> great! 11:31
FROGGS yeah, I'll need it for an XML::Compile port
dalek ast: 109eb14 | usev6++ | S03-metaops/hyper.t:
Add test for RT #77670
11:32
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77670
mephinet nine: you mean, using Inline::Perl5?
nine mephinet: yes.
mephinet I'll give it a try!
11:34 kjs_ joined
moritz Juerd: do you have an traffic figures for feather{1,2,3} ? 11:35
pmichaud can someone that is {feather,docs,perl6.org} aware fix it so that the Synopsis link points to a page that incorporates my commit at github.com/perl6/mu/commit/0b23d38...6453027748 ? 11:38
Or give me instructions as to what I've done wrong or need to do to get the page to update? (It claims to auto-update, but that hasn't happened.) 11:39
11:39 kaleem left
masak hey #apw2014, great to hear about the GLR progress. 11:40
*why* are .map and .grep possible exceptions?
Ven fixed timotimo's JITing of atan2 o/
masak I'm fishing for an answer that sounds like "because the operator is not iffy" 11:41
pmichaud masak: should for @a,@b { .say } flatten or no?
masak pretty sure it should.
pmichaud that kind of implies that .map flattens
Ven yes, it should.
masak yes, got it.
pmichaud as in (@a,@b).map({ .say })
Ven iterating flattens
masak and I agree it should.
pmichaud NONONO
masak :)
pmichaud Please don't equivalence "for" and "iterating" 11:42
masak *nod*
pmichaud: my question isn't "does it make sense" -- I agree it does
pmichaud: my question is "what is the name of the quality .map has that makes it flatten things? can we reify it? is it user-exposed?"
pmichaud masak: I don't have a quick answer to that. (more) 11:43
There's been some speculation about having (...).|foo be a flattening form of foo
TimToady feel free to bikeshed that 11:44
masak the syntax does make sense.
pmichaud er, .|foo is a flattening form of .foo
masak right
TimToady assuming we can have .|"foo" and such as well
masak so it'd mean .flat.foo ?
pmichaud the for (@a,b) { .say } would be equivalent to (@a.@b).|map({.say})
TimToady one could view it as picking the flattening variant of what follows as well
pmichaud which is essentially .flat.map({say}).... but what TimToady++ just said 11:45
which is that someone might be able to define method "|foo" as a (optimized) flattening variant
masak what's the interaction/collision with other dotties? like .?foo and .=foo ?
pmichaud as I said: speculation :)
Haven't considered interaction with other dotties
masak oki 11:46
TimToady was starting to
pmichaud but at some level I'd prefer .flat.?foo to trying to compose them
TimToady certainly before the following in .|"foo"
if it's considered part of the method name, then .?|foo makes more sense than the opposite
masak *nod* 11:47
TimToady .= probably doesn't need flattening
pmichaud there is that.
also, during #apw2014 jnthn++ and I have come up with ways to make sink context much more efficient
TimToady the problem with establing a |foo meme is that it means the opposite if foo is a function 11:48
*blish
moritz I really think that if we remove most autoflattening, then for @a, @b -> $x { ... } shouldn't flatten also, but that we need a very convenient way to make it flatten
TimToady |foo() would flatten the result
moritz s/also/either/
TimToady |for @a, @b -> $x {...} # ducks 11:49
masak hehe, I thought the same :)
TimToady for flat @a, @b maybe
|-> maybe
masak `for flat` sounds entirely doable, and quite self-documenting
TimToady it's a shame that | has come to mean making something _ :)
is kinda long 11:50
11:50 brrt joined
pmichaud r: for flat (1,2),(3,4) -> { .say } 11:50
camelia rakudo-moar 0d1ab2: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot 0d1ab2: OUTPUT«Too many positional parameters passed; got 1 but expected 0␤ in block <unit> at /tmp/tmpfile:1␤␤»
pmichaud I'm worried about the parse
TimToady um, you need a param
moritz |-> wouldn't work nicely for non-pointies
masak right, not `-> {` 11:51
moritz m: for flat (1, 2), (3, 4) -> $x { $x.say }
pmichaud r: for flat (1,2),(3,4) { .say }
camelia rakudo-moar 0d1ab2: OUTPUT«1␤2␤3␤4␤»
rakudo-{parrot,moar} 0d1ab2: OUTPUT«1␤2␤3␤4␤»
masak \o/
pmichaud okay, it works
moritz for @a, @b |{ .say } # hm?
probably ambiguous
pmichaud yeah, I'm worried about that | in operator position
masak votes "we don't need extra syntax, because `for flat` works today"
I'm fine with changing the semantics of for/.map/.grep to not flatten. 11:52
it'll have ecosystem fallout, but we can handle that.
waitwait, what does it mean for the case of `for @a { .say }` 11:53
?
pmichaud forflat @a, @b { .say } # /me ducks 11:54
Ven uugh. It doesn't seem we're going for something that's more consistent
masak that's a pretty natural way to loop over an array. will it go away (have to write `for flat @a` instead) or will it keep working?
pmichaud flatfor @a, @b { .say } # /me ducks again
masak pmichaud: "2003: we removed foreach from the language because it's too long, and unnecessary. 2014: here, use `forflat`" :P 11:55
pmichaud ffor @a, @b { .say }
timotimo can we get an EXPORTHOW category for things that take a blast?
FROGGS flort would be shorter
jnthn timotimo: That's in macro land
masak snatches away all the for loop syntax from #perl6 and hides it in a safe place
timotimo OK
pmichaud masak: I'm writing entirely tongue-in-cheek here :)
masak nodnod
colomon I hate to be slow here (and apologize if I missed this):
TimToady FOR @a, @b {...}
timotimo i actually looked over and he actually has his tongue in his cheeks 11:56
pmichaud yay, Modula III !
colomon What is my @a = 1, 2, 3; .say for @a supposed to print out?
TimToady Fore! @a, @b
colomon (under proposed scheme)
timotimo 4 @a, @b { }
pmichaud colomon++
masak what colomon said. that was also my question above.
timotimo .u loop
yoleaux U+01AA LATIN LETTER REVERSED ESH LOOP [Ll] (ƪ)
U+08AA ARABIC LETTER REH WITH LOOP [Lo] (ࢪ)
U+08EC ARABIC TONE LOOP ABOVE [Mn] (◌࣬)
jnthn ᶠᵒʳ @a, @b { ... } # it's smaller 'cus it's been flattened 11:57
timotimo ƪ @a, @b { }
11:57 Hor|zon left
timotimo ___ @a, @b { } 11:57
FROGGS jnthn--
:P
masak approves of this use of decrement
pmichaud timotimo++ 11:58
11:58 Hor|zon joined
timotimo they are going to take away the flattening nature of using , in a list assignment! :( 11:58
masak o.O
timotimo "for will be the only thing that flattens" 11:59
masak not much of a list assignment without the flattening nature of infix:<,>...
pmichaud TimToady proposes that .for is the flattening form of .map
colomon +1 12:00
masak likes that
jnthn my @a = @b, @c;
pmichaud so for @a,@b { .say } is equivalent to (@a,@b).for({.say})
colomon …. that only helps if we understand what (@a,@b).for({.say}) does. :) 12:01
12:01 kaare_ left
colomon part of the problem I'm having understanding this is it seems to me there are three things here: 12:02
lizmat s/winner/earliest/ ++
masak colomon: it does (@a,@b).flat.map({.say})
lizmat: ooh, missed that. yes earliest++
lizmat it conveys the sense of timing
colomon 1) take array as item
2) flatten array to list of items
3) take array as array, which might contain arrays which are not flattened 12:03
brrt \o
yoleaux 06:41Z <bartolin> brrt: wrt 112678, the relevant line is S03:800 (just saw your question in the backlog)
synopsebot Link: perlcabal.org/syn/S03.html#line_800
colomon except those terms are all wrong, apologies
brrt aha.. thanks bartolin++
brrt had been looking for that for quite some time 12:04
FROGGS moritz: that does not work out on parrot and jvm: github.com/perl6/nqp/commit/cdf463...09d2be2a74
brrt very activity by the way :-)
timotimo brrt: are you with us in spirit? :) 12:05
dalek ecs: 116e309 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
s/winner/earliest/ as suggested earlier today
brrt as much as i can be :-) 12:06
if there's any small thingy i can do, just let me now
know
12:06 pepl left 12:08 virtualsue left
colomon I guess the right way to say what I'm thinking is: 1) don't flatten 2) flatten recursively 3) flatten just the top level 12:08
TimToady 1) .tree 2) .flat 3) .lol (currently) 12:10
colomon wishes he could be there.
masak too
12:11 ptc_p61 left
colomon TimToady: I was just reading S02 on .tree, and I find the examples almost 100% incomprehensible. :( 12:12
12:12 JimmyZ joined
pmichaud colomon: that can be fixed once we get the GLR done 12:13
from discussion here -- note that "one level down" is effectively what arrays do
i.e., elements stored in an Array don't flatten 12:14
brrt maybe we should make a Global Perl Holiday so we can all have a date on which we can all come
dalek kudo/nom: e96d4d6 | jonathan++ | src/Perl6/Metamodel/MethodContainer.nqp:
Fix an out-dated comment.
12:15
kudo/nom: 50ff378 | jonathan++ | src/Perl6/Metamodel/MethodContainer.nqp:
Implement .^lookup('method').

Used to get a method for introspection, as opposed to .^find_method which gets it for invocation (and so might be some closure that, for example, puns a role, takes a lock, etc.)
timotimo i can definitely see how this is useful 12:16
colomon pmichaud: I wasn't so much complaining about the quality of the documentation as my understanding of what the heck is going on.
pmichaud colomon: .tree is a way of itemizing sub-levels of a list 12:17
timotimo all of them rather than just the first level
does lol actually flatten anything that's in the inner lists?
(replace "does" with "is supposed to")
pmichaud no, it defers that decision
colomon from my perspective as a p6 programmer, for me the difficulty has been the times I expect first level flattening and do not get it by default.
I don't think I've *ever* run into case where I actually wanted to flatten recursively. 12:18
FROGGS colomon: the sigil usually tells you
12:27 ilogger2 joined, ChanServ sets mode: +v ilogger2, leont joined
timotimo doesn't "rakudobug@" do that? :P 12:27
12:27 virtualsue joined
Ven m: say (1, (2, ((3)), 10, 20)[3] 12:27
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/3BP8ZAj81v␤Unable to parse expression in parenthesized expression; couldn't find final ')' ␤at /tmp/3BP8ZAj81v:1␤------> say (1, (2, ((3)), 10, 20)[3]⏏<EOL>␤ expectin…»
masak timotimo: no, things can be patches or todos.
Ven m: say (1, (2, ((3)), 10), 20)[3]
camelia rakudo-moar 0d1ab2: OUTPUT«(Mu)␤»
Ven m: say (1, (2, ((3)), 10), 20)[2] 12:28
camelia rakudo-moar 0d1ab2: OUTPUT«20␤»
Ven right.
japhb pmichaud: Following up something I said a few hours ago, the idea that listops flatten and method calls don't: @a.push(@b, @c) results in $(@b) and $(@c) appended to @a, but push @a, @b, @c results in the elements of @b and @c being appended to @a
pmichaud [Coke]: the standard has long been to mark RT tickets with [BUG] or [PATCH], iirc
Ven m: say (my @ = (1, (2, ((3)), 10), 20))[2]
camelia rakudo-moar 0d1ab2: OUTPUT«3␤»
timotimo fair enough; but why don't we have rakudotodo@, rakudopatch@?
i like the sound of rakudotodo
Ven this is indeed surprising..
12:28 muraiki joined
JimmyZ rakudo to do is on roadmap? 12:28
timotimo why is that confusing? it has an @ there and @ flattens
pmichaud timotimo: this is one reason I've wanted to move to github issues :-P
timotimo :) 12:29
pmichaud @ does not mean "flattens", it means "Positional"
Ven yeah...
pmichaud *Array" flattens.
timotimo oh
japhb pmichaud: Is my idea from a couple minutes ago sane?
Ven I expect `for 1, 2 {}` and `for (1, 2){ }` to mean the same
pmichaud about "push"?
timotimo it used to be my impression that i put an @( ... ) around things i want flattened
japhb yes
TimToady @ allows flattening in flat context, $ doesn't
pmichaud japhb: I recognize that interpretation also, but it's not natural to p5 programmers, nor is it what I intuitively expect 12:30
nine japhb: I'd expect push as function and push as method to behave exactly the same.
japhb nine: I'm not wedded to that particular unification, that's all. 12:31
nine japhb: why would a programmer expect a difference there?
pmichaud what should max(@a, @b) produce?
nine japhb: if there's a difference in behavior, it should come from the natural difference between a function and a method.
japhb nine: Because a programmer can be taught a simple rule that is always strictly held.
pmichaud or, sort @a, @b
jnthn Or (@a, @b).max and (@a, @b).sort 12:32
dalek ast: 85bf992 | usev6++ | S03-metaops/hyper.t:
Add test for RT #77668
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77668
PerlJam (simple rules)++
nine japhb: a Perl 6 programmer already has to learn quite a few simple rules. That they're strictly held is what makes this possible at all. Not something that should be used as a free ticket to add more.
Juerd moritz: No. Very little except the few times people put movies in their ~/public_html :) 12:33
moritz: That caused full uplink saturation for hours on end :P
japhb nine: Granted, but currently listop and method form don't have independent value other than TIMTOWTDI. I think it's worth considering this as a real use for the difference. 12:34
timotimo aaaarghhh fix this mess %)
Ven %)
pmichaud (for the channel: I pointed out that one can easily prevent flattening of things by prefix-$ 12:35
nine It seems to me that all we need is a simple and consistent way to specify if someting should be flattened or not and have non-flat be the default, as flattening surprises programmers too often.
japhb BTW, I think this could apply to for @a, @b v. (@a, @b).for
Mouq I've been thinking for a while after we made flattening less common that we need infix:<++>, prefix:<|> everywhere, or both
12:36 pecastro_ joined
Mouq But it looks like everyone has an opinion on this :) 12:36
pmichaud note that for $@a, $@b { .say } doesn't flatten
timotimo huh, infix:<++>?
pmichaud and it's easy to say for @a, $@b, @c which flattens @a and @c but not @b
Ven timotimo: list concat
(stolen from haskell, I take it)
timotimo yeah
but when did that get put into perl6?
Ven flattening suprises everybody except for 5ers, from experience
timotimo maybe we should be using +×+? 12:37
Ven we didn't. we use infix:<,>
timotimo ×x
12:37 brrt joined
Ven m: sub circumfix:<+ +>(**@a) { return @a.flat }; say +1, 2+ 12:37
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/8Cve960vm9␤Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument␤at /tmp/8Cve960vm9:1␤------> +>(**@a) { return @a.flat }; say…»
Ven m: sub circumfix:<+ +>(**@a) { return @a.flat }; say (+1, 2+)
camelia rakudo-moar 0d1ab2: OUTPUT«===SORRY!=== Error while compiling /tmp/AgLPmX6wHp␤Bogus statement␤at /tmp/AgLPmX6wHp:1␤------> +>(**@a) { return @a.flat }; say (+1, 2+⏏)␤ expecting any of:␤ postfix␤ infix stopper␤ …»
Ven :D
Mouq except infix:<,> doesn't actually concat, it makes a new list
Ven Mouq: but @x ,= will flatten 12:38
because list assign
timotimo m: sub circumfix:<× ×>(**@a) { return @a.flat }; say ×1, 2×
camelia rakudo-moar 0d1ab2: OUTPUT«1 2␤»
nine What about: for @foo { } iterating over the elements of @foo, for (@foo) { } iterates once, with @foo being the single item. for @a, @b { } iterates over all items of @a and @b. for (@a, $b) { } iterates twice, with @a and @b being the items respectively
Ven yeah. "superstitious parens" change meaning
pmichaud nine: we don't syntactically distinguish parens
and that really violates the "parens are used only for grouping" rule 12:39
japhb OK, I think I know what was bothering me. The problem is that I really often create chains of cross ops, zip ops, hyper ops, and method calls that end in something that operates on an entire list (grep for map sort etc.), and I find myself pretty much trying various combos getting the amount of flattening I want.
brrt InsufficientDwimException 12:40
pmichaud japhb: in particular, that implies that 104 and (104) are somehow different.
japhb ENOTME
pmichaud er, sorry, timotimo
(nick confusion, need a short break, brb)
timotimo er, what now? me?
nwc10 timotimo: I suspect it's tim-TAB 12:41
timotimo did nwc10 confuse him? is that why he says "nick confusion"?
nwc10 :-) I doubt it
PerlJam sure hopes this discussion means that there is /some/ progress towards the GLR
timotimo there is not no progress
much discussion, not exactly 100% sure where the goal is at the moment 12:42
nwc10 I think that it's moving from UNKOWN UNKNOWNS towards KNOWN UNKNOWNS
Mouq japhb: I have a similar sentiment
PerlJam timotimo: there never was no progress I guess :)
nwc10 (this is not exactly accurate - I think it's more that the necessary conflicting desires needing trade offs have been better identified)
brrt which is really important, by the way 12:43
Mouq japhb: I've also had annoyances trying to assemble lists that I'm giving as arguments to a function in the way that I want
12:43 daxim joined
pmichaud PerlJam: yes, we're making progress on the GLR 12:44
dalek kudo/nom: ba91de3 | jonathan++ | src/Perl6/Metamodel/ParametricRoleGroupHOW.nqp:
Make using role short name for introspection work.

This is decidedly a hack for now; further refactors to parametrics will take the opportunity to clean this up.
12:45
PerlJam pmichaud: good, because I can't tell from here :)
pmichaud the "goal" is what I wrote earlier: We need some consistency in our handling of lists, in a way that enables good performance
12:45 kaleem joined
dalek ast: b9e6b17 | jonathan++ | S26-documentation/why- (3 files):
Switch some .^find_method uses to .^lookup.
12:46
pmichaud part of the "challenge" of GLR is that there are also semantic changes taking place, such as the interpretation of flattening rules and Parcels
dalek kudo/nom: d9246fd | jonathan++ | src/Perl6/Actions.nqp:
Have $a.^foo($b) desugar to $a.HOW.foo($a, $b).

Before it desugared to .dispatch:<.^>, which would in turn pun roles - not to mention be a decent bit more costly and not work out on things that hadn't had their inheritance set up yet. Most patches before this were clearing up things that accidentally relied on the previous way things worked with punning roles.
12:46 pecastro_ left
pmichaud and as I've learned from long experience, once you change any of the fundamental axioms in flattening and laziness, the result cascades throughout the design of Perl 6 12:47
so, since flattening has been changed on Parcel, it implies a lot of changes to how flattening works everywhere else
Mouq jnthn++
pmichaud on the plus side, removing flattening will eliminate a _lot_ of slowness that currently exists
jnthn I'm pretty sure I regressed no spectests with this, but it was some...effort.
pmichaud because there were a lot of places where an argument said "I'm a flattening operator, so I have to flatten whatever inputs are coming in" which adds another level of iteration 12:49
s/argument/operator or function/
japhb pmichaud: That's a pretty strong argument for me to not default-flatten. Because that's default slow, and make the programmer work to do the fast thing. That feels like 'return \@result' in perl5 -- mostly there to avoid passing a bunch of stuff on the stack.
pmichaud japhb: well, it can be made a lot faster (negotiation). I was working on this in 2011 and 2012, but I needed solid answers to "which things flatten and which don't", which is where we are today. 12:50
japhb I prefer that the worker have to add a character to do the slow thing. So I'd rather see prefix-| all over the place than prefix-$, if you see what I mean.
12:50 \00 joined
PerlJam japhb++ 12:50
pmichaud japhb: I fundamentally disagree.
I want to optimize programmer efficiency
japhb \o/ # fundamental disagreement FTW! ... wait, what? 12:51
pmichaud if my programmer has to do more work to achieve the goal because we set the defaults to maximize speed... that's not the tradeoff I want
japhb pmichaud: I think you assume that programmers almost always *want* flattening, so switching the default need would result in more work. I suspect it's closer to 50-50.
12:52 pecastro joined
brrt hmmm 12:52
PerlJam japhb: I think that's the problem. ... Perl wants DWIMy, but in this case the sometimes flattening, sometimes not is confusing. 12:53
masak lizmat: re github.com/rakudo/rakudo/commit/79ac0c7e1c -- does a change like that make a difference in performance? it would seem to me that :exists would get inlined just as much as .exists_key would. the former has the benefit of being what users are expected to use.
Mouq PerlJam: I agree
FROGGS $ perl6-m -e '"VERSION".IO.open(:nl<0>).lines.perl.say' 12:54
("20", "14.0", "9").list
I push that in a few minutes...
PerlJam japhb: which is also why I like they idea of pushing the onus onto the programmar a little bit by requiring an explicit flattening marker (but maybe that's just because I can't divine that appropriate rule that makes sense in all cases. ;-) 12:55
12:56 moukeddar joined
masak jnthn: github.com/jnthn/oo-actors/blob/ma...ors.pm#L60 -- I would have expected something like a super() call there. doesn't `nextsame` work, since Metamodel::ClassHOW is the parent class? 12:56
timotimo i prefer using the $ as a signal, but that's probably a total aside to this conversation
PerlJam Also, isn't the conservative approach to require the programmer be more explicit about flattening? Can't we then relax that requirement as time moves forward and were learn precisely where to relax it? (Assuming that's possible)
masak jnthn: or is that mixing together the inheritance and multi-dispatcher axes? 12:57
moukeddar o/ #perl6
[Coke] (ven doesn't like flattening) I agree with ven. :)
FROGGS hi moukeddar
masak moukeddar! \o/
moukeddar been a long while
masak indeed.
join us in this frenzy of activity that is the APW hackathon! 12:58
jnthn masak: I found some weird behavior there, and I was writing a talk, and I just needed something to work.
PerlJam I don't care one way or the other right now as long as there's something predictably consistent. If implicit flattening is "slow", then erring toward explicit flattening seems sane to me.
masak jnthn: oh, interesting.
moukeddar how you all doing ?
jnthn masak: Generally though, we need to have a bunch more meta-programming tests 12:59
masak jnthn: if you can reproduce it enough to show it on camelia, I can submit it for you. :) limited offer.
moukeddar: doin' fine. busy. turns out being alive is a full-time job.
moukeddar: how's with you?
moukeddar zombification is half the cure then.
masak unfortunately not. 13:00
well, it's a "solution", but...
...it's also a "problem" :P
moukeddar work has been a total torture lately, how problematic are we talking ?
masak at a guess, still problems($work) < problems($zombie) 13:01
moukeddar hmm, looks non-blocking, ship it! 13:02
masak :)
13:02 Hor|zon joined
moukeddar #perl6 always been a busy hive. i like that 13:02
[Coke] pmichaud: I see no need to perpetuate that old standard. 13:03
[Coke] feels like he's skipping a conversation across teh backlog. 13:04
masak moukeddar: but today more than usual.
colomon has no idea what [Coke] is talking about, so maybe he is
13:04 kjs_ joined 13:05 kjs_ left
bartolin [Coke]: but RT marks the ticket as Bug automatically if the subject contains [BUG], doesn't it? like hier: rt.perl.org/Ticket/Display.html?id...xn-1313084 13:05
13:05 kjs_ joined
bartolin *here ;-) 13:05
[Coke] (flattening) I read the desire to some times flatten automatically as "the programmer can't be bothered to remember what their data structure looks like, so we try to do what they `meant` instead of what they said". 13:06
13:07 Hor|zon left
[Coke] bartolin: No one but maybe masak uses the "bug" tag. 13:07
it's only worth recording if we're using it to find tickets.
also, we are better arbiters of what's a bug than the users.
moukeddar what's the hackathon about ? 13:08
dalek kudo/nom: 1e03727 | (Elizabeth Mattijsen)++ | src/Perl6/ModuleLoader.nqp:
Call DYNAMIC when fetching @*INC
kudo/nom: 5902b35 | (Elizabeth Mattijsen)++ | src/core/stubs.pm:
Make sure we do not itemize @ and %
kudo/nom: 36d74f6 | (Elizabeth Mattijsen)++ | src/core/IO/Special.pm:
Some code esthetics
kudo/nom: 9efbece | (Elizabeth Mattijsen)++ | src/core/CompUnitRepo/Local (2 files):
Make sure we have abspath always
Mouq bartolin+++ for all the RT work lately! 13:09
13:11 molaf joined 13:12 petercommand joined
colomon quick blog post on flattening issues: justrakudoit.wordpress.com/2014/10/...-and-such/ 13:15
PerlJam colomon++ 13:18
Ven [Coke]++ # agreeing :P 13:19
PerlJam I wonder if it would help to create a table of listy syntax surprises/annoyances? (like colomon's examples, but more) 13:20
colomon BTW, I keep updating the post as I do experiments here. :) 13:21
13:21 kaare_ joined
TimToady m: say ( [] = (1,2),(3,4) ).perl 13:23
camelia rakudo-moar 0d1ab2: OUTPUT«(timeout)»
dalek p: 058b32e | (Tobias Leich)++ | / (4 files):
set input line seperator because separately

Also, map the nqp::setinputlinesep op on parrot for convenience.
13:24
p: 45b8191 | (Tobias Leich)++ | tools/build/MOAR_REVISION:
bump moar revision
13:25
p: b6a4562 | (Tobias Leich)++ | t/nqp/19-file-ops.t:
nqp::eoffh is only trueish when we read *past* eof

At least, that is the point we can be sure about it.
13:26
13:27 xinming joined
dalek kudo/nom: a2c9c52 | (Tobias Leich)++ | / (2 files):
allow custom newlines for IO::Handle
13:27
kudo/nom: 8b3e8c2 | (Tobias Leich)++ | src/core/IO/Socket/INET.pm:
refactor IO::Socket::INET.get now we got nqp::setinputlinesep
13:28
ast: 2b3bee5 | usev6++ | S (2 files):
Add tests for RT #77338
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77338
Ven I kinda want more of moritz and masak's input on what's going down here :P
moritz has to $work :( 13:29
Ven sorry :P
13:31 travis-ci joined
travis-ci NQP build failed. Tobias Leich 'set input line seperator because separately 13:31
travis-ci.org/perl6/nqp/builds/37826481 github.com/perl6/nqp/compare/3047e...8b32e2a768
13:31 travis-ci left
nwc10 moritz: it's possibly a good time - there are now 8 people round the flipchart figuring out the GLR 13:31
hence most of them aren't on the channel
and it's also not clear at what point it becmoes a singularlity
and collapses
Ven booom
nwc10 and the answer to the problem never reaches us, because it's beyond the event horizon
colomon AFK # life 13:32
moritz nwc10: IME, 8 people is too much for a good design 13:33
but maybe they'll manage, if some of them are mostly quiet listeners
PerlJam moritz: There's probably only 2 or 3 synthesizing a "design" from the conversation :)
nwc10 moritz: I think it's OK 13:34
1 of them is Larry
13:34 chenryn joined
moritz would guess TimToady, pmichaud and jnthn 13:34
nwc10 it's now down to 5 - those 3 + liz + Gloria
moritz those three typically lost me after a while of discussing lists :-)
nwc10 and it's mostly picking holes in each proposed design (or I think it's more, design for the defaults) 13:35
PerlJam nwc10: It sounds like you think you're being reassuring, but ... I dunno about that ;)
nwc10 and it seems as much to be figuring out the correct defintion of the problem to load into TimToady's subconcious
13:35 pepl joined 13:37 virtualsue left 13:41 Hor|zon joined
Ven somebody said TimToady actually knows how to get a consistent design, but he wants people to figure it out by themselves :P 13:41
13:43 pecastro left, kjs_ left 13:45 kjs_ joined
moritz well, knowing how to get there, and being there are two very different things 13:48
cognome or maybe, even god needs prophets to move people :)
geekosaur have you considered that maybe the way to get a consistent design *is* to have people figure it out for themselves? 13:50
brrt i don't really think that's true :-) 13:51
geekosaur "consistent" is not necessarily something that can be handed down from On High
I could build an entirely consistent design that is incompatible with humans. (see: sendmail.cf)
13:52 pecastro joined
geekosaur if you want it to be consistent *and* useable by more than just the original designer, you need more than just said original designer 13:52
13:52 guru joined, guru is now known as ajr_
dalek c: c57800f | Mouq++ | lib/Language/functions.pod:
Talk a little bit about the sub declarator
13:53
JimmyZ
.oO(we need queit listeners here too) :O
Mouq JimmyZ: :9 13:54
13:56 pecastro left 13:59 kjs_ left, kaleem left 14:01 fhelmberger joined, moukeddar left 14:03 pecastro joined 14:05 kjs_ joined 14:06 pdcawley joined 14:08 SamuraiJack joined
TimToady Ven: wasn't me that said that; I know that there's no way to get a consistent design :) 14:10
there is no useful language that is perfectly consistent
14:10 lizmat joined
geekosaur summons Gödel re consistent vs. complete 14:14
dalek ast: 390f04d | jonathan++ | S12-introspection/meta-class.t:
Add a test for RT #121885.
14:15
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121885
geekosaur (not that that is the same or even similar argument, necessarily)
14:23 xinming left 14:25 xinming joined
dalek c: ac2538c | Mouq++ | lib/Language/functions.pod:
Point to the Blocks documentation
14:33
14:34 virtualsue joined 14:41 treehug88 joined 14:43 ptc_p6 joined 14:44 araujo joined
[Coke] wonders if hackathon is still on today or if people are on their way home 14:47
timotimo still on 14:51
14:53 ptc_p6 left
masak wow. 14:54
my blogging software used to take 3 minutes to run.
I just ran it. it takes 12.6 seconds.
I can live with that :>
[Coke] moar power.
masak word. 14:55
lol, I blogged! strangelyconsistent.org/blog/macros...parameters 14:56
sjn lol
how did the hackathon go, btw? 14:57
masak still ongoing, apparently
PerlJam masak: "Don't expect me to stay consistent ..." but ... but ... but ... the title of your blog is "strangely consistent"!
;-)
masak ok, I expect to stay *strangely* consistent 14:58
PerlJam++ # srsly, that didn't occur to me at all
hope it doesn't occur to too many people :) 14:59
tadzik I was certain that's a pun :)
masak oh. yes, yeah, it was a brilliant pun. 15:00
sjn PerlJam: it's possible to be "consistently inconsistent" :)
15:00 kaleem joined
masak that... sounds terribly exhausting. 15:00
sjn maybe the strageness in the consistency is that it's also inconsistently inconsistent? 15:01
masak the title comes from a sense of some parts of the Perl 6 design "making sense" by certain things mimicking or being parallel to other certain things. 15:02
"The phrase "strangely consistent" refers to the tendency of even unrelated parts of the design to exhibit patterns or interact in some way. It originated somewhere in the vicinity of Patrick Michaud during YAPC::EU 2009." strangelyconsistent.org/about 15:03
sjn so with "strange" you don't mean "odd" but rather "unexpected"? 15:04
masak that's the one.
moritz but "strangely consistent" does sound better than "unexpectedly consistent"
sjn "oddly consistent" sounds a bit odd though :) 15:05
and you still have that interpretation, when using the word "strange"
moritz "strangely odd" 15:06
sjn "unexpectedly odd"
"the consistency is unexpectedly odd"
:D
PerlJam masak++ I'm not sure what to make of your post. But I like the idea-space you're exploring.
leont Would it be an idea for some bot to read the stackoverflow rss feed for the tag perl6? Or does a thing already exist 15:07
[Coke] leont: I get emails whenever there are new perl6 tagged posts.
so, "sort of". not sure if your goal is notification, or a specifically RSS? 15:08
15:09 brrt left
sjn masak: or, are you talking about food texture/taste/conistency, when you write about "strangely consistent"? :) 15:09
masak PerlJam: yeah, that's the main idea -- to explore the design space.
sjn stops now
masak sjn: :D
moritz masak: I don't see how macros can have "normal" parameters (that are neither thunkish nor ASTs)
sjn "this soup is strangely consistent" 15:10
moritz masak: given that macros are compile-time evaluated, normal parameters aren't even available most of the time
sjn stops now, again
masak sjn: I should hire you to do stand-up comedy in the margins of my blog posts :P
moritz masak: or when they are, they typically become the the static version of a variable where the user expects the run-time variable
sjn playing with words and meaning is fun, yeah 15:11
moritz sub infix:<xx>(THUNK $elem, $n) { ... }; for 1..10 -> { 5 xx $_ }
has $n always as Any
PerlJam sjn: you could start a punny counter-blog to masak's you know :)
masak moritz: did you read the "Implementation" section?
moritz: because what you're saying occurred to me, and I addressed it there.
moritz masak: but then it's not a macro anymore, no? 15:12
masak shrugs
moritz: neither does it have a macro keyword.
moritz masak: ok, fairy nuff 15:13
masak: one thing to consider is how that plays with multis
masak oh, indeed.
moritz masak: probably not well at all
masak didn't consider that one.
my guess is "puts quite heavy restrictions on multis".
moritz masak: so it might be forbidden in individual candidates, and only allowed in protos and onlys 15:14
masak as in, you're fine as long as you *consistently* (there's that word again) thunkify parameters.
moritz: or that. that works too.
moritz also, if you thunk something, you can't multi-dispatch on it anymore
PerlJam likes moritz's imagination here 15:15
moritz masak: glad that I could contribute at least something to the discussion :-)
masak right, so it conceptually belongs "above" multi dispatch.
moritz: you certainly could. thank you. :)
yet another possible interaction -- methods with thunkish parameters: threat or menace? 15:16
PerlJam masak: or rules
masak ooh
masak boggles
TimToady thunkness must propagate back to the callsite
Ven masak: alright
TimToady this is very difficult with methods
masak troo.
moritz rules are especially difficult, because they are methods, but often look sub-like 15:17
masak ok, so conservatively disabled.
moritz conservatively commutes&
one more thing
do we allow routine postdeclarations? 15:18
m: foo(42): sub foo($x) { say $x }
masak also addressed under "Implementation"
camelia rakudo-moar 9efbec: OUTPUT«(timeout)»
Ven masak: seems to me you're "cheating" a lot, from a very simple reading
moritz oh, I should read more carefully, like, really :-)
really gone&
masak I wrote "should be possible, as long as we propagate thunkishness back to that site"
Ven: flattery accepted.
Ven masak: ... and I know how to catch you :-) 15:19
15:19 H2O1 joined
Ven masak: first... How do I get a parameterless macro? 15:20
PerlJam Ven++ good question
masak that is a good one.
PerlJam I wonder if macros are more like another kind of phaser where the programmer gets to decide when it fires? 15:22
15:22 H2O1 left
Ven I *STRONGLY* want a macro keyword. I want to say "I know what'll happen to me, and I'm ready to deal with it" 15:22
you can tell me to put it at call site, like scala. But I want one
This is a contract, and I want it signed so that I can do bad stuff to you legally :P 15:23
PerlJam Ven: There past several minutes since reading masak's post I've been trying to accept implicit macroness via THUNKy params only the discussion makes me want more and more to rejct it. 15:24
s/There/These/
s/rejct/reject/ too
Ven PerlJam: To be fair... This can be very useful for macro templates (scheme/racket-style)
masak Ven: maybe a proposal could be made to fly that (a) retains the `macro` keyword, but (b) allows parameters to be *un*-thunked. 15:25
Ven But then again. I really want a "quasi" keyword. I want to be able to do my shenanigans at compile-time, when the macro is called. Do stuff to my arguments. then generate code
masak *nod*
Ven Not having the "quasi" part of the macro means you're only doing template-y thingies 15:26
masak my proposal was more like having *only* the `quasi` part, but point taken.
15:26 Hor|zon left
TimToady this seems very sideways from all our earlier discussions of macros... 15:27
Ven which can be fine, of course. having sub foo(THUNK) for template macros can work out
TimToady possibly useful sugar, but far from general
15:27 Hor|zon joined
Ven masak: only having the quasi parts means I can't do my shenanigans to my arguments 15:27
TimToady: yes.
masak TimToady: (1) I will make many different posts with various features. this one was easy to get out of the way, as it's relatively disconnected from other things.
15:27 anaeem1 joined
masak TimToady: (2) as I recall, you've proposed a feature like this several times across the years. :) 15:27
or s/proposed/pondered/ 15:28
Ven masak: The first thing I want to build with macros is a MATCH. I want to a hash as (array) => thunk passed to me. Then, I'll inspect the array, put the literals somewhere, and the variables in another place
masak I'm fully aware that this doesn't solve all our problems. see the last section of the post.
Ven masak: Then, I'll create a forest of AND for every literal, and binding for every variable
masak scribbles frantically 15:29
Ven I *need* to have a "before-quasi" part to do that.
15:29 brrt joined
timotimo damn this stuff is tricky 15:29
my head is smoking, and i'm not even helping figure stuff out
PerlJam masak: maybe we don't have to solve all problems at once too. We've been putting all our eggs in the one "macro" basket. Perhaps what we need is multiple flavors of macro (just like we have multiple Routines now)
masak timotimo: it took me literally months just to get insane enough to be able to think about these things effortlessly. 15:30
Ven :D
masak: This is what every (common) lisper blames scheme for: since they don't have a pre-quasi block, the only thing you can do is basic substitutions
You can do basic stuff with that, but not very much. Introspecting your arguments seems a rather mandatory parts of macros to me 15:31
masak PerlJam: I'm not sure that I made it 100% clear in the post, but I'm not *looking* for solutions just yet. I'm looking for *discussion*, of exactly the kind this post caused.
Ven oh, I'm always happy to discuss :P
masak PerlJam: "uhm, this doesn't seem like what we want" is a measure of *success* in what I'm trying to achieve.
b2gills (GLR) As a new P6, old P5 programmer having lists always (auto-) flatten or never (auto-) flatten would make more sense than inconsistent flattening (just caught up)
Ven even though me trying to explain dependently typed stuff to leont got him making faces.
I'm terrible at explaining
brrt happy hacking 15:32
PerlJam masak: sure.
15:32 brrt left
masak Ven: don't worry, one thing you'll definitely get is arguments introspection. 15:32
Ven masak: how?
Just scribble something in a gist on how you picture this, please
masak ok, general notice: I reserve the right to deny anyone instant gratification in terms of how macros will magically work. 15:33
15:33 xinming left
masak I need that right for my sanity. 15:33
Ven This is not what I'm arguing for
masak Ven: *you* write a gist. I'm going to go make dinner. :)
PerlJam masak: though I'm not liking your proposed thing too much, I think it's elucidated (at least to me) that such a thing would be useful. I'm just trying to integrate that knowledge into my imagination of what future "macros" should look like.
Ven masak: you said "you'll get something". I ask: "how"? 15:34
but, very fair.
15:34 kaleem left, xinming joined
Ven scribbles on a gist 15:35
timotimo i'm very confused by the statement_mod_loop:<for> having a $lhs and a $rhs 15:36
Ven timotimo: ETOOTERMSINAROW 15:37
masak: this looks pretty bad hahaha. wait a bit..
PerlJam timotimo: say "hi" for 1..10; $lhs == say "hi", $rhs == 1..10 15:38
timotimo "Much Term in a Row. So Error. Wow."
PerlJam: oh, now i get it, thank
PerlJam though one side is thunked and that makes all the difference.
timotimo you
TimToady no, there's a 'for' in the middle
15:38 pepl left
timotimo masak: i was refering to the stuff on the flipboard, btw, i had not yet read the macro post 15:38
TimToady LHS for RHS; presumably 15:39
masak I could rename them `$statement` and `@values` if that makes it easier to grok. 15:40
(respectively)
TimToady though statement_mod_loop doesn't parse its left side currently, at least in STD 15:41
Ven masak: ok, I have a gist of how I *could* see my MATCH.
masak TimToady: you mean the resulting AST doesn't have those two parts?
Ven: ok, looking forward to seeing it. 15:42
TimToady it's probably added as info into the statement node currently 15:43
15:43 pmurias joined
PerlJam masak: after you've already built the AST for the lhs, you'd have to go back an thunk it when you've parsed enough to figure out there's a statement_mod_loop:sym<for> after. 15:44
or ... provisionally thunk "everything" in anticipation of macros changing the rules midstream.
(but then you'd have to "unthunk" once you realize macros aren't in play) 15:45
pmurias masak: one thing that your post seems to ignore is that we want to have to types of macros. Those that do stuff at compile time (and maybe generate code) and those that do stuff at runtime
masak ok, let's not get stuck on the statement_mod_loop:sym<for> example. I didn't seriously suggest we implement it like that. just trying to bring it under sorta-kinda the same umbrella as the rest of the stuff I was discussing.
pmurias: yes.
pmurias and both types seem useful 15:46
masak PerlJam: what you just said *is* interesting, but more in the context of where we'd want to do this with other, more real macros, not the made-up statement_mod_loop:sym<for> example.
PerlJam: as I think about the bit where macros get more integrated into the grammars/slangs story, they will also have to make more of that kind of decision,. 15:47
pmurias something like a smart &ok is just a sub with fancy argument parsing
masak pmurias: "a smart &ok"? can you elaborate?
Ven generating debug text 15:48
masak macros can already do that, today, in Rakudo.
Ven \o/
masak hold on, let me get the gist I wrote once
15:48 Hor|zon left 15:50 Hor|zon joined
masak ah, here. gist.github.com/masak/0c4496b90e2a...oups-p6-L7 15:50
Ven masak: gist.github.com/Nami-Doc/eb64bab004b90d65a574
here's my MATCH.
dalek rl6-bench/stress: 852bad7 | (Geoffrey Broadwell)++ | microbenchmarks.pl:
Fix warning in two microbenchmarks (and take the opportunity to output a checkable value)
rl6-bench/stress: aaafd8a | (Geoffrey Broadwell)++ | perl6/string-escape:
Fix 5-ism in perl6/string-escape
rl6-bench/stress: 27c7308 | (Geoffrey Broadwell)++ | timeall:
Don't accidentally skip saving any partial data gathered so far for a given compiler on a given test
pmurias masak: what you are proposing in the blog post seems a lot like perl 5 prototypes 15:51
Ven masak: I basically translated it from my lisp version
masak Ven: thanks. will look.
Ven masak: instead of an AST, we can maybe do away with tuples like elixir does 15:52
i.e. in Elixir, 3+4 is just {:+, [3, 4]}
but I said it already i think....
15:52 Mouq joined
masak m: macro assert($fact) { quasi { die "FAILED: ", $fact.Str unless {{{$fact}}} } }; assert 2 + 2 == 4; assert 1 + 1 == 7 15:53
this is what pmurias wanted, I think.
Ven camelia: ?
15:53 kjs_ left
camelia rakudo-moar 9efbec: OUTPUT«(timeout)» 15:54
Ven m: macro assert($fact) { quasi { die "FAILED: ", $fact.Str unless {{{$fact}}} } }; assert 2 + 2 == 4; assert 1 + 1 == 7
camelia rakudo-moar 9efbec: OUTPUT«FAILED: 1 + 1 == 7␤ in any at /tmp/ETr8n4Uxty:1␤ in block <unit> at /tmp/ETr8n4Uxty:1␤␤»
masak \o/
15:54 Hor|zon left
Ven masak++ # this is good! 15:54
masak Ven: re gist: thank you. 15:55
Ven np :)
I know it's not the best code. But that's kind of how I see it. 15:56
masak Ven: your biological and technological distinctiveness has been added to my own. stand by for results, ETA unknown.
15:56 Shailesh joined
timotimo Ven: but our ast has more types of things than just calling stuff 15:57
our for isn't just calling "a for function"
... or something like that?
PerlJam So ...
timotimo hm
not so sure about that any more 15:58
15:58 Shailesh left
Ven masak: my... biological distinctiveness?? 15:58
(and yours? wait, I'm not sure I want to know)
timotimo m) 15:59
lizmat Ven: Borg
PerlJam Is there a Salzburg.pm ?
pmurias masak: a better version of that with introspection, so that ok $foo eq 1, has the same failure message as is $foo,1
15:59 lizmat left
masak .oO( Salzborg.pm ) 15:59
pmurias: *nod* 16:00
pmurias: I've added that one too to my list of use cases I want to consider.
pmurias: as I see it, that will be a part of the Q-tree stuff.
16:00 lizmat joined 16:01 kjs_ joined, lizmat left
pmurias Q-tree? 16:01
Ven masak: okay, liz showed me what was a borg.
masak pmurias: strangelyconsistent.org/blog/macros...long-break
Ven: you will be assimilated. 16:02
Ven masak: oh, okay. Sorry, I'm more of a who kind of guy
masak :)
16:02 isBEKaml joined
pmurias Ven should be glad he wasn't exterminated instead ;) 16:03
Ven pmurias: considered where I'm in, it should be EXTERMINARION (or something)
masak we're more of an AND culture here, not an XOR culture. so Whovians, Trekkers. it all goes.
16:04 Mouq left
Ven he. I was wearing a star trek t-shirt yesterday 16:04
and timotimo started talking to me about star trek and I was like :|
idontunderstand.jpg
dalek kudo-star-daily: b46d3c7 | coke++ | log/MoarVM-version.log:
today (automated commit)
kudo-star-daily: b41bdc9 | coke++ | log/MoarVM-version.log:
today (automated commit)
rl6-roast-data: e8ed1b3 | coke++ | / (4 files):
today (automated commit)
16:05
16:06 Alina-malina joined
Ven masak: there are a lot of stuff I want to do with macros. It's kinda hard for me to reason about how they could be (like I did with MATCH here) but I can probably give you some more examples 16:06
16:07 Hor|zon joined
masak Ven: that would be much assimilated. thanks. 16:07
16:08 rurban joined 16:09 leont left
Ven masak: ... and most of them macros require some kind of pre-quasi 16:10
isBEKaml masak: Whovians? Who are you referring to? Dr.Who fans? :-)
masak isBEKaml: irclog.perlgeek.de/perl6/2014-10-13#i_9501559 16:11
pmurias would it make sense to have a github repo for marco requests etc.?
masak .oO( "*Who* are you referring to?" indeed )
Ven pmurias: paulo is the one and only one. 16:12
isBEKaml Ven: no no, that's Polo
Ven PAUUUUUULO
no, it's paulo in french :) 16:13
masak pmurias: you seem very keen on *distributing* the requirements/design effort. I'm very keen on *centralizing* it. I have a git repo over here with use cases and ideas. a private one.
isBEKaml Marco... Polo... Marco... Polo (Well, eff it - I'm outta here)
masak dinner & 16:17
pmurias masak: I feel that *distributing* the requirements is something we should do 16:21
the interesting macro use case to me are the people pushing the edges of what is possible to day 16:22
I don't care much about reimplementing &infix:<||> 16:23
or the lispish way of using them to reduce the number of parenthesis
I feel there might be a conflict between elegance for simple things that aren't of much use and the things that we really need 16:25
moritz .tell Mouq I finally installed your ssh key for perl6/doc - sorry that it took me so long 16:27
yoleaux moritz: I'll pass your message to Mouq.
16:28 cognome joined
pmurias masak: the real world examples section in the blog post demonstrates what I fear 16:29
16:31 kaleem joined 16:36 chenryn left 16:37 Hor|zon_ joined, anaeem1 left 16:38 Hor|zon left, Hor|zon_ is now known as Hor|zon 16:44 Mso150 joined 16:46 SamuraiJack left 16:47 virtualsue left 16:48 azawawi joined 16:50 pmurias left 16:51 spider-mario joined 16:53 pecastro left 16:54 pepl joined 16:56 anaeem1_ joined
dalek rlito: a13381f | (Flavio S. Glock)++ | misc/typeglob/import.p (2 files):
Perlito5 - typeglob vs. import behaviour investigation
17:01
17:01 Mouq joined
timotimo macro... ploo... 17:04
17:07 treehug88 left
timotimo I was so unproductive 17:08
17:09 pierrot joined
moritz hopes that the GLR core group was productive :-) 17:14
timotimo looked tgat way
gtodd how should <<~<< be read ? "append to array on left stringified elements from list on right" ? or something .... 17:15
17:15 Hor|zon left
gtodd even if it that is correct I'm trying to figure out how I would know this :-) I tend to use this --> www.perlfoundation.org/perl6/index....dex_tablet which seems mostly up to date ? along with synopses ... 17:17
17:17 Mouq left 17:18 gfldex joined
isBEKaml the perlfoundation.org wiki still exists? I thought it hadn't seen updates in *years* 17:20
colomon m: my @a = 'a'..'h'; my @b = 1..20; say @a <<~<< @b 17:21
camelia rakudo-moar 8b3e8c: OUTPUT«a1 b2 c3 d4 e5 f6 g7 h8 a9 b10 c11 d12 e13 f14 g15 h16 a17 b18 c19 d20␤»
colomon gtodd: ^^
gtodd colomon: yes this is what I wanted to do well except I wanted the whole alphabet ;-) .. but I also wanted a way to stick it in my brain or document it name it etc :-) 17:22
colomon: thanks 17:23
isBEKaml m: my @a = 'a'..'h'; my @b = 1..20; say @a Z~ @b;
camelia rakudo-moar 8b3e8c: OUTPUT«a1 b2 c3 d4 e5 f6 g7 h8␤»
isBEKaml m: my @a = 'a'..'h'; my @b = 1..20; say @a X~ @b;
camelia rakudo-moar 8b3e8c: OUTPUT«a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10 b11 b12 b13 b14 b15 b16 b17 b18 b19 b20 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 …»
timotimo it is a bit like a zip. it will extend lists that have angles pointed at then
isBEKaml timotimo: No, not like a zip at all. :-)
nine niner.name/icycle_profile.html and click on Call Graph 17:24
isBEKaml gtodd: you can see the difference between <<~<< and Z~ - the Z thing is a zip. All it does is take elements from both list and works through to the smallest list taking the corresponding item from the larger list. 17:25
gtodd: all the while in a single iteration (if you're wondering about it)
gtodd basically I wanted to see how easy it was to do a1 b1 ... z1 ... a2 b2 ... z2 .... all the way to z100 "by hand" using the right operators 17:26
isBEKaml: precisely, I wanted to see if I could figure out how to mimic something like Z or zip
ok good 17:27
isBEKaml gtodd: ah, so you want something like "matrix" multiplication. X-ops are for you then
colomon gtodd: oh! That's what isBEKaml did back there,; you do n't want the hyper metaoperator at all for that.
gtodd :-)
ok ... I think I saw <<~<< in some code somewhere and it got me thinking experimenting 17:29
colomon with enough work you could make <<~<< do what you want, I suppose, but X~ is definitely the way to go. 17:30
gtodd ok I have X as an alias of cross Z of zip ..... (I have X in my brain under X: for exceptions ) ... and <<~<< is more for sticking a string on the end of each element of a list or something like that .... 17:32
timotimo why is it not like a zip at all? 17:33
isBEKaml timotimo: because it isn't one. :-)
timotimo: granted, you can call it that if you include some cycling.
timotimo that's why I said "is a bit like"
isBEKaml but that isn't how zips are considered. 17:34
timotimo ?
colomon the difference is that zip stops when it runs out, and this sort of hyper cycles
(and lazy vs hyper, of course)
isBEKaml exactly, it works up to the minimal list.
timotimo but that is what I said
colomon It's certainly much more like zip than it is like cross. 17:35
timotimo actually, there is no way for a hyper to stop after the shorter one
colomon timotimo: sure, but other hypers will die instead of cycling 17:36
17:36 Hor|zon joined 17:39 azawawi left
timotimo aye 17:39
17:40 kaleem left
timotimo that much I agree with 17:40
17:41 Hor|zon left
timotimo but still... a hyper with an infix op is still a bit like a zip. 17:41
colomon timotimo: I completely agree with you. more than a bit.
(the similarity, not my agreement.)
17:42 Hor|zon joined
timotimo k :) 17:42
17:43 molaf left, isBEKaml left
colomon remembers when Zop was added to p6. :) 17:43
17:45 azawawi joined 17:47 Hor|zon left 17:48 bartolin joined 17:50 azawawi left
timotimo people have been zopping ever since 17:56
bartolin m: my @a; my $x; ($x) = 1; my $y = @a[0] = 2; say @a[0] 17:57
camelia rakudo-moar 8b3e8c: OUTPUT«(Any)␤»
bartolin m: my @a; my $x; $x = 1; my $y = @a[0] = 2; say @a[0]
camelia rakudo-moar 8b3e8c: OUTPUT«2␤»
bartolin is that a bug or can someone explain why the first command didn't give a 2 as well? 17:58
timotimo huh 17:59
bartolin it's derived from the tests for RT #80614
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=80614
colomon bartolin: Looks like a bug to me. 18:00
m: my @a; my $y = @a[0] = 2; say @a[0]
camelia rakudo-moar 8b3e8c: OUTPUT«2␤»
timotimo m: my $a; ($a) = 1; say $a. DUMP
camelia rakudo-moar 8b3e8c: OUTPUT«===SORRY!=== Error while compiling /tmp/DBBmZA7Aii␤Unsupported use of . to concatenate strings; in Perl 6 please use ~␤at /tmp/DBBmZA7Aii:1␤------> my $a; ($a) = 1; say $a. ⏏DUMP␤»
nine Say I have this little patch for the profiler. How do I get it merged?
timotimo dann you phone kbd 18:01
we give out nqp commit bits for a cla
but pull request is totally fine 18:02
nine I guess the CLA for the Parrot foundation does not quite cover nqp these days? ;)
[Coke] correct. 18:03
I am not sure that nqp requires a CLA.
rakudo does (TPF CLA)
18:03 Exodist joined
bartolin colomon: I tried to golf it down to the code above. somehow "($x) = 1" vs. "$x = 1" makes a difference further down. 18:04
m: my @a; my ($x) = 1; my $y = @a[0] = 2; say @a[0]
camelia rakudo-moar 8b3e8c: OUTPUT«2␤»
timotimo ooooh
bartolin m: my @a; (my $x) = 1; my $y = @a[0] = 2; say @a[0]
camelia rakudo-moar 8b3e8c: OUTPUT«(Any)␤»
[Coke] m: my $x; ($x) = 1; my $y; $y = 1; say $x.WHAT; say $y.WHAT
camelia rakudo-moar 8b3e8c: OUTPUT«(Int)␤(Int)␤»
timotimo so it was the other way around 18:05
sorry
nine github.com/perl6/nqp/pull/193
18:05 azawawi joined
timotimo I wish I could check it out right now 18:07
18:09 SamuraiJack joined
colomon It's Travis CI build passed... 18:12
*Its
timotimo it has no way to fall the build 18:13
dalek p: 21c9c61 | nine++ | src/vm/moar/profiler/template.html:
Add a basic icycle graph to Call Graph tab in profiler output.
18:16
timotimo nice. nine++ 18:17
moritz nine: nqp commit bit sent your way 18:18
18:19 SamuraiJack left
moritz moritz.faui2k3.org/tmp/profile-icicles.html for an example 18:20
check the "call graph" tab
masak pmurias: yes. we want to find the interesting use cases. we want to push the edges of what's possible. I definitely do want to identify the features we actually want in the language to make it support new, interesting, sustainable, extensible ways to program.
pmurias: that's my goal. I'm convinced I cannot do it if it's all in a wiki somewhere. I need to do it from inside my own head. 18:21
18:21 molaf joined
nine moritz: thanks! Your example shows well that the stacks quickly become too narrow to be useful 18:21
18:25 pecastro joined
timotimo that does not work on my phone at all 😀 18:26
18:27 ajr_ left
masak pmurias: I was really intrigued to see the level of engagement with my blog post today. I have many more posts like that queued up. I think if we can keep going like this, we'll land somewhere nice. hope that's acceptable. 18:27
nine timotimo: what does not work on your phone? 18:31
18:32 denis_boyun_ joined
bartolin m: my $y; my @a = (); $y = @a[0] = 2; say @a[0] 18:33
camelia rakudo-moar 8b3e8c: OUTPUT«(timeout)» 18:34
bartolin m: my $y; my @a = (); $y = @a[0] = 2; say @a[0]
timotimo the icicle graph
bartolin ah, I see ;-)
camelia rakudo-moar 8b3e8c: OUTPUT«(timeout)»
timotimo and on my tablet is bad at it, too
18:37 denis_boyun_ left
bartolin I have another variant of the bug above. I'll go and add it to the ticket. but FYI I get locally: 18:38
perl6-m -e 'my $y; my @a = (); $y = @a[0] = 2; say @a[0]'
2
perl6-m -e 'my $y; my @a; @a = (); $y = @a[0] = 2; say @a[0]'
(Any)
nine timotimo: seems to work just find on Firefox on Android and on rekonq. 18:39
timotimo cool 18:41
it spans many lines
the graph does
when I click through a few frames 18:42
masak waitwait -- so it's `EVAL` uppercase but `evalfile` lowercase? -- github.com/perl6/std/commit/bd22b5c08f 18:46
not that I ever understood the decision to discriminate this poor sub in the first place... but that feels terribly arbitrary. 18:47
[Coke] EVAL takes a block, evalfile doesn't. seems legit. 18:48
timotimo er
a block?
[Coke] er, perhaps that was my tcl brain.
masak m: EVAL 'say "OH HAI"'
[Coke] m: EVAL { say "what?" } ; # does that even work, I wonder 18:49
18:49 virtualsue joined
[Coke] cries at camelia's lag. 18:49
masak so slow.
camelia rakudo-moar 8b3e8c: OUTPUT«(timeout)»
masak :(
azawawi # 18:50
masak locally, string works. block doesn't.
azawawi # -- Module Search sidebar in farabi6 ---> pasteboard.co/UNwtLZh.png
masak [Coke]: you might be thinking of `try { ... }`
timotimo imgur.com/a/y9wDg
ATTEMPT {} 18:51
[Coke] masak: I've been coldfusioning all day. shutting up now. :)
the perl6bot is eating 100% of the memory building nqp-j
j: say 1
camelia rakudo-jvm 8b3e8c: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
[Coke] er, 30%. nearly 100% is in use atm. 18:52
there is virtually no CPU usage atm.
18:53 pepl left, Hor|zon joined
[Coke] installs sysstat on host08... 18:54
timotimo gaaaahhhhh
18:56 denis_boyun joined 18:57 eternaleye joined 18:59 Hor|zon left 19:02 denis_boyun left
[Coke] any sysadmins who can tell me what feather.perl6.nl/~coke/stats.txt means? 19:03
dalek p: ec8930a | moritz++ | src/vm/moar/profiler/template.html:
[profiler] improve link readability in icycle graphs
19:04
19:05 Mso150_1 joined, Mso150 left
masak FROGGS: [backlog] yes, provisional solutions live a long time. I do wonder, however, if the real solution with an auto-generated grammar isn't possible today already. I think it is. if it's not, then it's kind of an interesting question what's blocking it. 19:07
19:07 pepl joined, kjs_ left
moritz nine: somehow the layout isn't very robust; this is what I get when I "zoom in" by clicking on some of those routines: moritz.faui2k3.org/tmp/icycles-screenshot.png 19:07
[Coke] j: say 3 19:08
camelia rakudo-jvm 8b3e8c: OUTPUT«Can't call method "syswrite" on an undefined value at /home/p6eval/jvm-rakudo/eval-client.pl line 32.␤»
[Coke] r: say 3
camelia rakudo-{parrot,moar} 8b3e8c: OUTPUT«(timeout)» 19:09
19:09 anaeem___ joined
[Coke] I also installed iotop, no clue how to read that either. :) 19:09
19:09 anaeem1_ left
bartolin [Coke]: to me it looks like IO was not a main problem during your run of iostat. what was the intervall you used for the command? 19:09
[Coke] 5s 19:10
bartolin [Coke]: but isn't host08 a virtual machine? I doubt that one could track IO problems without looking at the host. 19:11
[Coke] I have no idea if host08 is a virtual machine or not.
moritz it is 19:12
[Coke] moritz: do you have access to the host machine?
moritz [Coke]: nope
[Coke] .ask diakopter is host08 as zippy as it's going to get? 19:13
yoleaux [Coke]: I'll pass your message to diakopter.
nine moritz: already on it
dalek p: 563322e | moritz++ | src/vm/moar/profiler/template.html:
[profiler] give divs a title tag

this provides a hover tag for when it is too small for the link to read
19:14
[Coke] r: say 3 19:15
camelia rakudo-{parrot,moar} 8b3e8c: OUTPUT«3␤» 19:16
moritz nine: also, clicking on one of the links in the icycle graph just seems to load the original callgraph page, this time without the graph
azawawi moritz: hi 19:17
moritz azawawi: ola, que tal?
azawawi moritz: i was browsing the wonderful doc.perl6.org until i got to doc.perl6.org/syntax/%3C+%3E :)
moritz: search for < > 19:18
[Coke] moritz: given that it's a virtual machine, I don't think we have any diagnostic tools that are really going to help us, do you?
.seen diakopter
yoleaux I saw diakopter 20 Sep 2014 13:03Z in #perl6: <diakopter> oh
moritz [Coke]: not really; I've given diakopter++ some numbers that illustrate the slowness, and he wanted to contact support 19:19
azawawi moritz: im trying to read index.data to make something like pasteboard.co/UNwtLZh.png for help
moritz: help index + display
dalek p: f05195d | nine++ | src/vm/moar/profiler/template.html:
Icycle graph: show one graph for Current instead of one per callee

Fixes layout breaking when the current node has multiple callees.
19:21
p: d1f3ee1 | nine++ | src/vm/moar/profiler/template.html:
Icycle graph: allow navigating through tree by clicking on callees in graph
19:22 Mouq joined, mauke joined
azawawi what's the replacement of quotemeta in Perl 6? 19:24
masak it's the default. 19:25
moritz azawawi: I've opened github.com/perl6/doc/issues/27 for you
azawawi moritz: thanks
masak m: my $string = "fo+"; say $string ~~ / $string /
camelia rakudo-moar 8b3e8c: OUTPUT«「fo+」␤␤»
masak azawawi: ^
masak is finally finished backlogging the weekend 19:26
everybody++
mauke what's the opposite of quotemeta?
moritz <$string> iirc 19:27
masak mauke: <$string>
azawawi masak: i see thanks :)
masak m: my $string = "fo+"; say "fooo" ~~ / <$string> /
camelia rakudo-moar 8b3e8c: OUTPUT«「fooo」␤␤» 19:28
mauke thanks
19:31 ClarusCogitatio joined
masak 'night, #perl6 19:34
19:38 Mouq left
bbkr I'm tracking JSON::RPC parrot bug and there is some mystery here I cannot solve: github.com/bbkr/jsonrpc/issues/13 19:40
How is is possible that such modification affects attribute assignment?
Looks to me like some weird assignment laziness. 19:41
moritz bbkr: is anything using the return value from notify_hello? 19:42
bbkr no
19:42 Celelibi left
bbkr although changing it to method notify_hello ( $count ){ $.count = $count; return; } does not help. 19:43
only works when $.count is used in any way after assignment
19:44 Celelibi joined 19:46 Sqirrel joined
moritz bbkr: can you assing to $!count? if yes, does that change anything? 19:48
and is this parrot-only? 19:49
bbkr parrot only 19:50
changing to private $!count helped
what happened here?
moritz no idea 19:52
19:52 denis_boyun_ joined
moritz nine++ # ice-colored flame graphs 19:53
bbkr it fixed the test but parrot users will still get invalid results when trying to use library :(
i've noticed somethong else - error is not constant. sometimes I get "Unmarshallable foreign language value passed for parameter '$got'" 19:58
sometimes 0. sometimes ''. once Whatever<7414491160082086972> appeared
moritz nine: clicking on a callee works now, but doesn't set the bread crumb path
bbkr: sounds like a memory corruption thingy 19:59
bbkr: maybe compile parrot with asan
bbkr thanks, I'll try 20:00
20:02 _slade_ joined
moritz ok, if I read this profile correctly, the runtime of the case of Str.trans that I'm testing now is dominated by this line: @!substitutions = @!substitutions.grep: {self.triage_substitution($_) } 20:03
and it's not the self.triage_substitution or the grep that's costing the time, but the list assignment
bbkr --parrot-option='--asan' ? 20:05
moritz (well, STORE + the list iteration behind it) 20:06
rurban: how do you compile parrot with asan? 20:10
20:10 Mouq joined
bbkr I found no such option in their Makefile.PL 20:11
nine moritz: oh, I see. The code for navigating through the call graph does not take jumps over multiple levels into account 20:12
moritz bbkr: probably some --cc-flags=
rurban cflags and ldflags and linkflags all must contain the magic 20:13
-fsanitize=address
but there is now a even better check soon in clang: -fcps (faster and better) 20:14
levee.epfl.ch/ 20:15
20:16 gfldex left 20:18 _slade_ left
bbkr --parrot-option='--ccflags=-fsanitize=address' like this ? 20:19
20:21 Mso150_1 left
moritz yes 20:21
and the same for the other options, and for --cc=clang 20:22
20:23 denis_boyun_ left 20:25 Mouq left 20:26 denis_boyun_ joined
rurban I'm adding a new parrot option —ccld=clang to set all 3 compilers at once with 6.10 20:26
pmichaud good evening, #perl6 20:37
20:42 Hor|zon joined, kaare_ left 20:46 FROGGS joined, Hor|zon left 20:47 spider-mario left 20:48 Ven joined
pmichaud general GLR update: I plan to write blog posts summarizing the results of GLR (and a few other) discussions at #apw2014. I expect to do much of the writing on the plane tomorrow, so you can expect to see a summary of discussion/expected changes in the next couple of days 20:49
Ven pmichaud++ 20:50
(everybody at apw)++ # this was a very fun week, thanks to everybody!
Get some sleep, nwc10
(everbody else)++ # you're great as well! 20:51
[Coke] pmichaud++
timotimo moritz: yeah, the work of grep is being done by the list assignment that's reifying all the elements of grep's lazy list 20:52
20:54 denis_boyun_ left 20:56 virtualsue left 20:59 leont joined 21:09 rurban left
azawawi pbrd.co/1w2zEvz # farabi6 with side-by-side editor/output buffers and module search sidebar 21:10
21:14 bartolin left 21:25 anaeem___ left 21:26 anaeem1_ joined 21:30 anaeem1_ left 21:32 Mouq joined, brrt joined
azawawi is there a way for Perl 6 programs to access the REPL via an API? 21:34
dalek nda: 9762fc4 | timbo++ | README.md:
Add note explaining what Task::Star is
21:36
nda: 725b060 | (Tobias Leich)++ | README.md:
Merge pull request #106 from timbunce/patch-1

Add note explaining what Task::Star is
21:38 pepl left
tadzik nice:) 21:42
azawawi tadzik: hi
tadzik: can Farabi6 be part of Task::Star? Or is there some criteria for including it or not? 21:43
i wonder if we can some way in the META.json or a certain dir/file structure to have examples for the module at hand 21:48
tadzik azawawi: Task::Star is a list of things available in Rakudo Star, so if you get Farabi there it should end up in Task::Star :)
azawawi tadzik: cool 21:49
tadzik so you have to find your nearest Star release manager :)
azawawi hmm ok 21:50
tadzik things like cross-VM compat and stuff are a must
21:50 raiph joined
azawawi check... then im targeting for the 2014.11 inclusion 21:50
so it can be more polished and stable 21:51
no back to the example or SYNOPSIS directory structure...
we need an example of each Perl 6 module
tadzik hmm, there's a wiki page 21:52
azawawi no
let me explain what i need
take a look at pbrd.co/1w2zEvz plz
bbkr azawawi: nice thinking! 21:53
azawawi when the user clicks on the module on the right, we insert the snippets for the module selected
bbkr unfortunately SYNOPSIS is not easily exportable and is in various places (Readme.md, library POD) across different modules 21:54
azawawi now how can farabi6 determine that... i guess snippet.pl in root directory or something
and SYNOPSIS requires more parsing
which is prone to error
21:54 Ven left 21:55 Alina-malina left
azawawi think of about, why did i panda install Module::XYZ.... 21:55
1. to use...
it :)
21:55 Hor|zon joined
azawawi i will add an initial feature to pull the snippet.pl from the root directory or eg/snippet.pl 21:56
if it is there, that snippet is directly inserted into the farabi6 storyboard 21:57
21:58 pmurias joined
azawawi why is javascript so popular?... the number of steps/tools to create a working example is minimal 21:58
pmurias it's so popular because it's in the browser
21:59 ggherdov joined
bbkr does p5 specify example/snippets directory name? 21:59
azawawi nope
tadzik azawawi: oh, I see. That's cool :)
pmurias masak: I can understand why you don't want to keep the design in the wiki, if the design evolved by small distributed edits we would likely end up with just adding a bunch of helper methods to QAST and some helper traits 22:00
azawawi bbkr: example/snippets/task1.pl example/snippets/task2.pl example/snippets/task3.pl # interesting
22:00 leont left 22:01 Hor|zon left
azawawi pmurias: true but the number of tools needed to make something work is a A) browser already there and B) an editor... easily obtained 22:01
pmichaud for the impatient: gist.github.com/pmichaud/460bc17afcc5ca93b6b1 (highlights of #apw2014 glr-related decisions and accomplishments)
22:04 Mouq left
bbkr azawawi: thought so :( and i don't think p6 does that either. directories like lib/ or t/ are just customary. I think the best bet is to look for common names such as example/ or snippets/ and offer to paste content from files there. however small number of p6 modules has those 22:04
22:05 camelia joined
azawawi in p5 they use eg/ for examples 22:07
22:07 ChanServ sets mode: +v camelia
azawawi added the snippet idea as github.com/azawawi/farabi6/issues/39 .. bbkr++ tadzik++ 22:09
azawawi sleep & 22:10
bbkr maybe stick with eg/ then instead of example/snippets/
azawawi or use a META.json key :) 22:11
22:11 Alina-malina joined
azawawi tadzik: do you have a template for a new p6 github project? 22:12
22:12 leont joined
azawawi so sleepy... later & 22:13
22:17 azawawi left
brrt stage parse 25.827s 23:09
wow
23:13 brrt left 23:20 ifim joined 23:28 pochi_ joined, pochi left 23:38 cognome left, cognome joined 23:43 pmurias left, xenoterracide__ joined 23:54 leont left 23:58 Hor|zon joined