»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:01
canopus joined
00:03
ggoebel left
00:05
rpburkholder joined
00:07
rurban left
00:10
pierre_ joined,
vytas left,
vytas joined
00:14
Actualeyes joined
00:15
ggoebel joined
00:19
canopus left
00:26
nadim left
00:27
canopus joined
00:29
girafe left
00:34
BenGoldberg joined
|
|||
viki | kyclark++ TEACHING Perl 6 to a class! | 00:39 | |
( blogs.perl.org/users/ken_youens-cla...-mers.html ) | |||
lizmat++ good weekly | 00:40 | ||
00:43
baest left
00:44
cdg left
|
|||
Xliff | Are there any web articles on Perl6 IPC? | 00:48 | |
I guess it's time to learn the Supply classes. | 00:49 | ||
00:50
canopus left
00:51
araujo left
00:53
araujo joined
00:54
baest joined
00:58
canopus joined
01:03
canopus left
01:10
canopus joined
01:14
canopus left
|
|||
samcv | there are Xliff i have two if you wanna check them out cry.nu/perl6/multithreading-in-perl6/ | 01:15 | |
not very long cry.nu/perl6/multithreading-in-perl6-part2/ | |||
should be a good intro, and then supplement with other things, but i think it lays a good foundation | 01:16 | ||
i thought a lot of the things about supplies and stuff were not that easy to understand when you'd never worked with them before | 01:17 | ||
01:19
matiaslina joined
|
|||
samcv | Xliff, after that i'd probably look at this page docs.perl6.org/language/concurrency.html | 01:21 | |
01:22
canopus joined
01:48
labster left
01:49
labster joined
01:51
pierre_ left
|
|||
Xliff | Thanks, samcv++ | 01:59 | |
01:59
pierre_ joined
02:02
pierre_ left
02:03
pierre_ joined
02:12
labster left
02:13
labster joined
02:19
matiaslina left
02:20
pierre_ left
02:21
pierre_ joined
02:23
sftp left,
sftp joined
02:26
perlawhirl joined
02:39
Yeeb joined
02:45
ilbot3 left
02:48
ilbot3 joined
02:53
Xliff left
02:54
rpburkholder left
02:56
cdg joined
02:59
cdg left
03:00
cdg joined
03:10
TEttinger joined
03:41
pierre_ left,
noganex_ joined
03:44
noganex left
03:48
pierre_ joined
03:52
pierre_ left
04:01
pierre_ joined
04:06
cyphase left
04:11
cyphase joined
04:22
seatek joined
04:30
skids left
04:33
cdg left
04:34
cyphase left
04:44
Xliff joined
05:02
ggoebel left
05:03
pierre_ left
05:09
Xliff left
05:10
Yeeb left,
pierre_ joined
05:15
pierre_ left
05:16
Actualeyes left
05:18
Xliff joined
05:19
Actualeyes joined
05:20
Cabanossi left
05:23
Cabanossi joined
05:24
cyphase joined
05:25
AlexDaniel left
05:39
mr-foobar left
05:52
cyphase left
05:54
wamba joined,
mayathecat joined
05:56
cyphase joined
06:00
rurban joined,
rurban left
06:01
mayathecat left
06:03
ugjka left,
pierre_ joined,
ugjka joined,
ugjka left
06:04
ugjka joined
|
|||
samcv | trying to figure out why the hell this is happening: | 06:10 | |
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban ' (\S+) ' '? (\S)+ /; say $1; | |||
camelia | rakudo-moar 26e351: OUTPUT«[「1」 「0」 「m」 「i」 「n」 「u」 「t」 「e」 「s」]» | ||
samcv | never had this happen before | ||
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban ' (\S+) ' '? (\S)+ /; say $1.Str; | |||
camelia | rakudo-moar 26e351: OUTPUT«1 0 m i n u t e s» | ||
samcv | oh i think the + is in the wrong spot?. hmm interesting | 06:12 | |
perlawhirl | my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) /; say ~$1 | 06:15 | |
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) /; say ~$1 | |||
camelia | rakudo-moar 26e351: OUTPUT«10minutes» | ||
06:19
cyphase left
|
|||
Xliff | m: my $str = '!ban nick 10 minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) \s* (\S+) /; say ~$1 | 06:22 | |
camelia | rakudo-moar 26e351: OUTPUT«10» | ||
Xliff | m: my $str = '!ban nick 10 minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) \s* (\S+) /; say $0, $1, $2 | ||
camelia | rakudo-moar 26e351: OUTPUT«「nick」「10」「minutes」» | ||
perlawhirl | bisectable6: my @a[4] = ^4; @a = @a.rotate(1); say @a; | 06:23 | |
bisectable6 | perlawhirl, Bisecting by output (old=2015.12 new=26e3516) because on both starting points the exit code is 0 | ||
perlawhirl, bisect log: gist.github.com/abc547a754f4a2cde0...6c1a3fdbbc | |||
perlawhirl, (2016-11-01) github.com/rakudo/rakudo/commit/e2...8c0ca7d8c3 | |||
06:25
cyphase joined
|
|||
perlawhirl | .tell lizmat found a regression: gist.github.com/Whateverable/abc54...6c1a3fdbbc | 06:28 | |
yoleaux | perlawhirl: I'll pass your message to lizmat. | ||
06:28
perlawhirl left
06:32
darutoko joined
06:33
cyphase left,
BenGoldberg left
06:38
cyphase joined,
Tonik joined,
rpburkholder joined
06:40
rurban joined
06:48
wamba left,
cyphase left
06:49
domidumont joined
06:50
RabidGravy joined
06:53
cyphase joined
06:54
rpburkholder left
06:59
nadim joined
07:03
bjz joined,
stigo left
07:05
abraxxa joined
07:11
neuraload joined
07:15
cyphase left,
kurahaupo__ joined
07:16
bjz left
07:19
cyphase joined
07:22
RabidGravy left
07:23
rurban left
07:24
pierre_ left,
uvb left
07:26
rurban joined
07:28
wamba joined
|
|||
Xliff | Is there any way of breaking execution of an instance of HTTP::Server::Simple | 07:30 | |
07:31
kurahaupo__ left
07:32
pierre_ joined,
bjz joined
07:33
bjz left
07:35
cpage_ joined
07:36
vendethiel left,
pierre_ left
07:39
pierre_ joined
07:41
bjz joined
07:44
cyphase left,
Tonik left
07:48
wamba left,
cyphase joined
07:53
domidumont left
08:00
wamba joined
08:02
domidumont joined
08:10
ufobat joined
08:12
domidumont left
08:14
domidumont joined
08:16
domidumont left
08:17
qub left
08:18
domidumont joined
08:22
cpage_ left
08:23
zakharyas joined
08:24
domidumont left
08:25
domidumont joined
|
|||
Xliff | m: ^100.pick(3) | 08:27 | |
camelia | rakudo-moar 26e351: OUTPUT«Potential difficulties: Precedence of ^ is looser than method call; please parenthesize at <tmp>:1 ------> 3^1007⏏5.pick(3)WARNINGS for <tmp>:Useless use of "^" in expression "^100.pick(3)" in sink context (line 1)» | ||
Xliff | m: (^100).pick(3).say | ||
camelia | rakudo-moar 26e351: OUTPUT«(94 89 5)» | ||
Xliff | m: (^100).pick(3).say | 08:28 | |
camelia | rakudo-moar 26e351: OUTPUT«(71 69 82)» | ||
08:33
maybekoo2 joined
08:36
AlexDaniel joined,
zacts left
08:44
AlexDaniel left
|
|||
lizmat | . | 08:47 | |
yoleaux | 06:28Z <perlawhirl> lizmat: found a regression: gist.github.com/Whateverable/abc54...6c1a3fdbbc | ||
lizmat | wow, and that wasn't caught by spectest :-( | ||
08:47
wamba left
|
|||
lizmat | and good *, #perl6! :-) | 08:48 | |
lizmat clickbaits p6weekly.wordpress.com/2016/11/14/...-cheaters/ | |||
08:49
domidumont left
08:50
zacts joined,
domidumont joined
08:51
aindilis left,
wamba joined
08:53
cpage_ joined
|
|||
moritz | lizmat++ | 08:55 | |
speaking of TWEAK | |||
I'm a bit annoyed that even in TWEAK it tells me not use virtual method calls | |||
but I guess it makes sense, sort of | |||
08:57
dakkar joined
09:00
ocbtec joined
09:02
pierre_ left
|
|||
[ptc] | lizmat++ | 09:04 | |
09:04
cibs left,
jonas2 joined
09:05
nadim_ joined
09:06
cibs joined
09:08
zakharyas left,
pierre_ joined
09:10
nadim left,
pierre_ left,
pierre_ joined
09:11
wamba left
|
|||
lizmat | .tell perlawhirl .reverse on shaped arrays is also borked :-( | 09:11 | |
yoleaux | lizmat: I'll pass your message to perlawhirl. | ||
lizmat | looking at it now | ||
09:15
rindolf joined
|
|||
lizmat | hmmm... actually, it's not the .rotate/.reverse itself, it's in combination with assigning it to itself | 09:16 | |
m: my @a = ^4; say (@a = @a.rotate) | 09:17 | ||
camelia | rakudo-moar 26e351: OUTPUT«[1 2 3 0]» | ||
lizmat | m: my @a[4] = ^4; say (@a = @a.rotate) | ||
camelia | rakudo-moar 26e351: OUTPUT«(Mu)» | ||
lizmat | ^^ another difference | ||
09:20
bjz left
09:21
bjz joined,
rindolf left,
dogbert17 left
09:25
AlexDaniel joined
09:27
bjz_ joined,
bjz left
09:38
pmurias joined
|
|||
pmurias | jnthn: ping | 09:38 | |
jnthn: is settypecheckmode with TYPE_CHECK_CACHE_THEN_METHOD actually used/usefull for anything? | 09:40 | ||
jnthn: when doing nqp::istype(obj, type) that flag is taken from the type while the istype check is called on the obj.HOW and looks up in the obj cache | 09:42 | ||
09:48
bjz joined
09:50
brillenfux joined,
bjz_ left
09:52
TEttinger left
|
|||
brillenfux | hi, I've been on Linux systems the last ten years so.. how useful is Rakudo on Windows systems? how dependent on POSIX is Perl 6? | 09:56 | |
Ulti | gist.github.com/MattOates/c5879a07b1ef2c013097 compare the numbers at the bottom for this year vs last year | 09:57 | |
arnsholt | Those are good, right? | 09:59 | |
Ulti | yup | ||
arnsholt | Was a bit disoriented by differences in x-axis =) | ||
Ulti | yeah I should redo the parallel ones with whatever promise syntax works now | 10:01 | |
10:02
wamba joined
|
|||
gfldex | brillenfux: it does not depend on POSIX at all. There is no fork in Perl 6. You may get problems with file permissions and notifications may not work well (what is a win32 problem). | 10:02 | |
10:03
AlexDaniel left
10:05
domidumont left
|
|||
jnthn | pmurias: Don't think we currently have any kinds of type that need it | 10:07 | |
pmurias: However, it is available through Metamodel::Primitives | |||
It's potentially useful also, if you have a situation where you can't pre-populate a cache of all possible matches, so the absence of something in there doesn't mean the answer should be "no" | 10:08 | ||
10:08
domidumont joined
|
|||
brillenfux | gfldex: okay, any idea what to read to expand those insights? | 10:15 | |
dalek | c: 4088900 | gfldex++ | doc/Language/typesystem.pod6: explain coersion and hint at Cool |
10:19 | |
synopsebot6 | Link: doc.perl6.org/language/typesystem | ||
gfldex | brillenfux: see github.com/rakudo/rakudo/tree/nom/src/core/IO | ||
brillenfux | gfldex: alright, true. thanks :) | 10:20 | |
gfldex | brillenfux: you start with $*SPEC what points to docs.perl6.org/type/IO$COLON$COLONSpec | 10:22 | |
brillenfux: also, expect anything on win32 to be rather untested | |||
pmurias | jnthn: btw the docs on the :authoritative for configure_type_checking are incorrect | 10:23 | |
brillenfux | gfldex: I see | ||
10:24
domidumont left
|
|||
jnthn | Quite a few Windows-specific fixes have gone in during recent times (heck, I did a couple of 'em), so it's certainly actively maintained. But yes, suspect smaller userbase to discover stuff than on Linux/OSX. | 10:25 | |
The threading stuff is arguably more stable on Windows. :P | 10:26 | ||
(Mostly 'cus you get away with more. :)) | |||
pmurias: Feel free to tweak 'em if you've time | 10:27 | ||
pmurias | jnthn: TYPE_CHECK_CACHE_THEN_METHOD is currently "objects might be of this type despite what their type caches say" rather then "this type cache is not exhaustive" | 10:28 | |
jnthn: is that a really intended or a bug? | |||
jnthn | How are those two different? | 10:29 | |
If the type cache is not exhaustive, you can't rely on it to say "no, it's not of this type", so have to do the full-blown check | |||
10:29
jsimonet left
|
|||
pmurias | jnthn: when doing nqp::istype($obj, $type) the flag is taken from $type | 10:30 | |
10:30
jsimonet joined
|
|||
pmurias | jnthn: re how are those two different, it's "all type caches are not exhaustive, if this type isn't in any one of them call istype" | 10:31 | |
brillenfux | jnthn: thanks for the insights :) | 10:33 | |
10:33
labster left
|
|||
pmurias | s/call istype/call type_check/ | 10:33 | |
jnthn: it's like if in the method cache we set the "is not authoritative" flag on the method | 10:34 | ||
dalek | c: 75f4ef3 | gfldex++ | doc/Type/Cool.pod6: add contains to table |
10:35 | |
synopsebot6 | Link: doc.perl6.org/type/Cool | ||
pmurias | jnthn: should I nopaste a test case illustrating the difference? | 10:40 | |
jnthn | pmurias: You can, though I see the issue...bit too busy with $dayjob to really have an answer, but a quick grep through NQP/Rakudo sources suggest our own meta-objects don't actually use it | 10:41 | |
DrForr | For those of you not on FB/Twitter: I've been accepted to OSCON Austin 2017 and Open Source Days in Copenhagen. | 10:42 | |
10:45
nadim joined,
nadim_ left
|
|||
pmurias | jnthn: ok, I'll refrain from implementing that mode on the js backend | 10:46 | |
10:47
domidumont joined
10:50
pierre_ left
|
|||
dalek | c: fd6a2cb | gfldex++ | doc/Language/typesystem.pod6: add examples for coersion |
10:51 | |
synopsebot6 | Link: doc.perl6.org/language/typesystem | ||
10:52
bjz left
10:55
bjz joined
|
|||
dalek | c: af5f3ad | gfldex++ | doc/Type/Proc/Async.pod6: show how to add exception handler while tapping |
10:59 | |
synopsebot6 | Link: doc.perl6.org/type/Proc/Async | ||
c: 9e8265d | gfldex++ | doc/Type/Supply.pod6: fix bad copypasta, also the callback doesn't have to be a method |
|||
synopsebot6 | Link: doc.perl6.org/type/Supply | ||
11:19
rurban left
11:22
rurban joined
11:24
zakharyas joined
11:30
maybekoo2 left
11:32
pierre_ joined
11:39
domidumont left,
domidumont joined
|
|||
Xliff | \o | 11:55 | |
Has anyone had a chance to look at this bug: rt.perl.org/Ticket/Display.html?id=130095 | |||
moritz | it seems zoffix has had a chance to look at it | 11:57 | |
Xliff | Also, does anyone have an idea as to the best way to terminate a class implementing HTTP::Server::Simple? | ||
11:57
ggoebel joined
|
|||
moritz | the class is terminated by the closing curly | 11:58 | |
Xliff | Even if the run method is invoked? | 11:59 | |
That's not the impression I get from the examples. Take a look at this one: github.com/gfldex/http-server-simp...e-base.pl6 | 12:00 | ||
12:00
rurban left
|
|||
Xliff | So if I do: my $s = MyServerClass.new; my $p = start { $s.run } | 12:01 | |
If I "await $p" the server will sit there and process requests, right? | 12:02 | ||
12:02
sufrostico joined
|
|||
Xliff | I'm still trying to pick up Promises, Suppliers and Supplies. | 12:02 | |
gfldex | yes, there is no way to terminate it from the outside. await will block | ||
moritz | then don't await on it | 12:05 | |
dalek | c: 8fcc090 | coke++ | doc/Language/typesystem.pod6: remove trailing whitespace |
||
synopsebot6 | Link: doc.perl6.org/language/typesystem | ||
c: f643d01 | coke++ | / (2 files): fix spelling, grammar, ignore new code |
|||
moritz | you do do a my $exit-promise = Promise.new; await Promise.anyof($p, $exit-promise) | 12:06 | |
and when you want the server to stop, you do $exit-promise.keep(True) | |||
gfldex | Xliff: you will have to subclass and overload HTTP::Server::Simple.net_server | ||
moritz: is the thread actually terminated? It may be sleeping on $!listener.accept | 12:07 | ||
timotimo | it'd be kinda nice to have HTTP::Server::Simple and others offer a "please stop the server now" thing | 12:08 | |
gfldex | do signal handlers work inside threads? | ||
lizmat | gfldex: afaik, signal handlers have their own thread | 12:09 | |
moritz | gfldex: I have no idea | 12:13 | |
12:13
nadim_ joined
|
|||
lizmat | m: signal(SIGINT).tap: { say $*THREAD; exit }; say $*THREAD; sleep 2; qqx/kill -{+SIGINT} $*PID/ | 12:13 | |
camelia | rakudo-moar cd765e: OUTPUT«Thread #1 (Initial thread)qx, qqx is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in sub QX at src/RESTRICTED.setting line 11 in block <unit> at <tmp> line 1» | ||
12:13
seatek left
|
|||
lizmat | hmmm | 12:13 | |
$ 6 'signal(SIGINT).tap: { say $*THREAD; exit }; say $*THREAD; sleep 2; qqx/kill -{+SIGINT} $*PID/' | |||
Thread #1 (Initial thread) | |||
Thread #3 | |||
12:17
nadim left
|
|||
gfldex | we would need a non-blocking IO::Socket::INET (or have a timeout on select). Generally we don't got a mechanism to wake up a thread and let it handle a signal of sorts. | 12:17 | |
moritz | the non-blocking IO::Socket::INET is called IO::Socket::Async | 12:21 | |
gfldex | moritz: is it non-blocking both from the outside and the inside? | 12:24 | |
Xliff | gfldex: Ack! If I can't terminate it, that's a bit of a problem. | 12:26 | |
I will try to test moritz's theory when I get a chance. | |||
My back is killing me and I can't sleep. | 12:27 | ||
gfldex | IO::Socket::INET.accept should sport a timeout by exposing the OS ability to have such a timeout (not sure if/how that works in win32) | ||
12:28
rurban joined
|
|||
Xliff | Oh. Missed the bit about net_server. Will look into that, too. Thanks. | 12:30 | |
moritz | gfldex: I think you can close an IO::Socket::Async | ||
jnthn | Yes, if you .close the tap then it'll stop listening. That's tested. | ||
lunch & | 12:35 | ||
dalek | c: 20f95fc | gfldex++ | doc/Type/Blob.pod6: doc utf8-c8 |
12:37 | |
synopsebot6 | Link: doc.perl6.org/type/Blob | ||
gfldex | many new things where learned today :) | ||
12:44
rurban left
12:46
nadim joined
12:47
rindolf joined
12:48
nadim_ left
13:12
bjz_ joined,
mr-foobar joined
13:13
bjz left
13:18
canopus left
13:23
canopus joined
13:25
nowan left
13:31
araujo left
13:32
araujo joined
13:35
nowan joined
13:39
rurban joined
13:40
bjz_ left,
rurban1 joined
13:42
rurban2 joined
|
|||
perlpilot idly wonders if there's anything interesting that bdf can say about LP6 that could make as an advent article | 13:43 | ||
viki | huggable: advent | ||
huggable | viki, github.com/perl6/mu/blob/master/mi...6/schedule | ||
13:44
rurban left
|
|||
perlpilot | I guess no one cared for topic brain storming this year | 13:44 | |
13:44
rurban1 left
|
|||
DrForr | I think he's still mulling the TOC; I gave him a lot to digest when we were talking about it. | 13:47 | |
[Coke] | dalek source? | ||
timotimo | i can imagine it'd be cool to have one or two posts about NativeCall + fortran and/or Rust | 13:48 | |
perlpilot | indeed | ||
timotimo | i personally know zero about fortran, and one about Rust | ||
dalek | : bf69367 | (Will Coleda)++ | misc/perl6advent-2016/schedule: Claim a slot. |
||
viki | [Coke]: it's on hack in /home/dalek/dalek | ||
perlpilot | That k-mers article would have made a nice advent post too ;) | ||
[Coke] | viki: there's a repo somewhere, no? | ||
viki | agreed | ||
[Coke]: no idea | 13:49 | ||
DrForr | I've got a mini-book on Rust :) | ||
[Coke] | viki: got it (and the repo from the checkout), thanks. | ||
viki | .ask kyclark would you be interested in writing a Perl 6 Advent ( perl6advent.wordpress.com/ ) blog post this year? Add yourself to schedule: github.com/perl6/mu/blob/master/mi...6/schedule | 13:50 | |
yoleaux | viki: I'll pass your message to kyclark. | ||
viki | [Coke]: what is it? | ||
[Coke] | git://github.com/Infinoid/dalek-plugins.git | ||
viki | huggable: dalek source :is: github.com/Infinoid/dalek-plugins | ||
huggable | viki, Added dalek source as github.com/Infinoid/dalek-plugins | ||
timotimo | wow, that's old :) | 13:51 | |
perlpilot | huh ... trying to think up something I could do for an advent post, I was looking back at past articles. It's a little bit amazing that we've been doing Perl 6 Advent for 7 years | 13:55 | |
13:55
grondilu left
|
|||
timotimo | yes, quite! | 13:55 | |
maybe we can find something that's only sensible to try now that we've had the speed improvements we've had | 13:56 | ||
13:57
grondilu joined
|
|||
[Coke] takes day one to give everyone else one more day to think about it. | 13:58 | ||
perlpilot | Even just a look back at speed compared with last year might be interesting. Take Zoffix's graph, look at a couple of programs on year-ago rakudo as compared with today, then extrapolate those programs into next year | ||
viki was hoping for TimToady to claim Day #1 and do some sort of State of The Union type of thing... | |||
perlpilot | viki: That's my hope every year, but ... you can see how often that's worked out :) | 13:59 | |
viki | :} | ||
timotimo | zoffix has a graph? | ||
viki | timotimo: the one I posted about estiting for next year | ||
timotimo | State of the Union Types? | ||
oh, that one | |||
viki | twitter.com/zoffix/status/796810512986238978 | 14:00 | |
timotimo | only 15 days to go until the advent calendar month starts :o | ||
viki: have you tried what happens when you use more than one year of data? i *think* we've had tux's benchmark before that | |||
it'll probably make the outcome a bit less optimistic :P | |||
perlpilot | trend lines are funny that way | 14:01 | |
timotimo | but as always, there's lies, damned lies, and benchmarks/statistics/plots/... | ||
viki | Well, even now R² is .79 :) Not exactly perfect fit | ||
timotimo | mhm | ||
timotimo BBIAB | |||
14:01
Ven joined
|
|||
viki | And I don't really want to take older data, because it represents unstable language. | 14:02 | |
So it's like comparing apples and... pineapples :) | |||
Ven | well met, #perl6! I see it's that time of the year we advent again :). | ||
also TIL pmurias worked on a CL backend for niecza in ~2011.. | 14:03 | ||
viki | Yup. Add yourself to the schedule: github.com/perl6/mu/blob/master/mi...6/schedule | ||
perlpilot | Also, if anyone needs a wordpress account, many of us are admins who can give it. | 14:06 | |
(it would be neat to get some of the people who joined us within the last year to write some advent articles) | 14:07 | ||
14:09
cdg joined
14:11
kurahaupo__ joined,
rindolf left
14:14
rurban2 left
14:15
rindolf joined
14:17
pierre_ left
|
|||
Ven | viki: I'm not sure what to talk about atm :) | 14:21 | |
viki | Ven: sign up for a spot anyway. | 14:24 | |
Ven | it's okay, it's okay :). | 14:29 | |
sorry to pdcawley++ as well, who posted a question on one my advent post last year – and to which I never replied (I never got a notification)... | |||
14:29
skids joined
|
|||
[Coke] | viki: I'm happy to switch out for a later day, no worries. | 14:32 | |
14:36
danlei joined
|
|||
[Coke] | (will add a note to that effect) | 14:38 | |
danlei | hi! is there a way to access the REPL object in a running repl? | ||
14:38
cpage_ left
|
|||
dalek | : 8850c3c | (Will Coleda)++ | misc/perl6advent-2016/schedule: let someone else steal #1 if they want. |
14:38 | |
danlei | or rather: is the functionality from the Completion role somehow accessible at the repl? doesn't look like it, but I'm not very experienced in perl6. | 14:42 | |
timotimo | if you get a backtrace from your code, and have --ll-exception on your perl6 commandline, you can see what frames are in dynamic scope, and all dynamic variables (i.e. those with a star in them) will be available to your code | 14:44 | |
that could help guide your question | |||
danlei | thanks, I'll have a look | 14:45 | |
timotimo | www.reddit.com/r/gonwild/ - oh jesus. i love you, internet | 14:48 | |
"Gonwild is a place for closed, Euclidean Geometric shapes to exchange their nth terms for karma; showing off their edges in a comfortable environment without pressure. | |||
tadzik | ahahahahh | 14:49 | |
timotimo | a community for 7 years ... o_O | ||
this is incredible | |||
my sides! *cough* | |||
14:51
jonas2 left
|
|||
Ven | timotimo: beautiful. | 14:54 | |
I wasn't sure I wanted to click on that "I'm 18". I verified the URL... | 14:55 | ||
timotimo | it's obviously part of the joke :) | ||
14:58
neuraload left
|
|||
timotimo | desert bus is currently doing a random four chords sing-along with suggestions from the stream chat | 15:01 | |
dalek | osystem: b8e7410 | jnthn++ | META.list: Add File::Ignore. See github.com/jnthn/p6-file-ignore for details. |
15:03 | |
15:03
zakharyas left,
zakharyas joined
|
|||
jnthn | Missed that one while working on DayJob::Prototype. :) | 15:03 | |
DrForr | Birdplane? Take your Canvas Bags | 15:04 | |
15:04
sufrostico left
|
|||
timotimo | take your canvas bags is a fantastic song | 15:04 | |
15:06
sufrostico joined
15:07
zakharyas left
15:08
brillenfux left,
Ven left
15:14
araujo left
15:15
araujo joined
|
|||
tadzik | to the suuupermarket | 15:16 | |
DrForr | Just thinking of four-chord songs; Axis of Awesome has a good 'un. | 15:19 | |
15:22
domidumont left
|
|||
timotimo | correct | 15:23 | |
www.youtube.com/watch?v=FtVprVO9Uas - square enix also has one for final fantasy 6 | 15:24 | ||
15:24
domidumont joined
15:27
domidumont left
15:31
sufrostico left,
domidumont joined
15:32
sufrostico joined
15:44
sufrostico left,
wamba left
15:45
pmurias left
15:46
sufrostico joined
15:54
wamba joined
15:56
kyclark joined
|
|||
kyclark | I’m willing to sign up for the Advent calendar. How do I do that? | 15:57 | |
yoleaux | 13:50Z <viki> kyclark: would you be interested in writing a Perl 6 Advent ( perl6advent.wordpress.com/ ) blog post this year? Add yourself to schedule: github.com/perl6/mu/blob/master/mi...6/schedule | ||
15:59
domidumont left
16:00
rurban joined
16:04
cdg left
16:07
nicq20 joined
|
|||
kyclark | OK, it’s possible I did that correctly. | 16:08 | |
[Coke] | you can edit that file in your browser, even to claim a space. | ||
dalek | : 6d774a8 | (Ken Youens-Clark)++ | misc/perl6advent-2016/schedule: Update schedule |
16:17 | |
: 1ee3af0 | (Will Coleda)++ | misc/perl6advent-2016/schedule: Merge pull request #15 from kyclark/patch-1 Update schedule |
|||
16:18
wamba left
16:27
Lucas_One left,
Lucas_One1 joined
|
|||
dakkar | I'm looking at jnthn's latest module, github.com/jnthn/p6-file-ignore/bl...Ignore.pm6 | 16:27 | |
I have a few questions… first: is there really no better way than EVAL to turn a string representation of a pattern into a pattern? | 16:28 | ||
16:28
cpage_ joined
|
|||
dakkar | in p5 I'd do $pattern=qr{$stringified_pattern} | 16:28 | |
16:28
dogbert17 joined
|
|||
dakkar | github.com/jnthn/p6-file-ignore/bl...re.pm6#L30 does $pattern = EVAL("/$stringified_pattern/") | 16:28 | |
which looks a bit ugly to me | |||
jnthn | You can do /<$pattern>/ too | 16:31 | |
I just happen to know it performs a good bit worse | |||
And /<$pattern>/ will do some kind of compilation anyway | 16:32 | ||
(e.g. like EVAL) | |||
geekosaur has concerns other than ugliness there... can't tell from quick look whether it's got code injection potential or not though | |||
jnthn | No, it doesn't | 16:33 | |
16:34
sufrostico left
|
|||
jnthn | The lit action method compiles it into a quoted string | 16:34 | |
And takes care of escapes and embedded quotes | |||
16:36
sufrostico joined
|
|||
[Coke] | viki: any interest in making your ticket aggregator also pull from other ticket queues? | 16:36 | |
(nqp, moar, docs, specs, roast...) | |||
16:40
rurban left,
itcharlie joined
|
|||
dakkar | jnthn: ok, I bow to your superior knowledge of the performance issues ☺ | 16:40 | |
viki | [Coke]: nope. Those already have decent issue trackers (GitHub). | ||
dakkar | the other question is: filenames are bytes, not characters. .gitignore matches bytes, not characters. how could a p6 grammar/pattern deal with that? | 16:41 | |
[Coke] | viki: I'm more concerned about the aggregation bit, but ok. | ||
dakkar | (also, what does dir() return?) | ||
viki | [Coke]: you're talking about perl6.fail, right? It was always an RTLite UI | 16:42 | |
[Coke] | Wonder if we could make a perl6 dashboard for issues on github. | ||
viki | You can likely construct a URL that would show you all issues for repos of interest. | ||
Like there's a way to show all Issues for Perl 6 organization, for example | |||
16:43
cpage_ left
|
|||
dalek | c: be90f27 | (Zoffix Znet)++ | doc/Type/Str.pod6: Fix typo Related to #1011 |
16:45 | |
synopsebot6 | Link: doc.perl6.org/type/Str | ||
jnthn | dakkar: The utf8-c8 encoding (which can cope with things that don't decode as utf-8, and round-trip them) is used for dir, so reading the .gitignore or whatever file using that encoding also would get the desired effect without having to worry about anything in the grammar. | 16:46 | |
Guess the example in the readme could be tweaked to do that :) | |||
dakkar | oh, so things went that way! I guess the bad byte sequences get represented as private codepoints outside of unicode range | 16:47 | |
jnthn | Ended up doing them using the same machinery as NFG synthetics. | 16:48 | |
dakkar | sensible for things are mostly utf-8 | ||
on the other hand… if I were to write a grammar for a network protocol, where things have to actually be treated as octets (even when they look like utf-8 byte sequences), how would I do that? | 16:49 | ||
16:50
sufrostico left
|
|||
gfldex | dakkar: matching binary and/or streams is not really supported yet | 16:52 | |
jnthn | Eventually, we'll make that happen by being able to match a Buf agaisnt a grammar, but today you can get the same effect by just "decoding" the thing as latin-1, and use \x90 style things in your grammar. | ||
dakkar | ☹ | ||
jnthn | (Which is how I've dealt with HTTP header parsing, for example) | ||
16:52
sufrostico joined
|
|||
dakkar | jnthn: I don't know if I should laugh or cry at that, but I realise it's a pragmatic work-around | 16:52 | |
gfldex: oh right, there's *also* the problem of streams | 16:53 | ||
jnthn | Well, it's basically how matching against a Buf is going to end up working anyway. | ||
dakkar | as long as it's encapsulated and people don't get funny ideas about confusing bytes and characters :) | 16:54 | |
jnthn | The key difference being that your Match object would also give you back Bufs | ||
dakkar | yep, encapsulated enough | 16:55 | |
16:56
abraxxa left
|
|||
jnthn will maybe take a look at that some once he's done with his current push on concurrency bugs...or just needs a break from those. :P | 16:56 | ||
16:56
sufrostico left
|
|||
viki reads perl6advent.wordpress.com/2014/12/...ong-right/ | 16:58 | ||
"Self-clocking code produces better syntax error messages.".... What's self-clocking code? | |||
jnthn | viki: Pretty sure it's a reference to how we always know whether we expect an infix or a term | ||
16:58
sufrostico joined
|
|||
viki | Ah | 16:58 | |
jnthn | (A load of error detection hangs off two terms in a row) | ||
It's also why TimToady was so reluctant on $foo .bar .baz (whitespace between methods, so you can chain them over multiple lines) | 17:00 | ||
iirc, anyway :) | |||
I think eventually the popular demand for that was overwhelming, and the fudge was to consider . as a weird kind of infix in this case :) | |||
viki | I'm glad peer pressure won :) | 17:01 | |
dakkar is really behind on p6, he still thought unspace was necessary | |||
geekosaur | likewise, and tbh that . *feels* infix to me. which is why the old behavior was so annoying | ||
well, part of it | 17:02 | ||
jnthn | Yeah, having to stick \ on the end of lines did somewhat clutter up otherwise neat code | 17:03 | |
17:06
sufrostico left,
cdg joined
17:08
sufrostico joined
|
|||
harmil_wk | That \ is one of the things I hate most in the Python community. There are lots of people that prefer function\<newline>(parameters) for long lines... I want to murder them so badly. | 17:10 | |
17:10
labster joined
|
|||
harmil_wk | object\<newline>.method is at least not misleading, as it looks like a variable... | 17:11 | |
17:13
girafe joined
17:20
rurban joined
17:25
nicq20 left
|
|||
viki | L>K<:U SRAYUL<SMDAHJSDF<AKSHYRFASLKRT<ASYURTAES>L<KTRWEYH TGEWTG | 17:27 | |
That was my substitute for a vitriolic comment to AlexDanial I was contemplating of writing github.com/perl6/doc/issues/1011#i...-260702621 | |||
viki instead hits "unsubscribe" button | |||
17:28
wamba joined
|
|||
geekosaur actually agrees with Alex there. if it's not in a textual format, it does not have a base | 17:29 | ||
viki | Well, fix the text then? | 17:30 | |
geekosaur | (or rather, its base is determined by the hardware representation, which on all supported platforms is base 2. unless we added s390 and used BCD for Numeric there for some reason) | ||
viki | I see 94 more issues opened in perl6/doc since I unsubbed from that repo a few months ago and they're all needless bikeshedding and a bunch of people "wondering" about stuf. | 17:31 | |
I implemented the method and documented how I understand it. If "Does not sound right." just fix it. | 17:32 | ||
Wasn't forgiveness > permission mantra all about that in the first place? So people do stuff instead of waiting for some mysterious authority's stamp of approval? | 17:34 | ||
</rant> | |||
17:35
Actualeyes left
|
|||
mst | viki: have you watched my talk "a decade of dubious decisions" ? | 17:38 | |
viki | mst: nope | ||
What's the URL? | |||
mst | sec | 17:39 | |
geekosaur is waiting on someone in #xmonad who doesn't know about mod-q /o before trying to work on something else | |||
mst | www.youtube.com/watch?v=BaeXXA5UyYg | ||
fairly near the start there's a section about "shouting 'go'" | |||
I suspect right now it will make a lot of sense | 17:40 | ||
(like, in the first 10 mins, I reckon, if you can't be bothered watching it that far I can try and find the exact moment) | |||
17:41
sufrostico left,
dakkar left
|
|||
Xliff | Hrm. Closing $!listener in my HTTP::Server::Simple subclass didn't seem to terminate the loop in net_server() | 17:43 | |
Looks like I will have to override it. | |||
17:43
sufrostico joined
|
|||
mst | viki: note also if you can't be arsed entirely I can summarise the point, but I did a better job of it in the talk :) | 17:47 | |
18:05
FROGGS joined
18:07
lostinfog joined,
gregf_ left
18:08
chris2 left,
kyclark left
|
|||
harmil_wk | Maybe I'm brain farting, but is there a way to do the equivalent of Python's "hash.get("foo", "bar") where "foo" is the key to look up and "bar" is the default value to return if "key" does not exist? Given that hashes can have hash-wide defaults, I don't see any way to do this... | 18:09 | |
Note that Python calls them dicts, but same-same. | |||
viki | harmil_wk: %h<foo>//"bar" ? (checks for definedness tho) | 18:10 | |
geekosaur | (%h<foo> // 'bar') | ||
heh | |||
harmil_wk | But a hash with a default will only be undefined if the value is undefined. | ||
Not if the key does not exist | |||
viki | m: my %h is default("meow" | 18:11 | |
camelia | rakudo-moar c5d33a: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unable to parse expression in parenthesized expression; couldn't find final ')' at <tmp>:1------> 3my %h is default("meow"7⏏5<EOL> expecting any of: statement end statem…» | ||
viki | m: my %h is default("meow"); say %h<foo> | ||
camelia | rakudo-moar c5d33a: OUTPUT«meow» | ||
viki | m: my %h is default("meow") = foo => "bar"; say %h<foo> | ||
camelia | rakudo-moar c5d33a: OUTPUT«bar» | ||
viki | m: my %h is default("meow") = foo => "bar"; say %h<foo meows> | ||
camelia | rakudo-moar c5d33a: OUTPUT«(bar meow)» | ||
harmil_wk | I think %hash{"foo"}:exists ?? %hash{"foo"} !! "bar" | ||
viki | :S | 18:12 | |
harmil_wk | Wait, what is that %h<foo meows> doing? | ||
viki | Didn't you just say that default would apply only when the value is undefined, not when the key doesn't exist? | ||
harmil_wk: it's a slice returning values of two keys | |||
harmil_wk | Right | ||
viki | m: my %h = foo => "bar"; say %h<foo meows>:exists:k | 18:13 | |
camelia | rakudo-moar c5d33a: OUTPUT«Unsupported combination of adverbs (exists k) passed to slice on %h in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
viki | orly | ||
m: my %h = foo => "bar"; say %h<foo meows>:exists:v | |||
camelia | rakudo-moar c5d33a: OUTPUT«Unsupported combination of adverbs (exists v) passed to slice on %h in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
viki | m: my %h = foo => "bar"; say %h<foo meows>:v | ||
camelia | rakudo-moar c5d33a: OUTPUT«(bar)» | ||
viki | m: my %h = foo => "bar"; say %h<foo meows>:v("fooos") | ||
camelia | rakudo-moar c5d33a: OUTPUT«(bar)» | ||
viki | oh well | ||
harmil_wk | Right, so if I have a hash %h and I want to get back the value at key "foo" but if there is no such key, I want "bar"... you set a global default on the hash, which isn't the same operation | 18:14 | |
I think %hash{"foo"}:exists ?? %hash{"foo"} !! "bar" is the only way... king of klunky... wish Perl has a Python-like method to get the value at a key with a default. | |||
FROGGS | o/ | 18:15 | |
harmil_wk | Sorrry was typing while you were exampling | ||
FROGGS: hey | 18:16 | ||
viki | harmil_wk: I've actually never used :exists in Perl 6. | ||
harmil_wk | If there's a default on the hash, it's the only way to know if a key exists... | ||
viki | harmil_wk: so you wanting to this this ternary that checking for existence and doesn't something else if not kinda feels strange. What's your usecase for it? | ||
harmil_wk | And if you get a hash as input to a function or method, you must assume it can have a default | ||
viki | %hash<foo> // "bar" is a more common paradigm, IMO, since a hash would not have an undefined value that I'm somehow also finding useful at the same time. | 18:17 | |
harmil_wk | But if %hash has a default, that fails | 18:18 | |
viki | harmil_wk: what do you mean by "has a default"? The is default() trait? | 18:19 | |
harmil_wk | In fact, for that reason, I think we should really caution people never to use it. (yes, the default trait) | ||
viki | I always use it. | ||
If someone set is default(), that means my %hash<foo> // "bar" still works, since I'm getting teh default value for key "foo" | 18:20 | ||
harmil_wk | Do you use that convention even when you don't know where the hash came from and can't control whether or not it defaults? That sounds fragile... | ||
[Coke] | why? so people don't have to use :exists when they mean it? | ||
harmil_wk | [Coke]: who were you asking? | ||
[Coke] | you. | 18:21 | |
why recommend people don't use default? | |||
gfldex | viki: it's no wonder that so many unreasonable tickets persist. The reasonable ones are getting closed. | ||
18:21
sufrostico left
|
|||
harmil_wk | So, I was saying that :exists is the only correct way to ask that question... I'm not sure what you're asking | 18:22 | |
[Coke] | I haven't done a sweep of doc tickets in a while, will try to do so this week. | ||
You said " In fact, for that reason, I think we should really caution | |||
people never to use it. (yes, the default trait)" | |||
harmil_wk | [Coke]: sorry, that's ambiguous. I was recommending against the use of the // defaulting operator not the default trait | ||
[Coke] | danke. | ||
18:23
chris2 joined
|
|||
harmil_wk | Oh, I think the default trait is fine. But it means you can't use the defaulting operator if you don't own the hash in question. | 18:23 | |
gfldex | viki: the only problem I have with that is that I found myself starting to ignore certain users and I can't predict if that will turn out to be a shame. | ||
harmil_wk | (at least not without being very clear about what you mean) | ||
18:23
sufrostico joined
|
|||
viki | harmil_wk: I use whatever semantics work for my code. The // is not "a lazy way to write :exists" in my mind, but that an undefined value is meaningless to my current code. I don't care if it's getting satisfied through a key's existence or through it having a default value | 18:24 | |
18:26
rurban left
|
|||
harmil_wk | viki: sure, in some use cases, but that wasn't what I asked. What I asked was how I get the value at key "foo" or the value "bar" if key "foo" doesn't exist... I think the only way to do that is with a multiple-expression test and return, which is kind of odd, but okay. | 18:26 | |
viki | gfldex: as I stated my unpopular minority opinion before: there are tickets that should be closed simply because there's no one bothered enough to do anything about it. The fact that it's still open after X amount of time is an indication that a ticket is not imporant. | 18:27 | |
Mojolicious's team applies this well. Their Issue/PR is nearly always empty. | 18:28 | ||
Having 200 open tickets for "unreasonable" issues doesn't serve much of a benefit IMO. | 18:29 | ||
mst | right, while I've occasionally been annoyed by one of my tickets being closed because of that, once I got over my annoyance it was clear that, on balance, they'd made the right call | ||
just generally takes me 24h to stop going "grr" and realise they're right ;) | |||
18:29
sufrostico left
|
|||
viki | It actually made me pay more attention to comments on my PRs because I knew if I took a break and leave it off, it'd get closed due to lack of decision. | 18:30 | |
mst | heh, neat | ||
[Coke] | It's ok to close tickets that are unreasonable/unimplemented/go against the project goals. It's not ok to close them because they've been open and no one has touched them. | ||
(so, going through the tickets to mark the ones that are unreasonable and closing them out is a good thing.) | 18:31 | ||
viki | [Coke]: yeah hence my "unpopular minority" qualifier :) | ||
[Coke] | viki: I just closed one! ... it was yours. and reasonable, but was kind of done. :| | ||
18:31
sufrostico joined,
iH2O joined
|
|||
viki | Cool :) [Coke]++ | 18:31 | |
masak | 007's queue of open issues keeps non-decreasing monotonically. haven't considered it a problem so far. | 18:32 | |
it kind of reflects that the language is becoming more capable, and I have more plans for it. | |||
iH2O | perl6 is already the Swiss knife of languages | 18:33 | |
masak | iH2O: it's a Swiss butter knife | ||
18:33
troys joined
|
|||
[Coke] | #778 - for windows compatibility, going to suggest .p6 for runnable perl6 code. | 18:35 | |
github.com/perl6/doc/issues/778 | |||
18:36
kyclark joined
|
|||
masak | [Coke]: +1 | 18:36 | |
viki | harmil_wk: it's almost like the :v adverb could take a value. But I don't know if it's too magical | 18:37 | |
18:37
sufrostico left
|
|||
viki | harmil_wk: like %h<foo>:v("meow"), where it gives you "meow" for keys that don't exist. | 18:37 | |
Though, now that I think of it... how would that work one slices? :) Too complex | |||
dalek | c: cf8bf43 | coke++ | doc/Language/modules.pod6: Fix #778 |
18:38 | |
synopsebot6 | Link: doc.perl6.org/language/modules | ||
18:38
sufrostico joined
18:39
domidumont joined
|
|||
viki | m: sub postcircumfix:<❰ ❱> ($h, *@keys) { dd [$h, @keys]; return @keys.map: {$h{$_}:exists ?? $h{$_} !! "bars"} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱ | 18:42 | |
camelia | rakudo-moar ee8ae9: OUTPUT«[{:foo(42)}, ["foo", "meow"]](42 bars)» | ||
viki | harmil_wk: ^ :) | ||
18:42
iH2O left
|
|||
viki | m: sub postcircumfix:<❰ ❱> ($h, *@keys) { @keys.map: {$h{$_}:exists ?? $h{$_} !! "bars"} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱ | 18:42 | |
camelia | rakudo-moar ee8ae9: OUTPUT«(42 bars)» | ||
viki | m: sub postcircumfix:<❰ ❱> ($h, *@keys, :$default) { @keys.map: {$h{$_}:exists ?? $h{$_} !! $default} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱:default("FOOS!") | 18:43 | |
camelia | rakudo-moar ee8ae9: OUTPUT«(42 FOOS!)» | 18:44 | |
harmil_wk | viki: nice. I think that makes the case that regular hash subscripting should take :default | 18:45 | |
But very nice implementation | |||
viki | m: use MONKEY-TYPING; augment class Hash { multi method AT-KEY (*@keys, :$default!) { @keys.map: {self{$_}:exists ?? self{$_} !! $default} } }; my %h is default("meows") = foo => 42; say %h<foo meow>:default("FOOS!") | ||
camelia | rakudo-moar ee8ae9: OUTPUT«Unexpected named argument 'default' passed in block <unit> at <tmp> line 1» | ||
timotimo | why default when there's //? | ||
viki shrugs | |||
timotimo: becuause that checks for definedness, not existence :) | |||
timotimo | fair enough | 18:46 | |
harmil_wk | timotimo: // doesn't work in the face of a hash with a default trait. | ||
and what viki said... | |||
viki | timotimo: Yeah, I said earlier that // works for many cases | ||
timotimo | ok | ||
need to go grocery shopping now | |||
even though the cat just lied down next to me :( | 18:47 | ||
harmil_wk | timotimo: Just Google Express it ;-) | ||
timotimo | the what now? | ||
harmil_wk | Google Express is their bulk delivery service. My company uses it to stock the kitchens. | ||
timotimo | available outside the US? | 18:48 | |
harmil_wk | Not sure. | ||
timotimo | also, bulk may not be what i need :) | ||
harmil_wk | You need all the Ramen! ;) | ||
timotimo | what do i do with 500kg of mixed pickles? | ||
dalek | c: c18f617 | coke++ | doc/Language/faq.pod6: Re-word spec faq Fixes #772 |
||
synopsebot6 | Link: doc.perl6.org/language/faq | ||
harmil_wk | They're mixed. The only right solution is to sort them. | ||
timotimo | clearly | ||
18:51
zakharyas joined
|
|||
[Coke] | m: my $a = 3; $a min=5; say $a; $a min=2; say $a; | 18:56 | |
camelia | rakudo-moar ee8ae9: OUTPUT«32» | ||
dalek | c: b28c487 | coke++ | doc/Language/operators.pod6: Remove reference to old RT The example works, the RT is closed, the note does nothing. Fixes #623 |
||
synopsebot6 | Link: doc.perl6.org/language/operators | ||
18:57
sufrostico left
|
|||
viki | [Coke]++ doing stuff with tickets. | 18:57 | |
18:58
itcharlie left
18:59
domidumont left,
setty1 joined
|
|||
[Coke] | viki: I'm afraid it's going to be worse when I'm done, I'm closing the easy ones! :) | 19:00 | |
19:01
maybekoo2 joined
|
|||
viki | mst++ well, that was a very entertaining talk :) | 19:04 | |
mst | :D | 19:07 | |
viki: the "sometimes somebody has to shout go" phenomenom is important to remember when cat herding stuff | |||
viki | I'm definitely making a mental note. | ||
dalek | ecs: a9f8526 | (Stéphane Payrard)++ | S19-commandline.pod: suppress mention of dormant or defunct projects Update for the current state of rakudo |
19:11 | |
c: 58c4b20 | (Athos Ribeiro)++ | doc/Language/unicode_entry.pod6: Mention smartquotes Mention unicode quotes. See #332 for reference |
19:13 | ||
synopsebot6 | Link: doc.perl6.org/language/unicode_entry | ||
c: 0494ba3 | (Zoffix Znet)++ | doc/Language/unicode_entry.pod6: Merge pull request #996 from athos-ribeiro/smartquotes Mention smartquotes |
|||
synopsebot6 | Link: doc.perl6.org/language/unicode_entry | ||
c: 8da0704 | (Vynce Montgomery)++ | doc/Language/syntax.pod6: Clarifications on numeric literals Belief in negative numeric literals creates false expectations regarding precedence conflicts (see #971) |
19:16 | ||
synopsebot6 | Link: doc.perl6.org/language/syntax | ||
c: d932df6 | (Zoffix Znet)++ | doc/Language/syntax.pod6: Merge pull request #991 from VynceMontgomery/patch-3 Clarifications on numeric literals |
|||
synopsebot6 | Link: doc.perl6.org/language/syntax | ||
19:16
RabidGravy joined
|
|||
dalek | c: 9e1d756 | (Sterling Hanenkamp)++ | doc/Type/Array.pod6: Resolves #977: Correct callable args on splice |
19:19 | |
synopsebot6 | Link: doc.perl6.org/type/Array | ||
c: 0d4390f | (Zoffix Znet)++ | doc/Type/Array.pod6: Merge pull request #978 from zostay/splice-callable-args Resolves #977: Correct callable args on splice |
|||
synopsebot6 | Link: doc.perl6.org/type/Array | ||
19:19
kyclark left
19:23
darutoko left,
kyclark joined
|
|||
viki | Could use more eyes for this PR: github.com/perl6/doc/pull/963 | 19:24 | |
I don't like it, but maybe it's just me. | |||
19:24
cale2 joined
|
|||
cale2 | hello world | 19:24 | |
viki | \o | 19:25 | |
cale2 | I downloaded the 64bit msi installer, but `perl6` and `panda` both don't show up in my command prompt | ||
viki | hm | ||
cale2 | My PATH was automatically modified as well. I confirmed that the variables are in the PATH | ||
viki | And does the modified PATH point to the location where the executables were installed to? | 19:26 | |
cale2 | I downloaded and ran the 5th file down: rakudo.org/downloads/star/ | 19:27 | |
viki | Yeah, that looks right. | ||
viki needs to learn the Rakudo Star release process :( | |||
Ignorance hurts :( | |||
cale2 | oops | 19:28 | |
viki | ? | ||
cale2 | The MSI installed the path variables in my user path and not the system path | ||
added it to system PATH and it works :) | |||
viki | \o/ | 19:29 | |
RabidGravy | HARR! | ||
cale2 | Does Perl6 have a built in JSON module? | ||
RabidGravy | no | ||
cale2 | I see a lot of JSON modules on the panda list, but where do I find what is already built in? | ||
viki | cale2: it technically does have a partial implementation of a JSON encoder, but it's internal and shouldn't be used. | 19:30 | |
RabidGravy | the Rakudo Star has JSON::Fast | ||
viki | Yeah, JSON::Fast is good | ||
cale2 | Interesting. Is perl6 trying to stay away from cargo cults or does it not have a standard library? | ||
harmil_wk | viki: commented in a general sense about ordering of what I would introduce the user to first (e.g. the example first, then the explanation of the gory details) | ||
19:30
nicq20 joined
|
|||
harmil_wk | cale2: Are those two disjoint | 19:31 | |
masak | m: say to-json(42) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«42» | ||
harmil_wk | ? | ||
masak | (and this gives a deprecation warning locally) | ||
viki | cale2: it comes with a couple of modules, like NativeCall and Test, but no "standard library" no. | ||
masak | m: say to-json([1, 2, { foo: 42}]) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«Can't serialize an object of type Block in block <unit> at <tmp> line 1» | ||
cale2 | But Rakudo Star comes packaged with some of the more popular 3rd party modules? | ||
masak | m: say to-json([1, 2, { foo => 42 }]) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«[ 1, 2, { "foo" : 42 }]» | ||
viki | cale2: correct. | ||
masak | argh, too much JavaScript lately ;) | ||
cale2 | Is there a list of modules that it comes with? | ||
viki | cale2: and ignore what masak is showing right now. That function is the internal one I mentioned and it was made even more internal. The bot just has deprecation warnings disabled. | 19:32 | |
harmil_wk | cale2: that depends on what you mean by "modules that it comes with"... do you consider "Hash" to be a module it comes with? It's technically a module... | ||
RabidGravy | cale2, github.com/tadzik/Task-Star/blob/m.../META.info has the full list | ||
viki | harmil_wk: no, it's not a module. | 19:33 | |
m: use Hash; | |||
camelia | rakudo-moar ee8ae9: OUTPUT«===SORRY!===Hash is a builtin type, not an external module» | ||
viki | RabidGravy: is that still up to date tho? | ||
cale2 | I guess Panda won't double install something if you already have it, right? | ||
RabidGravy | viki, not sure | 19:34 | |
viki | cale2: right | ||
harmil_wk | viki: Hash.pm is a module... it's just not user-"use"able. github.com/rakudo/rakudo/blob/nom/...re/Hash.pm | ||
That was why I was asking for clarification | |||
RabidGravy | it's part of the core | ||
cale2 | Cheers to kyclark for his WIP book kyclark.gitbooks.io/metagenomics/c...world.html | ||
viki | harmil_wk: no it's not. That file is combined into a single huge setting file when you compile Rakudo | ||
kyclark | Thanks! | 19:35 | |
harmil_wk | viki: I'm well aware how it's compiled, yes. | ||
That module, that is :) | |||
cale2 | kyclark: are you not happy with any ports of perl5 web frameworks yet? I thought someone was porting mojo or something... | 19:36 | |
harmil_wk | It's not really a Module object in the core, if that's what you mean | ||
19:37
ufobat left
|
|||
viki | harmil_wk: I meant that it's not a module. It's a core type. | 19:37 | |
kyclark | cale2: I still use P5/Mojo for web development. I’m extremely tied to my tools like DBIx::Schema, SQL::Translator, DBI, DBD::mysql, and Mojolicious. I will try to do my part to pull those along. | ||
viki | If you're so aware of how it's compiled, maybe you should not confused new users by asking them if they consider Hash.pm a module ~_~ | ||
harmil_wk | Sigh, nevermind. | ||
19:37
harmil_wk left
19:38
domidumont joined
|
|||
kyclark | blogs.perl.org/users/ken_youens-cla...erl-5.html | 19:38 | |
viki | Rage quit. nice. | 19:39 | |
19:39
sufrostico joined
|
|||
RabidGravy | boom! | 19:39 | |
19:39
cdg left
|
|||
RabidGravy | shall I do an advent post? | 19:40 | |
viki | RabidGravy: Yes! | ||
masak | RabidGravy: yes, please | ||
RabidGravy | and if so what | ||
masak | something you like | ||
viki | Anything | ||
RabidGravy | stuff | 19:41 | |
viki | kyclark: FWIW Arrays are Cool and you don't need an explicit .elems on them | 19:43 | |
m: my @a = ^10; say 2 < @a < 20; | |||
camelia | rakudo-moar ee8ae9: OUTPUT«True» | ||
viki | m: my @a = ^10; say 2 < @a < 4; | ||
camelia | rakudo-moar ee8ae9: OUTPUT«False» | ||
viki | m: my @a = ^10; say @a+2; | ||
camelia | rakudo-moar ee8ae9: OUTPUT«12» | ||
kyclark | OK! | 19:46 | |
nicq20 | Is there a way to see what threads/promises are currently running? | ||
viki | m: say $*SCHEDULER.queue.^methods | 19:48 | |
camelia | rakudo-moar ee8ae9: OUTPUT«()» | ||
viki | :/ | ||
nicq20 | I've been wandering the documentation for a while and have not found much about this. | 19:52 | |
viki | .tell harmil_wk Well, I've read S11 and it states modules have "support for Perl 6 standard export semantics". Since you can't `use` Hash.pm, those export semantics are unavailable. If I'm wrong, tell me why—don't rage-quit. | ||
yoleaux | viki: I'll pass your message to harmil_wk. | ||
viki | nicq20: I see the scheduler has a .queue method onto which threads are pushed, but it doesn't appear to be something explorable from user code: github.com/rakudo/rakudo/blob/nom/...er.pm#L166 | 19:54 | |
m: use nqp; start { sleep 4 }; say nqp::atpos($*SCHEDULER.queue,0) | 19:55 | ||
camelia | rakudo-moar ee8ae9: OUTPUT«(Mu)» | ||
viki shrugs | |||
m: use nqp; start { sleep 4 }; say nqp::elems($*SCHEDULER.queue) | 19:56 | ||
camelia | rakudo-moar ee8ae9: OUTPUT«(signal SEGV)» | ||
viki | hehehe | ||
19:59
ufobat joined
|
|||
viki | .u non-breaking | 19:59 | |
yoleaux | U+00A0 NO-BREAK SPACE [Zs] ( ) | ||
U+2011 NON-BREAKING HYPHEN [Pd] (‑) | |||
nicq20 | viki: Oh, well. Thank for your help! :) | 20:00 | |
viki | nicq20: you can write your own scheduler tho | ||
and stick it into $*SCHEDULER | 20:01 | ||
nicq20 | viki: Hmm... That could work. Make a new class and inherit the ThreadPoolScheduler? | 20:02 | |
viki | m: my $*SCHEDULER = class :: is ThreadPoolScheduler { method cue (|) { say "cuing up stuff!"; nextsame;}}.new; await start { say "hi" }; | ||
camelia | rakudo-moar ee8ae9: OUTPUT«cuing up stuff!hi» | ||
viki | w00t | ||
20:04
tomaw left
20:05
tomaw joined
|
|||
dalek | c: c4f9a3e | coke++ | doc/Language/unicode_entry.pod6: smart quotes is 2 words |
20:06 | |
synopsebot6 | Link: doc.perl6.org/language/unicode_entry | ||
c: 78c44e1 | coke++ | doc/Language/unicode_entry.pod6: Perl 6 requires non-breaking space |
|||
synopsebot6 | Link: doc.perl6.org/language/unicode_entry | ||
viki | [Coke]++ finishing stuff I keept forgetting to finish :) | 20:07 | |
20:08
domidumont left
20:09
Tonik joined
|
|||
dalek | : eb2607a | RabidGravy++ | misc/perl6advent-2016/schedule: Update schedule Add an advent post |
20:10 | |
20:11
espadrine joined
20:12
bjz joined
20:21
kyclark left
20:23
AlexDaniel joined
|
|||
[Coke] | viki: what now? | 20:28 | |
viki | [Coke]: ? | ||
[Coke] | what stuff did I do? | 20:29 | |
(that you were going to finish?) | |||
viki | [Coke]: oh, I was running make xtest a couple of times and fixing those issues you fixed and kept forgetting about that terminal window | ||
[Coke] | ah. :) | 20:31 | |
AlexDaniel | as for closing things just because nobody cared for them enough – I disagree. Having lots of issues open gives enough room for contributors. And I also don't see how it could be different from rakudo ticket queue (you're not going to say that we should close our eyes on bugs that are hard to solve, right?) | 20:34 | |
though I do agree that we can start being slighly more aggressive when closing tickets, just a little bit | 20:35 | ||
viki | Having lots of issues open burns out contributors reading through hundreds of tickets that all end with indecision. | 20:36 | |
At least that's the case for me. | |||
I think I went through ~400 tickets before I got fed up. | |||
And it's not about "hard to fix" bugs. It's about tickets that don't really describe a bug or have a bunch of people "wondering" what would the right behaviour be. | 20:37 | ||
Even to point to a ticket that I think describes a buggy behaviour: rt.perl.org/Public/Bug/Display.htm...et-history | 20:39 | ||
20:39
cpage_ joined
|
|||
viki | Well, it's marked with @LARRY and from what I understand TimToday himself claimed that was not a bug. So what's the goal of the ticket? | 20:39 | |
Is it to solicit more feedback? At which point will it be closed? | 20:40 | ||
AlexDaniel | to find another LARRY, I guess? It has been open for three days, leave it alone | ||
viki | What do you mean "you guess"? You opened it! What goal did you wish to achieve by opening the ticket? | ||
20:41
chris2 left
|
|||
masak | I agree it's surprising behavior | 20:42 | |
but I also see where TimToady is coming from | |||
viki | masak: I don't. Why is the current behaviour not a bug? | 20:43 | |
masak | basically, if you think grammars and backtracking are going to be best buddies, then you are very confused and need to look into that confusion | ||
AlexDaniel | Well, my goal is to get the thing fixed in some way. Now I see two ways: either fix it in rakudo, or document it as a trap. To fix it in rakudo we would need a some sort of a decision, which is kinda there given that there's a comment by Larry, so I'm kinda hoping somewhere deep in my heart that somebody is going to come and save the world | ||
masak | TimToady knows this very well | ||
AlexDaniel | or, as mentioned already, perhaps there will be some peer pressure ;) | ||
masak | I'm only slowly discovering it, the hard way | ||
your (implied) proposed fix seems to be "well, make the grammar backtrack more!" | 20:44 | ||
which seems misguided | |||
viki | Ah | ||
masak | good grammars don't backtrack all that much | ||
[Coke] | viki: I think part of the issue on that particular ticket (130081) is that larry's decision was linked to, not quoted. makes it harder to find. If larry said it's not a bug, it's not a bug, we can close it out. | 20:45 | |
masak | doesn't look like a bug to me | ||
basically, you managed to construct a grammar that does not manage its backtracking well. it's a kind of "doctor, it hurts when I do this", although I realize that's not fun to hear :) | 20:46 | ||
[Coke] leaves it to masak to close out. *tag* | |||
AlexDaniel | m: grammar G { regex TOP { ‘a’ || ‘abc’ } }; say G.parse(‘abc’) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«Nil» | ||
masak | hah | ||
AlexDaniel | m: grammar G { rule TOP { ‘a’ || ‘abc’ } }; say G.parse(‘abc’) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«「abc」» | ||
AlexDaniel | hmhm | ||
viki | :S | ||
masak | m: grammar G { regex TOP { <foo> }; regex foo { ‘a’ || ‘abc’ } }; say G.parse(‘abc’) | 20:47 | |
camelia | rakudo-moar ee8ae9: OUTPUT«Nil» | ||
viki | Oh, .ws token | ||
20:50
sufrostico left
20:52
sufrostico joined
|
|||
AlexDaniel | masak: I think you've got a point, but I still don't understand this: | 20:54 | |
m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] ‘z’ } }; say G.parse(‘abc’) | |||
camelia | rakudo-moar ee8ae9: OUTPUT«Nil» | ||
AlexDaniel | oops | ||
m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] } }; say G.parse(‘abc’) | |||
camelia | rakudo-moar ee8ae9: OUTPUT«Nil» | ||
AlexDaniel | m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] ‘z’ } }; say G.parse(‘abcz’) | ||
camelia | rakudo-moar ee8ae9: OUTPUT«「abcz」» | ||
AlexDaniel | so why is it ok to try another alternative in one case and not in another? | ||
20:56
chris2 joined
|
|||
masak | I guess the difference is what happens strictly on the inside of the grammar, and what happens at its boundaries, like the extra ^ $ assertions added to the TOP rule from the outside | 20:58 | |
nicq20 | AlexDaniel: Seems to work if you use a Junction instead of an OR. | ||
arnsholt | I thought .parse only anchored to the start? | ||
AlexDaniel | nicq20: because ‘abc’ will match first | 20:59 | |
nicq20 | AlexDaniel: Oh, nm. Right. | ||
masak | nicq20: they're not exactly junctions in the regex slang, but you're right. that's because `|` doesn't work by backtracking | ||
arnsholt: nope. | |||
m: grammar G { regex TOP { ab } }; say G.parse("abc") | |||
camelia | rakudo-moar ee8ae9: OUTPUT«Nil» | ||
20:59
kyclark joined
|
|||
arnsholt | Oh. Never mind me then =) | 21:00 | |
nicq20 | masak: They are not Junctions? | ||
21:00
FROGGS left,
cdg joined,
cdg left
21:01
cdg joined
21:02
danlei left
|
|||
masak | nicq20: they are finite automata, shrewdly dressed up with the same syntax as (dis)junctions in the main language. | 21:04 | |
nicq20: I've always liked swtch.com/~rsc/regexp/regexp1.html for its clarity and simplicity. if you're curious for more details, I recommend it. | 21:05 | ||
nicq20 | masak: Well, I know what I'm doing for the next half-hour! :) | ||
masak | :) | ||
fun fact: the person who wrote that also implemented big parts of the golang compiler infrastructure. | 21:06 | ||
21:06
bjz left
|
|||
viki | Aside from surprise, there's also an action-at-a-distance thing going on that I don't like. If I subclass a grammar and add a token with || in it, whether it works or not depends on what follows it. As a user, I was told `regex` backtracks and .parse() has an implied $ for a successful match. Do we lose anything by making it implied for all cases? I'm not buying the "you suck at grammars" as an excuse to have | 21:06 | |
this special exception | |||
masak | not saying anyone sucks. but grammars and backtracking are traditionally not a great combo. | 21:08 | |
nicq20 | masak: Why not? | 21:09 | |
masak | I wish I could explain why a bit better. to a first approximation, you want your parse time to be O(n) on the length of the parsed text, not O(2**n) | ||
the latter is what you'll get with enough backtracking | 21:10 | ||
AlexDaniel | by the way | ||
arnsholt | Also, when you have many backtracking units interacting, they combine in non-trivial ways | ||
Which makes your grammar hard to reason about | |||
21:11
Tonik left
|
|||
masak | imagine if your compiler slowed down by some factor of `k` for every character you added to your program. you'd call it a bad compiler. | 21:11 | |
AlexDaniel | in case of [ ‘a’ || ‘abc’ ] ‘z’, how can I prevent it from trying ‘abc’ if ‘a’ matched? | ||
masak | this is why automata are great. because they "try all the alternatives at once". | ||
arnsholt | AlexDaniel: Wat? 'abc' can't match, unless 'a' matches | 21:12 | |
DrForr | INTERCAL had something like that; you needed to have a certain preportion of 'DO'/'PLEASE DO' or it would randomly introduce slowdowns. | ||
And if you've got enough cores it can search all the alternatives in constant time :) | 21:13 | ||
AlexDaniel | arnsholt: not sure what you mean | ||
masak | DrForr: no, it will simply fail to compile. | ||
nicq20 | The slow down makes sense. But why not have the "automata" be the way backtracking works anyway? | ||
masak | DrForr: you may be thinking of the dialects of INTERCAL that allow several `COME FROM` on the same label, though. a way to achieve threading. | ||
nicq20 | Err... I worded that wrong. | ||
DrForr | Oh, right. Still a slowdown in a certain sense :) | ||
arnsholt | AlexDaniel: 'a' is a prefix of 'abc'; so if 'abc' matches at a position 'a' will necessarily also match in that position | 21:14 | |
masak | nicq20: there are two models at play here. one is the sequential/deterministic one, the other is the parallel/non-deterministic one. | ||
nicq20: essentially, that's the difference between `|` and `||` | |||
er, but the other way around :) | 21:15 | ||
viki | Which one is which? | ||
Xliff | Does rakudo have modules for HTTPS? HTTP::Client only supports HTTP. | ||
DrForr | You can also see it as 'a' followed by \lambda | 'bc' :) | ||
RabidGravy | yes | ||
viki | Xliff, I know LWP::Simple does HTTPS | ||
AlexDaniel | OK, now if that's OK and doesn't count as backtracking, why would .parse not do that as well? | ||
Xliff | viki: Thanks! | 21:16 | |
RabidGravy | both LWP::Simple and HTTP::UserAgent will if IO::Socket::SSL is installed | ||
AlexDaniel | masak: that's the question to you I think, because you seem to understand it better | ||
masak | <masak> I guess the difference is what happens strictly on the inside of the grammar, and what happens at its boundaries, like the extra ^ $ assertions added to the TOP rule from the outside | 21:17 | |
AlexDaniel: ^ | |||
AlexDaniel | to be honest I didn't understand it | 21:18 | |
masak | let me rephrase it, then | ||
to you, it seems like an unsightly exception to a rule | |||
to me, it seems that you're expecting grammars to backtrack more than they actually can | |||
AlexDaniel | what do you mean by can? In case of [ ‘a’ || ‘abc’ ] ‘z’ it does without any issue | 21:19 | |
masak | I mean "what are grammars for?" (not backtracking) | 21:20 | |
sorry, I'm not explaining this too well | |||
but also, so far I notice (a) complaining that things are not consistent (b) no actual proposed solution :) | 21:21 | ||
viki | masak, I have proposed one. An implicit anchor to end of string | 21:22 | |
AlexDaniel | ok, so instead of saying that it is not a bug we now admit that it is not consistent but say that we don't have a solution for it, that's an interesting step | ||
so yes, the solution is to have implicit $ on the TOP rule | |||
(or whatever the top rule is) | |||
masak | also also, for the record, I'm not defending the inconsistency as such -- more like explaining why it's not in the best interest of grammars to encourage more backtracking | ||
viki | And my question was: does that create a problem? | 21:23 | |
masak | I think we used to have an implicit `$` on the TOP rule at some point. | ||
might be mistaken, though. | |||
the one to have this discussion with is actually pmichaud :) | |||
AlexDaniel | ah ok, there's an easy way to see | ||
masak | but pmichaud sightings are rare these days | ||
AlexDaniel | commit: all grammar G { regex TOP { 'a' || 'abc' }; }; say G.parse('abc') | ||
committable6 | AlexDaniel, gist.github.com/73a90f7f1264ba8e13...c14c0d8e02 | 21:24 | |
viki | :) | ||
2 years ago it seems | 21:25 | ||
3 even | |||
AlexDaniel | I have no idea what is going on in 2014.01,2014.02, but I guess we didn't | ||
ah | |||
it did partial match | |||
viki | ahhhh, right | ||
masak | did you end up finding a pmichaud commit at the other end? :) | ||
AlexDaniel | commit: all grammar G { regex TOP { 'a' || 'abc' }; }; say G.subparse('abc') | 21:26 | |
21:26
sufrostico left
|
|||
committable6 | AlexDaniel, gist.github.com/d7ad814da6933b8602...9e132e7d1b | 21:26 | |
viki | haha | ||
AlexDaniel | okay, I see | ||
so .parse was changed and its previous behavior was kept in .subparse | 21:27 | ||
21:28
sufrostico joined
21:30
AlexDaniel left
21:33
rurban joined
|
|||
nicq20 | Well looks like I'm going to use | instead of || in grammars. | 21:34 | |
masak | correct. | 21:36 | |
21:37
seatek joined
21:38
zakharyas left
21:39
AlexDaniel joined
21:40
ocbtec left
|
|||
AlexDaniel | omg, laptop fell from my lap and turned off. While it was at it, it tipped over a full cup of tea | 21:40 | |
/o\ | |||
RabidGravy | :( | 21:41 | |
AlexDaniel | now let's try to find this commit… | ||
DrForr | Its next step will obviously be to try to commit suicide by cop. | 21:42 | |
AlexDaniel | okay | ||
github.com/rakudo/rakudo/commit/4d...092c27c0ff | |||
21:44
nicq20 left
21:46
bjz joined,
kyclark left
21:47
bjz left
21:48
bjz joined
21:53
cpage_ left,
sufrostico left
21:58
TEttinger joined
22:00
bjz left,
skids left
22:10
sufrostico joined
|
|||
cale2 | I hope grammars get a whole chapter in the new Learning Perl 6 book that was announced | 22:10 | |
22:10
sufrostico left,
sufrostico joined
22:13
firstdayonthejob joined
22:14
RabidGravy left,
rindolf left
|
|||
masak | they definitely deserve to :) | 22:15 | |
AlexDaniel | cale2: do you know about docs.perl6.org/language/grammar_tutorial ? | 22:18 | |
DrForr | cale2: Yes, they will. | 22:19 | |
AlexDaniel | I mean, what we have in our docs right now is perhaps less than awesome, but feel free to contribute | ||
DrForr | I still mean to write one, I just need to get the current projects straightened out. | 22:20 | |
cale2: There's also a sequence at theperlfisher.blogspot.ro. | |||
22:21
cpage_ joined
22:25
kyclark joined
|
|||
cale2 | thanks for the tutorial links! | 22:28 | |
22:29
kurahaupo__ left
|
|||
kyclark | I’m going to introduce modules and OOP to my students on Thursday. I’m a bit fuzzy myself on some of the details. I would love feedback on this chapter: kyclark.gitbooks.io/metagenomics/c...d_oop.html | 22:33 | |
AlexDaniel | kyclark: do you provide these files (e.g. DNA.pm6) separately in an archive or something? | 22:38 | |
kyclark | Yes, in my Github repo github.com/kyclark/metagenomics-book | ||
22:39
sufrostico left
|
|||
kyclark | E.g. github.com/kyclark/metagenomics-bo.../perl6/oop | 22:39 | |
AlexDaniel | kyclark: because it does not seem to be possible to copy the examples without the line numbers. Not an issue for me, I know how to delete that quickly, but for students it may be | ||
kyclark: so perhaps link it from the text or something | |||
kyclark | Right, I’m still not sure it’s the best way to have the line numbers. I like to be able to comment on particular lines, but it’s much busier with them. | ||
22:41
sufrostico joined
|
|||
kyclark | So I have to run do carpool, but I’ll leave my window open. Or email [email@hidden.address] witih comments. Much appreciated! | 22:41 | |
AlexDaniel | kyclark: “Perl does automatically include” – “does not” ? | 22:42 | |
ah alright I'll write an email | 22:43 | ||
MasterDuke | kyclark: "Here's an example a simple module" is missing an "of" | 22:48 | |
22:52
kyclark left
|
|||
AlexDaniel | MasterDuke: I'll include your message in my email | 22:53 | |
22:54
espadrine left,
eivindgl joined
22:55
eivindgl left
22:56
sufrostico left
22:58
sufrostico joined
23:03
wamba left
|
|||
masak | kyclark: my feedback is that I'd advice against doing `is Str` :) | 23:07 | |
(I'd go with composition instead of inheritance. not just in this case, but in many, many cases.) | 23:08 | ||
though to your credit, you describe OO as "perhaps the most popular programming paradigm of the 90s" -- and inheritance was a big part of that hype ;) | 23:10 | ||
23:10
maybekoo2 left
|
|||
masak | but I claim that there's a more useful, responsible kind of OO that has grown since the 90s, and that prefers to do `has Str` rather than `is Str` | 23:13 | |
23:14
Actualeyes joined
|
|||
cale2 | masak: in kyclark's exact scenario here, isn't `is Str` the better data description? What is DNA? Well, it's a string of characters | 23:30 | |
timotimo | but does DNA fit everywhere a Str does? | 23:31 | |
23:32
cdg left
|
|||
cale2 | someone needs to write a comparison gist using composition with his code | 23:32 | |
I need to see the composition one side by side haha | 23:33 | ||
23:34
rurban left
23:35
rpburkholder joined
|
|||
dj_goku | what is the easiest way to print eof? thinking for IO::Socket::Async. | 23:36 | |
masak | cale2: what timotimo said. generally, I find it safer to start from a "clean slate" the way composition does, and only gradually take on capabilities of Str when I see they make sense for DNA. | ||
cale2: this is a heuristic, but... inheritance makes the most sense within a framework. but Str belongs to Perl 6 and DNA belongs to user code. | 23:37 | ||
'night, #perl6 | |||
23:37
cale2 left
23:40
stevieb joined
23:43
ufobat left
23:46
kyclark joined
23:48
lostinfog left
|
|||
kyclark | Thanks for the comments. | 23:50 |