»ö« 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 allowedat /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/4D7sOnSmSkCannot use bind operator with this left-hand sideat /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«222» | ||
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«424» | ||
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/z9jNE186YUUnexpected 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«12354578934» | ||
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«49743138552» | ||
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/nWykLepH0SAdverb g not allowed on rxat /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 14 3 2 14 3 2 14 3 2 14 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 14 3 2 14 3 2 14 3 2 14 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«1234» | ||
rakudo-{parrot,moar} 0d1ab2: OUTPUT«1234» | |||
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/3BP8ZAj81vUnable 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/8Cve960vm9Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /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/AgLPmX6wHpBogus statementat /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/DBBmZA7AiiUnsupported 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
|