»ö« 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
avuserow joined
00:03
mawkish__ left
00:10
pyrimidine left
00:13
cale2 joined
00:22
bjz joined
|
|||
cale2 | Hey, was there ever a discussion about running perl6 on erlang's BEAM vm? | 00:25 | |
b2gills | I don't recall that ever being discussed | 00:32 | |
TimToady | I did have dinner with Joe Armstrong several times last year :) | 00:35 | |
but we mostly didn't talk shop... | |||
cale2 | Joe seems extremely charismatic in his talks | 00:37 | |
b2gills | After taking a quick look, it looks like there would have to be a VM on top of BEAM to support the mutable nature of Perl 6 | 00:38 | |
cale2 | I know Lisp Flavored Erlang can use objects. Would be interesting to look into | ||
00:39
wamba joined
|
|||
cale2 | How do you actually "target" a VM? | 00:39 | |
You just write code that parsers perl6 and turns it into VM bytecode? | 00:40 | ||
b2gills | You get nqp running on it. Then you get nqp compiling itself, Then you get nqp to compile Rakudo | 00:41 | |
cale2 | Oh! So NQP exists to make this task more simple. Because the bridge from NQP to Rakudo already exists? | 00:44 | |
00:49
wamba left
00:51
wamba joined
00:53
perlawhirl joined
|
|||
MasterDuke | cale2: yep. that's why the JVM and JS backends are mostly done in nqp | 01:02 | |
01:04
wamba left
|
|||
TimToady | MasterDuke: you might check to see if find_symbol is running quite so hot now | 01:05 | |
MasterDuke | nice, i'll run another profile | ||
01:07
kurahaupo left
|
|||
SmokeMachine | i have: has $.my-attr is rw; and I want to .wrap() the my-attr method, but only setting a value ($obj.my-attr = 42) but not when getting (say $obj.my-attr)... is that possible? | 01:12 | |
brokenchicken | Yes, write your own accessor | 01:13 | |
SmokeMachine | I wanna do something like ".is-dirty()" method on attributes of my class... (applied by a role...) | ||
brokenchicken | Ah, OK | ||
No idea | 01:14 | ||
01:14
perlawhirl left
|
|||
SmokeMachine | I mean: class C does Dirtabble {has $.my-attr is rw}; my $c = C.new; $c.my-attr = 42; $c.dirty-attrs # my-attr | 01:15 | |
timotimo | possible, but a bunch of work :) | 01:16 | |
SmokeMachine | I thought something like mixing AttributeHow and wrap set_value... | ||
01:16
benchable6 left
|
|||
timotimo | no, that won't help | 01:16 | |
setting the value of an attribute hardly ever goes through set_value | 01:17 | ||
... at least i think so? | |||
TimToady | I believe that's correct | ||
01:17
perlawhirl joined
|
|||
timotimo | you can run a piece of code early at compose time that'll go through all attributes and generate an accessor method for you | 01:17 | |
it'd use a proxy with a simple FETCH and a complex STORE | |||
01:17
kurahaupo joined
01:18
kurahaupo left
|
|||
SmokeMachine | I think I already so a code like that many years ago... but I don't remember if it was a perl6 example or a Moose's code... :( | 01:18 | |
timotimo: I tried that... but I got a infinite loop... | |||
01:18
geekosaur left,
kurahaupo joined,
kurahaupo left
|
|||
timotimo | i'd ask to see your code but i'm on my way to bed :) | 01:18 | |
SmokeMachine | www.irccloud.com/pastebin/aT82QkxL/ | 01:19 | |
timotimo: sorry, I did send before read... good night! | |||
timotimo | maybe it jumps out at me | 01:20 | |
attr-columns? that's new to me | |||
01:20
geekosaur joined
|
|||
SmokeMachine | thats my method... | 01:20 | |
timotimo | oh, ok | ||
does that already work at that time? | 01:21 | ||
since the class isn't composed yet | |||
SmokeMachine | Im grepping all attires that does a specific role... | ||
timotimo | ah | ||
at what exact point does it loop? | |||
SmokeMachine | I did a method, not a phaser... so Im just calling that method to test... | ||
timotimo | does it infinispam STORE or FETCH? | ||
SmokeMachine | FETCH | 01:22 | |
01:22
kurahaupo joined
|
|||
timotimo | hm, well ... you're just wrapping the methods, so it doesn't have to happen so early | 01:22 | |
SmokeMachine | its happening when I try to get the value... | 01:23 | |
timotimo | i'd say nextsame isn't targeting the right thing | ||
because you're already in the FETCH method | |||
SmokeMachine | it can strores, but loops on fetching... | ||
timotimo | so you're trying to reach the next FETCH method | ||
i'm not sure if you can have it output the state and full contents of the dispatcher from inside that method | |||
SmokeMachine | shouldn't be the samo with the store? | 01:24 | |
timotimo | also, i never put "method" into proxy | ||
yeah, that part is weird. | |||
SmokeMachine | it doesn't work with sub... | ||
timotimo | it could very well be that STORE isn't doing what you want at all | ||
since you can't check | |||
why doesn't it work? | |||
oh, and also: | |||
you can't just store the dirtyness on the attribute itself | 01:25 | ||
that's shared between all instances | |||
instead, you can give the class a private attribute that you mix in with the role that can store dirty bits for you | |||
SmokeMachine | m: my $a := Proxy.new: FETCH => sub {}, STORE => sub {}; $a = 42 | ||
camelia | rakudo-moar dd514d: OUTPUT«Too many positionals passed; expected 0 arguments but got 2 in sub at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
timotimo | well, of course | ||
m: my $a := Proxy.new: FETCH => sub fedch {}, STORE => sub stoar {}; $a = 42 | 01:26 | ||
camelia | rakudo-moar dd514d: OUTPUT«Too many positionals passed; expected 0 arguments but got 2 in sub stoar at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
timotimo | m: my $a := Proxy.new: FETCH => sub fedch {}, STORE => sub stoar(|c) { say c.perl}; $a = 42 | ||
camelia | rakudo-moar dd514d: OUTPUT«Too many positionals passed; expected 0 arguments but got 1 in sub fedch at <tmp> line 1 in sub stoar at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
timotimo | m: my $a := Proxy.new: FETCH => sub fedch(|c) { say c.perl }, STORE => sub stoar(|c) { say c.perl}; $a = 42 | ||
interesting, that also infiniloops? | |||
SmokeMachine | timotimo: that makes sense! i can't store that on the attribute! :( | ||
camelia | rakudo-moar dd514d: OUTPUT«(timeout)» | 01:27 | |
timotimo | ah, hahahaha | ||
am i trying to output the self, which is the proxy, and so it fetches? | |||
anyway, a bit too tired to continue this now | |||
brokenchicken | m: my $a := Proxy.new: FETCH => method(|c) { say c.perl }, STORE => method (|c) { say c.perl}; $a = 42 | 01:28 | |
camelia | rakudo-moar dd514d: OUTPUT«5===SORRY!5===Word 'method' interpreted as 'method()' function call; please use whitespace around the parensat <tmp>:1------> 3my $a := Proxy.new: FETCH => method7⏏5(|c) { say c.perl }, STORE => method (|cUnexpected block in infix pos…» | ||
SmokeMachine | timotimo: thanks so much! | ||
timotimo | oh btw | ||
brokenchicken | m: my $a := Proxy.new: FETCH => my method(|c) { say c.perl }, STORE => my method (|c) { say c.perl}; $a = 42 | ||
camelia | rakudo-moar dd514d: OUTPUT«5===SORRY!5===Type 'method' is not declared. Did you mean 'Method'?at <tmp>:1------> 3my $a := Proxy.new: FETCH => my method7⏏5(|c) { say c.perl }, STORE => my method Malformed myat <tmp>:1------> 3my $a := Proxy.new: FETCH => …» | ||
timotimo | do you know of perl6-all-modules? | ||
brokenchicken | huh | ||
SmokeMachine | timotimo: sorry, was that for me? | ||
m: my $a := Proxy.new: FETCH => my method (|c) { say c.perl }, STORE => my method (|c) { say c.perl}; $a = 42 | 01:29 | ||
camelia | rakudo-moar dd514d: OUTPUT«\(42)» | ||
timotimo | hm. it doesn't find anything really interesting | ||
SmokeMachine | brokenchicken: ^ | ||
brokenchicken | Ah right | 01:30 | |
timotimo | jonathanstowe/AccessorFacade/lib/AccessorFacade.pm | ||
might be interesting | |||
SmokeMachine | timotimo: that is!!! thanks! | 01:32 | |
timotimo | eco AccessorFacade | ||
um | |||
buggable: eco AccessorFacade | |||
buggable | timotimo, AccessorFacade 'Provides a method trait to turn indivdual get/set subroutines into a single attribute': github.com/jonathanstowe/AccessorFacade | 01:33 | |
01:33
committable6 left
|
|||
timotimo | i need a bot that can tell me which other bot can do what command | 01:33 | |
TimToady | .oO(How much bot would a bot bot bot if a bot bot could bot bot?) |
01:35 | |
01:38
statisfiable6 left,
evalable6 left,
unicodable6 left,
bisectable6 left
01:39
kurahaupo left,
ggoebel left
|
|||
timotimo | gnite | 01:40 | |
TimToady | o/ | ||
01:40
pyrimidine joined
|
|||
brokenchicken | night | 01:40 | |
SmokeMachine | night | 01:41 | |
01:45
pyrimidine left
01:48
Ben_Goldberg joined,
BenGoldberg left,
Ben_Goldberg is now known as BenGoldberg
01:52
ggoebel joined
01:56
BenGoldberg left
01:58
BenGoldberg joined
|
|||
sammers | hi #perl6 | 02:05 | |
cale2 | hey sammers | 02:06 | |
sammers | hi cale2, guess everyone is sleeping | 02:07 | |
cale2 | possibly lol | ||
I'm going through this forth tutorial skilldrick.github.io/easyforth/ | |||
quite bizarre | |||
02:09
evalable6 joined,
unicodable6 joined,
committable6 joined,
benchable6 joined,
ChanServ sets mode: +v evalable6,
ChanServ sets mode: +v unicodable6,
ChanServ sets mode: +v committable6,
ChanServ sets mode: +v benchable6,
bisectable6 joined,
ChanServ sets mode: +v bisectable6,
statisfiable6 joined,
ChanServ sets mode: +v statisfiable6
|
|||
sammers | cale2, how do you like it so for? | 02:09 | |
02:09
kalkin- joined
|
|||
cale2 | sammers: It's a really cool way to think about lower level programming. much more approachable than assembly IMO | 02:09 | |
02:10
bjz left
02:11
user__ left
02:13
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
BenGoldberg | cale2, Forth is similar to ... basically every other stack oriented programming language in the world. Postscript and befunge come to mind. | 02:13 | |
And dc. | 02:14 | ||
sammers | cale2, maybe you can write a Forth interpreter for p6. I think there was written in p5. | ||
BenGoldberg | And lots and lots of others, but that's just off the top of my head. | ||
cale2 | sammers I was thinking about that actually. But how do you go from a p6 grammar to executing code? O.o | 02:18 | |
I guess you would parse each thing, be it a word or number, etc. Then maybe you'd use the p6 meta object to construct objects for each item that you parse? | 02:19 | ||
MasterDuke | TimToady: nice! looks like find_symbol went from 3rd to 4th with a definite exclusive time decrease. gist.github.com/MasterDuke17/faf9f...f35baaf963 | ||
cale2: github.com/edumentab/rakudo-and-nq...als-course | 02:20 | ||
has examples of creating toy interpreters | 02:21 | ||
SmokeMachine | m: my $a; sub a () is rw {$a}.wrap: sub () is rw {say "wrap"}; a() = 2; say $a # am I doing something wrong? | 02:22 | |
camelia | rakudo-moar dd514d: OUTPUT«2» | ||
cale2 | MasterDuke: thanks! | ||
SmokeMachine | shouldn't that say wrap and die? | 02:23 | |
m: my $a; my $b; sub a () is rw {$a}.wrap: sub () is rw {say "wrap"; $b}; a() = 2; dd $a, $b # am I doing something wrong? | 02:24 | ||
camelia | rakudo-moar dd514d: OUTPUT«Int $a = 2Any $b = Any» | ||
SmokeMachine | shouldn't $a == Any and $b == 2? | ||
02:25
bjz joined
|
|||
SmokeMachine | m: use Test; my $a; my $b; sub a () is rw {$a}.wrap: sub () is rw {say "wrap"; $b}; a() = 2; is $a, Any; is $b, 2 | 02:25 | |
camelia | rakudo-moar dd514d: OUTPUT«not ok 1 - # Failed test at <tmp> line 1# expected: (Any)# got: '2'not ok 2 - # Failed test at <tmp> line 1# expected: '2'# got: (Any)» | ||
BenGoldberg | m: my $a; my $b; sub a () is rw {$a}.wrap: sub () is rw {say "wrap"; $b}; a() = 2; dd $a; dd $b; | 02:37 | |
camelia | rakudo-moar dd514d: OUTPUT«Int $a = 2Any $b = Any» | ||
SmokeMachine | BenGoldberg: seems wrong, isn't it? | 02:39 | |
BenGoldberg | It does. | ||
SmokeMachine | is that a bug? | ||
BenGoldberg | m: my $a = 2; my $b; sub a () {$a}.wrap: sub () {say "wrap"; $b}; dd a(); dd $a; dd $b; | 02:40 | |
camelia | rakudo-moar dd514d: OUTPUT«2Int $a = 2Any $b = Any» | ||
brokenchicken | m: my $a; my $b; sub a () is rw {$a}; &a.wrap: sub () is rw {say "wrap"; $b}; a() = 2; dd $a; dd $b; | 02:41 | |
camelia | rakudo-moar dd514d: OUTPUT«wrapAny $a = AnyInt $b = 2» | ||
SmokeMachine | m: say sub a () is rw {}.wrap: sub () is rw {} | 02:44 | |
camelia | rakudo-moar dd514d: OUTPUT«Routine::WrapHandle.new» | ||
SmokeMachine | it "thinks" it was wrapped... | ||
02:45
z8 joined,
z8 left,
ilbot3 left
02:46
pyrimidine joined
02:47
ilbot3 joined,
ChanServ sets mode: +v ilbot3
|
|||
cale2 | how do you explain the difference between a SORRY! error and a runtime error? | 02:48 | |
"could not find symbol" is runtime error, right? | |||
geekosaur | it's sometimes possible to provoke that at compile time (say, by using a phaser in an unexpected place so compiling the phaser tries to reference the wrong scope; admittedly these usually indicate compiler bugs, or at least LTA errors) | 02:50 | |
brokenchicken | m: my $z = sub a {say "hi"}; dd $z; $z.wrap: sub {say "bye"}; a | 02:52 | |
camelia | rakudo-moar dd514d: OUTPUT«Sub $z = sub a () { #`(Sub|78545376) ... }hi» | ||
02:52
sammers left
|
|||
brokenchicken | m: my $z = sub a {say "hi"}; dd $z === &a | 02:52 | |
camelia | rakudo-moar dd514d: OUTPUT«Bool::False» | ||
brokenchicken | m: my &z = sub a {say "hi"}; dd [&z, &a] | ||
camelia | rakudo-moar dd514d: OUTPUT«[sub a () { #`(Sub|65954840) ... }, sub a () { #`(Sub|65954992) ... }]» | ||
02:53
Cabanossi left
|
|||
brokenchicken | m: my &z = multi a {say "hi"}; multi a is default {say "bye"}; z; a | 02:54 | |
camelia | rakudo-moar dd514d: OUTPUT«hibye» | ||
cale2 | geekosaur: Reason I ask is page 34 in this PDF cloud.github.com/downloads/perl6/b....23.a4.pdf | ||
page 28 in book pages | |||
brokenchicken | So my understanding is the sub {}.wrap doesn't work because that sub object is just for that particular sub, while &foo has all the dispatcher info and stuff, which is what .wrap wants | ||
cale2 | The top example fails to compile, while the bottom fails at runtime. | 02:55 | |
You should be able to determine both at compile time | |||
02:56
Cabanossi joined
|
|||
brokenchicken | m: my $z = sub a {say "hi"}; $z.wrap: sub { say "bye" }; $z() | 02:56 | |
camelia | rakudo-moar dd514d: OUTPUT«bye» | ||
03:04
sammers joined
03:13
labster left
|
|||
Geth | oc: WildYorkies++ created pull request #1167: unicode quotes messes up syntax highlighting |
03:15 | |
brokenchicken | cale2: messing up syntax highlighting where? | 03:16 | |
cale2 | docs.perl6.org/type/Sub | 03:17 | |
brokenchicken | Oh I see | ||
cale2 | first code block example | ||
and the first " is invisible :S | |||
brokenchicken | u: „“ | 03:20 | |
unicodable6 | brokenchicken, U+201E DOUBLE LOW-9 QUOTATION MARK [Ps] („) | ||
brokenchicken, U+201C LEFT DOUBLE QUOTATION MARK [Pi] (“) | |||
brokenchicken | I see them on my box | ||
AlexDaniel | \o/ | 03:21 | |
cale2 | I saw them on github source code. But on Chrome on my mac (it's not the newest OS version though) it's invisible | 03:22 | |
probably warrants discussion on PR | 03:23 | ||
AlexDaniel | discussion on how to install fonts on your machine? Hmm… | ||
brokenchicken | I think there was an issue on that topic | ||
samcv waves at cale2 | 03:24 | ||
will fix that highlighing issue right after I have dinner | |||
brokenchicken | Thios one: github.com/perl6/doc/issues/776 | 03:25 | |
brokenchicken no longer cares about it, despite comments there suggesting otherwise :P | |||
samcv | brokenchicken, do we allow all of those quotation marks for #` quoting? | ||
probably right? | |||
AlexDaniel | yea | 03:26 | |
TEttinger | I do wonder why unicode quotes are used | ||
AlexDaniel | why not | ||
TEttinger | are they easier to enter on some machines? | ||
AlexDaniel | well, here they are as easy to enter as " but that's a custom layout | 03:27 | |
samcv | i just have a compose key | ||
AlexDaniel, what' the custom layout? | |||
i just have compose + < + " | |||
cale2 | samcv: how do you remember what each key combo is? You have a cheat sheet? | ||
AlexDaniel | samcv: meaning that I've created my own keyboard layout | ||
samcv | uhm i look at my compose file | ||
TEttinger | AlexDaniel: there are numerous reasons why not, ranging from the trivial (larger filesize in UTF-8 encoded files) to the more significant (fonts may not display them) to the "well duh" (shift-' doesn't need to look up a compose combo or even press a multi-key combo) | 03:28 | |
cale2 | It's possible I'm missing fonts on my machine. But I don't think so. Because I can see them in the source code. | ||
It's more likely an issue with Chrome, no? | 03:29 | ||
brokenchicken | I see them fine in Chrome on Win | ||
samcv | well < + " is pretty easy to remember | ||
or > + ", or > + ' | |||
etc | |||
AlexDaniel | TEttinger: oh, you mean why people use unicode quotes in general, not just on that particular doc page? | 03:30 | |
TimToady | makes it real easy to avoid shell quote branedamage | 03:31 | |
AlexDaniel | TEttinger: well, first of all you can nest them… then you can copy-paste code into perl6 -e '' without caring about the quotes | ||
brokenchicken | m: my &z = sub a {say "hi"}; dd [&z, &a] | ||
camelia | rakudo-moar dd514d: OUTPUT«[sub a () { #`(Sub|48383000) ... }, sub a () { #`(Sub|48383152) ... }]» | ||
brokenchicken | TimToady: how come these ^ differ? | ||
samcv | this is my XCompose file | 03:32 | |
github.com/samcv/dot-files/blob/ma.../.XCompose | |||
AlexDaniel | m: my $z = sub a {say "hi"}; dd [$z, &a] | ||
camelia | rakudo-moar dd514d: OUTPUT«[sub a () { #`(Sub|67666904) ... }, sub a () { #`(Sub|67667056) ... }]» | ||
samcv | also. samcv++ it's highlighted! well. i created a grammar and got github to include it :) | ||
so XCompose files are highlighted on github. looks nice | |||
more colorful in my editor though | 03:33 | ||
brokenchicken | m: my &z = sub a {say "hi"}; &z.wrap: sub {say "the z"}; &a.wrap: sub {say "the a"}; z; a | ||
camelia | rakudo-moar dd514d: OUTPUT«the zthe a» | ||
samcv | camelia, if i don't know i just Ctrl+F my xcompose file for the symbol or name | ||
AlexDaniel | TEttinger: and the argument about having to look up compose sequences is a bit weird. If someone is using these characters daily, it is definitely not an issue for them, right? | 03:34 | |
samcv | ya | ||
i have M-dash, N-dash, horizontal bar, negative minus all memorized | |||
n + - is n dash, M + - is M-dash, m + - is negative symbol (think minus) | 03:35 | ||
brokenchicken | Also, copy-paste from powerpoint and ilk to code doesn't require changing all the quotes, 'cause we handle them. | ||
samcv | and - + - + - is horizontal bar, used usually when quoting people | ||
TEttinger | the shell quote stuff is an excellent reason | ||
AlexDaniel | brokenchicken: oh yeah! That's a good one! | ||
03:36
makumiku joined
|
|||
AlexDaniel | m: say “here is some “quoted string”, isn't it an excellent reason as well?” | 03:38 | |
camelia | rakudo-moar dd514d: OUTPUT«here is some “quoted string”, isn't it an excellent reason as well?» | ||
samcv | also curly quotes have an opener and a closer | ||
" is ambiguous | |||
AlexDaniel | m: say "here is some \"quoted string\", isn't it an excellent reason as well?\" | ||
camelia | rakudo-moar dd514d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:1------> 3 isn't it an excellent reason as well?\"7⏏5<EOL> expecting any of: argument list …» | ||
AlexDaniel | m: say "here is some \"quoted string\", isn't it an excellent reason as well?" | ||
camelia | rakudo-moar dd514d: OUTPUT«here is some "quoted string", isn't it an excellent reason as well?» | ||
AlexDaniel | ewwww… | ||
makumiku | github.com/slidaway/cthso How should I go about getting HTTPS to work with this? | ||
brokenchicken | makumiku: drop it behind a reverse proxy | 03:39 | |
cale2 | So this is all well and good, but what about that lower case double quote? That's the one I can't see. | ||
makumiku | No idea about how to do that ;-; | ||
brokenchicken | makumiku: do you have apache? | ||
cale2 | It's a double quote on the bottom of the line of text | 03:40 | |
makumiku | I'd rather use nginx | ||
but I can use apache | |||
AlexDaniel | cale2: yea. So install some fonts perhaps? | ||
I'm not sure what OS you are on | |||
ah, you said mac. Still I know nothing :) | |||
03:41
noganex_ joined
|
|||
brokenchicken | makumiku: that will work too. Just google for "set up nginx reverse proxy". The idea is you start an app on port, say, 8888. It's blocked for non-local traffic. nginx listens on 443 and forwards the request to 8888. so you get the HTTPS from nginx and your app can handle the request as if it were just plain ol HTTP | 03:42 | |
makumiku | I see, thanks a bunch for the help! | ||
03:44
noganex left
|
|||
samcv | wierd... you can close „ with left or right quotation marks | 03:47 | |
brokenchicken | mhm | 03:48 | |
samcv | u: low quotation mark | ||
unicodable6 | samcv, U+201A SINGLE LOW-9 QUOTATION MARK [Ps] (‚) | ||
samcv, U+201E DOUBLE LOW-9 QUOTATION MARK [Ps] („) | |||
samcv, gist.github.com/720cf1c0d473bcd834...fd0962538a | |||
samcv | u: quotation mark | ||
unicodable6 | samcv, U+0022 QUOTATION MARK [Po] (") | ||
samcv, U+00AB LEFT-POINTING DOUBLE ANGLE QUOTATION MARK [Pi] («) | |||
samcv, gist.github.com/eace4c4da2224b3a83...1179dace60 | |||
samcv | that's kinda weird | 03:49 | |
idk | |||
TimToady | see en.wikipedia.org/wiki/Quotation_mark for a brain melt | ||
samcv | „ is an opener, but we let you close it with an opener too? | ||
hmm | 03:50 | ||
i guess that makes sense | |||
we always need more brackets tbh | 03:51 | ||
03:54
Cabanossi left
03:56
Cabanossi joined,
agentzh joined
|
|||
cale2 | Yeah, it's U+201A and U+201E that are invisible | 03:58 | |
03:59
Ven left
04:00
khw left
04:03
cale2 left
04:06
Cabanossi left
04:09
Cabanossi joined
|
|||
samcv | what os do you have camelia | 04:17 | |
err cale2 | |||
oh i guess he left, i have part messages hidden | |||
brokenchicken | AlexDaniel: FWIW, I'm using ≔ in Perl 7 and I must say it's terrible. Can hardly notice the difference from =, especially when tired, sleepy, and not actively trying to discern if the two look too similar | 04:18 | |
AlexDaniel | brokenchicken: ≔ is full-width here, so I don't know… | 04:19 | |
again, it depends on your font | |||
brokenchicken nods | |||
AlexDaniel | brokenchicken: it is also in the list of “questionable things” :) | 04:20 | |
what should I do with that gist by the way? Do we have some sort of a wiki for brainstorming? | 04:21 | ||
brokenchicken isn't aware of one | |||
04:22
bjz_ joined,
bjz left
|
|||
AlexDaniel | @x⁎₋₁ awwwwww | 04:22 | |
too bad people want subscripts in identifiers… | |||
04:25
curt__ left
|
|||
AlexDaniel | “Even though there are ⩵ and ⩶ characters, how are these supposed to look in a fixed-width font?” am I stupid or what? | 04:25 | |
04:25
agentzh left
|
|||
AlexDaniel | did I just imply that ⩶ is supposed to fit into the width of a narrow character? | 04:26 | |
wh… what… who wrote that :P | |||
04:31
aborazmeh left
04:41
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
Geth | oc: 10b8f1a2fa | (Samantha McVey)++ | util/trigger-rebuild.txt Trigger rebuild to pull in highlighter fixes Highlight Low-double quotation mark - Left/Right double quotation mark quoting |
04:43 | |
samcv | lol AlexDaniel | 04:45 | |
u: equality | |||
unicodable6 | samcv, Found nothing! | ||
AlexDaniel | u: equals | ||
unicodable6 | AlexDaniel, U+003D EQUALS SIGN [Sm] (=) | ||
AlexDaniel, U+0347 COMBINING EQUALS SIGN BELOW [Mn] (◌͇) | |||
AlexDaniel, gist.github.com/b4fbd07aa1f93c3def...7712f1c481 | |||
samcv | AlexDaniel, get a monospace font that sets the ≡ sign to double width? | ||
that would be one solution tbh | |||
AlexDaniel | ≡? | 04:46 | |
u: ≡ | |||
unicodable6 | AlexDaniel, U+2261 IDENTICAL TO [Sm] (≡) | ||
samcv | oh i guess you said that | ||
about ≔ | |||
it shows wider for this non-monospace font i'm using for irc at least | |||
AlexDaniel | it is double width here too | ||
samcv | did we add in ≔ as a way to do :=? | 04:47 | |
AlexDaniel | no. … at least not yet | ||
samcv | ah, not sure what brokenchicken meant then | ||
AlexDaniel | anyway, I your initial message is for brokenchicken | ||
yea | |||
samcv | oh perl 6 | ||
AlexDaniel | I think* | ||
samcv | s/6/7 | ||
haha | |||
04:56
kyan left
04:58
BenGoldberg left
|
|||
jdv79 | P6opaque: no such attribute '$!state' in type Foo when trying to get a value | 05:00 | |
except $!state is declared in the same role as the method hitting it | |||
so... wth man... | |||
i have 6 classes comsuming that role too and only one complains per run | 05:02 | ||
05:06
Cabanossi left
05:09
Cabanossi joined
05:10
travis-ci joined
|
|||
travis-ci | Doc build passed. Samantha McVey 'Trigger rebuild to pull in highlighter fixes | 05:10 | |
travis-ci.org/perl6/doc/builds/196274730 github.com/perl6/doc/compare/c1220...b8f1a2fa01 | |||
05:10
travis-ci left
05:11
agentzh joined
|
|||
Geth | hateverable: 8a2b349bf3 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Whateverable.pm6 Consistent ident for the bots So that they can be voiced on channels with a single mask. |
05:22 | |
hateverable: c8acc81410 | (Aleks-Daniel Jakimenko-Aleksejev)++ | 3 files Ignore messages starting with “what,” What, people actually start their sentences with “what,”? colabti.org/irclogger/irclogger_log...xt=checked |
|||
05:26
woeirjisojdfio joined
05:30
AlexDaniel left
|
|||
samcv | brokenchicken, this plugin for atom i got is pretty neat. it creates a like 'index' bar on the right that is populated by regex items | 05:30 | |
05:31
bjz_ left
05:37
Cabanossi left
05:38
Cabanossi joined
|
|||
samcv | ugh and now it's not working all of a sudden | 05:44 | |
nvm got it working. nice. have a whole list of all the sub's in the file on the right side and can easily click to go to them | 05:50 | ||
05:51
bjz joined
05:53
CIAvash joined
06:04
labster joined,
labster left
|
|||
samcv | how do I do a for loop that doesn't iterate over the subcomponents of things and only deos the list of variables? | 06:06 | |
m: my %hash = 10 => 11; for %hash, %hash { .VAR.name.say } | |||
camelia | rakudo-moar dd514d: OUTPUT«%hash%hash» | ||
samcv | i guess that worked hmm | ||
06:25
agentzh left
06:30
makumiku left
06:34
woeirjisojdfio left
|
|||
masak | hey #perl6 -- could someone re-URL to that blog post I read recently where it says that global type names now behave differently with `use` statements? | 06:40 | |
was it timotimo who wrote it? or nine? or someone? | |||
(turns out 007 is a victim and I didn't discover it until now, since I haven't been working on it for a while. it's easy to fix, but I'd like to reference the blog post in the commit message.) | 06:41 | ||
I'm also getting a much clearer feeling for what the change in semantics does: if A uses B uses C, A used to get C's "global" type declarations through B -- but it doesn't any more. | 06:44 | ||
...segmentation fault :( | |||
geez, I hope this is golfable. | |||
oh; went away after I nuked lib/.precomp | 06:45 | ||
:) :( | 06:46 | ||
06:47
perlawhirl left,
Vynce left
|
|||
masak | ok, that's better. All Tests Pass. | 06:48 | |
06:59
aborazmeh left
|
|||
masak | aha; github.com/rakudo/rakudo/commit/4b...95a09a8e80 actually points to rakudo.org/2016/12/17/lexical-module-loading/ | 07:00 | |
07:00
darutoko joined
|
|||
masak | nine++ nine++ for that | 07:00 | |
07:00
perlawhirl joined
07:02
bjz_ joined
07:03
bjz left
|
|||
moritz | \o | 07:07 | |
07:08
Cabanossi left
07:09
Cabanossi joined
|
|||
masak | hiyo moritz | 07:12 | |
07:17
ChoHag joined
|
|||
moritz | masak: fwiw I greatly enjoyed your lambda calculus gist the other day | 07:24 | |
07:28
Tonik joined
07:29
pyrimidine left
|
|||
masak | moritz: that's great to hear. I'm not done with it, by the way. | 07:30 | |
I'm implementing a lambda calculator, and I mean to turn the gist into an interactive page where you can try things out. | 07:31 | ||
07:34
domidumont joined
|
|||
moritz | \o/ | 07:34 | |
and lol i blogged: perlgeek.de/blog-en/perl-6/2017-00...rsing.html | |||
two more regex blog posts coming up, one about grammars, match trees and action methods, and the last about generating good parse error messages | 07:35 | ||
masak | moritz++ | 07:36 | |
stray macro/quasi thought: a quasi encompasses even nested routines inside of it, in such a way that these can be factored out of the quasi if-and-only-if they don't contain unquotes. | 07:37 | ||
(the corollary being that an unquote in a nested routine is more powerful than we may realize. I've now seen two real-ish examples of this.) | 07:38 | ||
07:38
domidumont left
07:40
kurahaupo joined
07:45
kurahaupo_ joined
|
|||
moritz | masak: do you have links to examples? | 07:46 | |
07:47
kurahaupo` joined,
kurahaupo left
07:48
pyrimidine joined
07:50
kurahaupo joined,
kurahaupo_ left
|
|||
masak | m: class A::B {}; class C { has A::B $.ab .= new } | 07:51 | |
camelia | ( no output ) | ||
masak closes rt.perl.org/Public/Bug/Display.html?id=126975 | |||
moritz | pleaes remeber to a write a test in roast for it | 07:52 | |
07:53
kurahaupo` left
07:54
kurahaupo left
|
|||
masak | oh shucks -- guess now I have to :) | 07:54 | |
moritz: to answer your question about examples: yes, my favorite so far is still the 007 implementation of reduce metaops: github.com/masak/007/issues/176#is...-240849038 | 07:55 | ||
this is a *real* macro | |||
moritz | nice! | 07:56 | |
masak | it quasis a sub with a synthetic name | ||
whose parameter list is a single slurpy (a not-yet-in-place 007 extension) | |||
and whose body is an actual .reduce call on the slurped array | 07:57 | ||
and the call's argument (which needs to be a 2-ary callable, recall) is an *op*, namely the one that we parsed in the macro | 07:58 | ||
so if we parsed `[+]`, then the op is infix:<+> | |||
"but what about lexical sco..." -- yep, it all works out | |||
*and that's why we have all that bloody complexity with layers of lexical scoping coming out the wazoo*, so that stuff like this macro will work! | 07:59 | ||
08:00
bwisti left
08:04
Tonik left
08:06
Cabanossi left
08:08
Cabanossi joined
|
|||
masak | by the way, if there are people here who don't mind pain^Wlong discussions and who have ever wondered why we haven't replaced the {{{ }}} syntax yet with something better, let me suggest you read through github.com/masak/007/issues/30 from beginning to end | 08:11 | |
(it's good, I think. it goes deep.) | |||
aha; Zoffix++ had already added a test with afe080a028f91ff1f85d2f9fbb04dc2068eb95c0, so I'm off the hook | 08:22 | ||
08:27
araujo joined
08:37
Cabanossi left
08:38
benji joined,
benji is now known as Guest49604,
Guest49604 left,
Cabanossi joined
08:39
bseiuhrusid joined
|
|||
bseiuhrusid | Everytime I attempt to 'rakudobrew build moar', I run into the following problem: gist.github.com/anonymous/a0a287c6...f42dfa44d2 | 08:43 | |
08:43
wamba joined
08:45
kurahaupo joined
|
|||
bseiuhrusid | anyone know how to fix this? | 08:47 | |
08:54
bseiuhrusid left
08:57
rindolf joined
09:08
TEttinger left
09:22
z448 joined,
z448 left
09:27
RabidGravy joined
09:33
kurahaupo__ joined,
sjoshi joined
|
|||
dalek | line-Python: fbee34c | niner++ | / (2 files): Implement simple importing of Python modules |
09:48 | |
line-Python: 49b9bcd | niner++ | / (2 files): Support: use foo:from<Python> |
|||
yoleaux | 28 Jan 2017 16:37Z <AlexDaniel> dalek: Please switch this bot to Geth | ||
nine | .tell dalek Please switch this bot to Geth | 09:49 | |
yoleaux | nine: I'll pass your message to dalek. | ||
09:51
cibs left
09:53
cibs joined
09:58
sjoshi left
|
|||
RabidGravy | There is one thing though - Dalek uses the IRC nick whereas Geth uses the name from github | 09:59 | |
nine | RabidGravy: if that about dalek were true, it'd have said nine++, not niner++ | 10:03 | |
RabidGravy | Hmm, presumably it has some manually updated list somewhere then | 10:04 | |
further to my RPi 2 + 3 comparison yesterday, the "Stage Parse" takes 595.026 on the 2 and ~ 300 on the 3 | 10:16 | ||
10:18
andrzejku_ joined
10:19
Ven joined
10:35
agentzh joined
|
|||
RabidGravy | is this exception catchable? | 10:39 | |
m: use v6.d | |||
camelia | rakudo-moar d93235: OUTPUT«5===SORRY!5=== Error while compiling <tmp>No compiler available for Perl v6.dat <tmp>:1------> 3use v6.d7⏏5<EOL>» | ||
10:40
Ven left
|
|||
nine | I hope not? :) | 10:40 | |
10:40
ufobat joined,
agentzh left
|
|||
RabidGravy | *or* if I wanted to make tests that tried with "v6.d.PREVIEW" if it was available is there a way to do it | 10:40 | |
specifically I have stuff that will benefit from jnthn's await changes and would like to start testing where possible | 10:42 | ||
nine | We are definitely going to need an API for querying the supported language version. But even then, I'm not sure how to handle your use case since the use v6.d; should be the very first statement in your compilation unit. | 10:45 | |
Maybe if you put the tests in a module and load that only if v6.d is supported. | 10:46 | ||
You could then write a module that just contains use v6.d.PREVIEW; and require that and if that succeeds load the module with your tests. | 10:47 | ||
RabidGravy | yeah | 10:48 | |
10:50
rumble joined
|
|||
RabidGravy | maybe something like "$*PERL.compilers" which returns a list of all the available versions | 10:51 | |
10:59
grumble left
11:01
rumble is now known as grumble
|
|||
RabidGravy makes a super repository of all his modules for purposes of smoke testing | 11:05 | ||
11:06
Cabanossi left
11:09
Cabanossi joined
11:11
Rawriful joined
11:15
AlexDaniel joined
11:19
parv joined
11:24
lukaramu joined
11:32
pyrimidine left
11:47
parv left
11:51
bjz joined
11:53
bjz_ left
|
|||
RabidGravy | there github.com/jonathanstowe/Perl6-Modules | 11:55 | |
that's not all of them, just all the ones that are finished or mostly finished | |||
nine | Oh boy, Python 2's string vs. unicode handling is so messed up. | 12:03 | |
12:06
sammers left
12:17
sammers joined
12:23
pyrimidine joined
12:29
pyrimidine left
12:34
geekosaur left
12:35
geekosaur joined
12:41
ufobat left
12:43
eeoo joined
|
|||
moritz | which is the reason for Python 3 | 12:45 | |
12:54
bjz_ joined
12:55
eeoo left
12:56
bjz left
|
|||
masak | well, one of the bigger reasons | 12:57 | |
nine | Feels like healing pain by inflicting more pain... | ||
moritz | there's certainly the pain of upgrading | 12:58 | |
but I for one like pytho 3's string handling | |||
I just find it miserable that the regex engine doesn't support Unicode properties | |||
Geth | nline-Python: 1ecd114855 | (Stefan Seifert)++ | 3 files Create wrapper functions for imported Python modules use string:from<Python>; say string::capwords('foo bar'); # prints "Foo Bar" |
13:02 | |
13:02
Tonik joined
13:03
bjz_ left
13:04
bjz joined
|
|||
masak | grmbl; another case of Grammar::Tracer changing the outcome of the parse... :/ | 13:04 | |
jnthn: if it's worthwhile for me to document these, I could spend some time writing it up. if not, I'll just skip it. :) | |||
jnthn | masak: Or just write a patch that makes the returned closuers have a !NFA method (or some such), perhaps by mixing in a role or smilar, which passes on the NFA of the wrapped-up rule. | 13:06 | |
*closures | |||
I'm pretty sure that's what's to blame for the discrepancy | |||
masak | jnthn: I see we both wish I were more familiar with that codebase :P | 13:08 | |
heh, that reminds me. I never did finish up that series of blog posts about PGE :P | |||
masak .oO( to enjoy this joke, you need to be at least this old ) | 13:09 | ||
moritz | nor the last p6 coding contest | ||
Geth | nline-Python: fdf275b4ce | (Stefan Seifert)++ | lib/Inline/Python.pm6 Replace long obsolete sub native trick Ever since we got support for %?RESOURCES, there has not been a need for a "native" sub containing logic to find the library. Perl 6 finds it for us :) |
13:12 | |
masak | indeed | 13:13 | |
there's hope | |||
13:14
vendethiel joined
|
|||
jnthn | There's not that much code in Grammar::Tracer to get familiar with :) | 13:14 | |
I'll try and remember to take a look at it. | 13:15 | ||
If you've time to add a failing test case and mark it todo, that'd be even better :) | |||
13:16
nowan left
|
|||
MasterDuke | masak: do you have some blog posts about PGE? if so, could you paste a link? | 13:18 | |
samcv | it seems it's not letting me use :exists on a hash? | ||
13:19
nowan joined
|
|||
jnthn | samcv: "it's"? | 13:20 | |
m: my %h; say %h<a>:exists | |||
camelia | rakudo-moar fdcf46: OUTPUT«False» | ||
jnthn | m: my %h = a => 42; say %h<a>:exists | ||
camelia | rakudo-moar fdcf46: OUTPUT«True» | ||
samcv | i am going to try and golf it | ||
jnthn | Could be a precedence trap | ||
samcv | oh maybe | 13:21 | |
if ! %PropertyNameAliases_to{$prop}:exists | |||
jnthn | I think the one sometimes run into is low-precedence negation (`not`) getting the adverb | ||
samcv | precedence maybe because of the !? | ||
jnthn | Hm, thought ! was tight enough | 13:22 | |
fwiw, I'd probably write :!exists | |||
m: my %h = a => 42; say not %h<a>:exists | |||
camelia | rakudo-moar fdcf46: OUTPUT«False» | ||
jnthn | m: my %h = a => 42; say !%h<a>:exists | ||
camelia | rakudo-moar fdcf46: OUTPUT«Unexpected named argument 'exists' passed in block <unit> at <tmp> line 1» | ||
samcv | i seem to be able to access self.VAR.name in augmenting a Hash, but cannot for a string | ||
jnthn | Ah, no, I got it the wrong way round. It is ! | ||
Geth | nline-Python: 7905458a9d | (Stefan Seifert)++ | README.md Minimalistic documentation of new module importing feature |
13:23 | |
samcv | m: augment class Hash { | ||
camelia | rakudo-moar fdcf46: OUTPUT«5===SORRY!5=== Error while compiling <tmp>augment not allowed without 'use MONKEY-TYPING'at <tmp>:1------> 3augment class Hash7⏏5 { expecting any of: generic role» | ||
Geth | nline-Python: 5a18fc7c57 | (Stefan Seifert)++ | META6.json Version 0.3 |
||
jnthn | That's probably because the Hash is the container, but in a string the Scalar is the container, and self is never a Scalar container | ||
samcv | m: augment class Hash { method dump { self.VAR.name ~ ': ' ~ self } }; my $s = 'string'; say $s.dump | ||
camelia | rakudo-moar fdcf46: OUTPUT«5===SORRY!5=== Error while compiling <tmp>augment not allowed without 'use MONKEY-TYPING'at <tmp>:1------> 3augment class Hash7⏏5 { method dump { self.VAR.name ~ ': ' ~ expecting any of: generic role» | ||
samcv | m: use MONKEY, augment class Hash { method dump { self.VAR.name ~ ': ' ~ self } }; my $s = 'string'; say $s.dump | 13:24 | |
camelia | rakudo-moar fdcf46: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Confusedat <tmp>:1------> 3use MONKEY7⏏5, augment class Hash { method dump { sel» | ||
samcv | m: use MONKEY; augment class Hash { method dump { self.VAR.name ~ ': ' ~ self } }; my $s = 'string'; say $s.dump | ||
camelia | rakudo-moar fdcf46: OUTPUT«No such method 'dump' for invocant of type 'Str' in block <unit> at <tmp> line 1» | ||
samcv | m: use MONKEY; augment class Str { method dump { self.VAR.name ~ ': ' ~ self } }; my $s = 'string'; say $s.dump | ||
camelia | rakudo-moar fdcf46: OUTPUT«No such method 'name' for invocant of type 'Str' in method dump at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
samcv | yeah | ||
jnthn | method dump(\SELF:) { SELF.VAR.name } # or some such | ||
samcv | m: use MONKEY; augment class Hash { method dump { self.VAR.name ~ ': ' ~ self } }; my %h; say %h.dump | ||
camelia | rakudo-moar fdcf46: OUTPUT«%h: » | ||
samcv | thanks jnthn :) | 13:25 | |
jnthn | np | 13:26 | |
samcv | ===SORRY!=== | ||
When invoking 5693 'parameterize', provided outer frame 0x55870ef5e2e0 (572 'quote:sym<s>') does not match expected static frame 0x55870f6a1698 (5694 '') | |||
jnthn | o.O | 13:27 | |
Ain't seen that error for months... | |||
lunch time; bbl | 13:28 | ||
samcv | k | ||
13:33
cdg joined
|
|||
brokenchicken | samcv: the ≔ is in Perl 7. I find "get a better font" a poor argument as that'd be a reason any style book would advocate against its usage so we'd be adding and supporting something we can't in good conscience advocate the use of. | 13:36 | |
samcv | can't see unicode quotation marks, get a better font? | ||
so can't advocate their use? | |||
idk it looks fine with my font | 13:38 | ||
wider even than a = | |||
this is monospace btw | |||
13:38
cdg left
|
|||
samcv | brokenchicken, a.uguu.se/pWubmIIS8UJS_Screenshot_...053857.png they seem pretty easy to tell apart to me | 13:39 | |
13:39
cdg joined
|
|||
MasterDuke | i think it's reasonable to have as a requirement that the source code be readable with the default font from a clean install of the common OSes (windows, macos, debian, red hat, ubuntu, fedora, etc) | 13:39 | |
samcv | and what font is that? | 13:40 | |
so we can't use things that the 'default' font doesn't render properly? | 13:41 | ||
i've checked several monospace fonts i've used and they seem to render ≔ wider than = | |||
Noto Mono for sure renders it fine | 13:43 | ||
brokenchicken | samcv: no support for a mark is different than mark is rendered too similar to something else on many fonts. But the incident with cale2 last night shows just how much confusion it causes. He thought a qoute was missing. I wouldn't want my devs wasting their time trying to set up some Right Font™ just so they would not make a fuck up that would cost me more money | ||
Actually, I fully expect all Best Practice guides to advocate against fancy ops. | 13:44 | ||
samcv | i mean we already have plenty of those | ||
set operators, what if peoples fonts don't have those? should we just have not added those in? | |||
xiaomiao | 'defaults' as in the standard ASCII character range? anything beyond that is not guaranteed to work | 13:45 | |
brokenchicken | We actually have a good test for it already. Any time I wrote @a ∖ @b in a channel people thought it was a backslash. | ||
samcv | well just install normal fonts | ||
xiaomiao | samcv: what does that mean ... | ||
13:45
obfusk_ left
|
|||
samcv | there's plenty of availible fonts that cover lots of symbols, like the Noto fonts | 13:46 | |
brokenchicken | samcv: again, the argument is the similarity, not missing glyphs | ||
samcv | freely available | ||
13:46
obfusk joined
|
|||
samcv | ah ok i guess that's a little different? | 13:46 | |
brokenchicken | Lots different. | ||
13:46
cdg left
13:47
cdg joined
|
|||
samcv | sorry you brought up cale2 having a missing font, so i thought you were also using that as an argument. but i guess similarity is ok. and := is pretty easy to see and pretty close to the actual symbol | 13:47 | |
13:47
pyrimidine joined
|
|||
brokenchicken | dogbert17: why the dupe ticket? | 13:51 | |
Even wording is the same... | 13:52 | ||
brokenchicken assumes accidental re-send and closes it | |||
samcv | m: my %hash = this => 'that'; if !%hash{'that'}:exists { say ‘it's not there’ } | 13:56 | |
camelia | rakudo-moar fdcf46: OUTPUT«Unexpected named argument 'exists' passed in block <unit> at <tmp> line 1» | ||
samcv | this has affected me so many times | ||
13:56
cdg left
|
|||
samcv | is there anything that can be done about it? | 13:56 | |
lizmat | m: my %hash = this => 'that'; if %hash{'that'}:!exists { say ‘it's not there’ } | 13:57 | |
camelia | rakudo-moar fdcf46: OUTPUT«it's not there» | ||
lizmat | samcv: use :!exists | ||
samcv | so is that a no? | ||
yeah jnthn told me about i can do :!exists | |||
lizmat | ah, yes, that's a no | ||
samcv | is there anyway to improve the error reporting then? | ||
lizmat | consult jnthn TimToady for more info | ||
adverbs attach to the outer expression | 13:58 | ||
SmokeMachine | timotimo: I think I got it... www.irccloud.com/pastebin/G24l8JVW/ | ||
lizmat | so it attached to the ! | ||
and prefix<!> doesn't accept :exists as a parameter | |||
perhaps we could make a prefix<!> candidate with :$exists! and then make that an improved error message | 13:59 | ||
brokenchicken | .oO( make it accept it and throw a better error... ) |
||
lizmat | but in the past jnthn has been sorta against that type of fixing | 14:00 | |
brokenchicken | OK :) | ||
It's the right of passage to Perl 6. Learning the precedence of prefix ops and methods :) | 14:01 | ||
lizmat | nobody's stopping anybody making it a PR and have a discussion about it :-) | ||
brokenchicken | m: try q|m: my %hash = this => 'that'; if !%hash{'that'}:exists { say ‘it's not there’ }|.EVAL; say $!.^name | 14:02 | |
camelia | rakudo-moar fdcf46: OUTPUT«X::AdHoc» | ||
brokenchicken | A lot of improvement could be achieved by simply making that error say to WHERE the unexpected argument was passed. | ||
samcv | ^ | ||
brokenchicken | hm, s/simply//; Doesn't look like the name is anywhere close to where that error is made. | 14:04 | |
14:06
aindilis` joined
14:08
aindilis left
14:11
CIAvash left
14:14
bjz left
|
|||
brokenchicken | Any idea where "repr-compose-protocol.markdown" the internals course mentions is at? | 14:20 | |
Ah github.com/perl6/nqp/blob/master/d...l.markdown | |||
14:28
rindolf left
14:29
rindolf joined
14:31
mxco86 left
|
|||
brokenchicken | m: my $x = 42; $x.^set_name('heh'); say WHAT $x | 14:31 | |
camelia | rakudo-moar 7e9850: OUTPUT«(heh)» | ||
brokenchicken | :D | ||
14:32
ggoebel left
|
|||
samcv | heh | 14:33 | |
14:33
z448 joined
14:36
z448 left
14:37
agentzh joined,
sammers left
14:41
agentzh left
14:45
ggoebel joined
14:50
sammers joined,
khw joined
14:51
Cabanossi left
14:53
Cabanossi joined
|
|||
moritz | m: my $x = 42; $x.^set_name('heh'); say WHAT Int | 15:04 | |
camelia | rakudo-moar 7e9850: OUTPUT«(heh)» | ||
moritz | m: role a { }; a.^set_name('foo'; say a.^name | 15:05 | |
camelia | rakudo-moar 7e9850: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unable to parse expression in argument list; couldn't find final ')' at <tmp>:1------> 3le a { }; a.^set_name('foo'; say a.^name7⏏5<EOL> expecting any of: postfix» | ||
moritz | m: role a { }; a.^set_name('foo'); say a.^name | ||
camelia | rakudo-moar 7e9850: OUTPUT«foo» | ||
moritz | and here I thought roles were immutable | ||
brokenchicken | m: role a { }; a.^add_method: "foo", -> {say "hi"}; a.foo | 15:06 | |
camelia | rakudo-moar 7e9850: OUTPUT«No such method 'add_method' for invocant of type 'Perl6::Metamodel::ParametricRoleGroupHOW' in block <unit> at <tmp> line 1» | ||
15:09
espadrine_ joined
|
|||
moritz | mostly they're immutable because nobody besides jnthn++ and TimToady++ fully comprehend roles semantics :-) | 15:14 | |
15:15
zakharyas joined
|
|||
brokenchicken | m: class x { has $!y }; role a {}.^add_attribute: x.^attributes[0]; a.^attributes.say | 15:16 | |
camelia | rakudo-moar 7e9850: OUTPUT«(Mu $!y)» | ||
brokenchicken | m: class x { has $!y }; role a {}; a.^add_attribute: x.^attributes[0]; a.^attributes.say | ||
camelia | rakudo-moar 7e9850: OUTPUT«No such method 'add_attribute' for invocant of type 'Perl6::Metamodel::ParametricRoleGroupHOW' in block <unit> at <tmp> line 1» | ||
brokenchicken | don't get how that method dissapears tho | 15:17 | |
moritz | I guess immutable doesn't apply when you use the MOP | ||
TimToady | a.^add_attribute is not Perl 6 :P | ||
moritz | brokenchicken: roles are basically like multis, and you can only add an attribute to one candidate, not to the whole thing | 15:18 | |
brokenchicken | Ah. Thanks | ||
moritz | and the name refers to the whole collection (hence RoleGroup in the name of the meta class) | ||
speaking of roles | 15:19 | ||
I'm still looking for a good example for my book to explain roles | |||
preferably something where their use is idiomatic, and something that's practical (no animal/mammal/pet example please) | 15:20 | ||
any ideas? | |||
15:21
araujo left,
cog_ left
15:22
FROGGS joined
|
|||
moritz | similarly, I'm looking for a good example to explain some aspects of functional programming in Perl 6 | 15:22 | |
15:23
pyrimidine left
15:24
pyrimidine joined
15:34
perlawhirl left
|
|||
SmokeMachine | moritz: isn't Positional a practical and good example of role? | 15:35 | |
moritz | SmokeMachine: well, I want to present a practical program that a user can (or could) use, which makes use of roles | 15:36 | |
that's how the book is structured: explain a problem, develop a solution, and talk about the Perl 6 features used in the solution | 15:37 | ||
SmokeMachine | moritz: I got it... sorry... | ||
moritz | no problem | ||
Geth | ook: WildYorkies++ created pull request #87: Update subs and sigs |
15:40 | |
15:52
wizard_ joined
|
|||
wizard_ | Hi, | 15:52 | |
moritz | ho! | 15:53 | |
wizard_ | I wanted to write a web Application using perl6, I tried to research on that there are lot of different options but I also saw that it was still under development, Is there anything like mojolicious for perl6 which I can use | 15:55 | |
moritz | wizard_: you can use p5's Mojolicious using Inline::Perl5; or you can use something like ugexe.com/hello-web-with-puree-perl-6/ which is pure Perl 6 | 15:56 | |
or Dancer | |||
nine | wizard_: I happen to write a talk about this exact topic :) niner.name/talks/Web%20development%...0Perl%206/ | 16:00 | |
wizard_: input for the talk greatly appreciated. Especially if there's something you'd like to hear/read more about. | 16:01 | ||
wizard_: Or if I missed something which you came across | |||
wizard_ | thank you very much | ||
I will look into it | 16:02 | ||
16:04
CIAvash joined
|
|||
timotimo | SmokeMachine: please note that BUILDALL runs every single time an instance is created, so every time you .new one of your objects, you'll add another layer of wrap. at least i think so. try putting a "say" in before the with ::?CLASS etc etc | 16:05 | |
wizard_ | to connect to the database, where DBIsh is used, so if I want to connect to MongoDB/ElasticSeach , should I use the standard Perl driver from Mongo DB and Search::ElasticSearch module | 16:06 | |
16:06
domidumont joined
16:07
Cabanossi left
|
|||
mst | SmokeMachine: why would you do this on BUILDALL rather than just setting stuff up once? | 16:08 | |
I think perhaps you could use an attribute trait instead? | |||
16:08
Cabanossi joined
|
|||
nine | wizard_: there's the MongoDB Perl 6 module. If that doesn't work out for you, you can use appropriate modules from Perl 5. | 16:09 | |
wizard_ | thank you, and for elasticsearch , search::Elasticsearch ? | 16:10 | |
nine | As I don't find any Perl 6 module for ElasticSearch, Search::ElasticSearch seems the way to go | 16:11 | |
16:11
pmurias joined
|
|||
wizard_ | cool thanks a ton! | 16:11 | |
RabidGravy | An ElasticSearch module has been on my TODO for ages | 16:14 | |
or even an apache Lucy binding | |||
the former isn't that *hard* there's just a lot of it | 16:15 | ||
SmokeMachine | timotimo: you are right... :( | 16:16 | |
wizard_ | that would be great if there's a module :) | ||
SmokeMachine | mst: because I need to access the $!dirty... | ||
wizard_ | Elasticsearch is widely being used these days | ||
mst | that's because, unlike mongodb, it's actually useful | 16:17 | |
SmokeMachine | mst: and it can't be done on a object type method... | ||
mst | SmokeMachine: well what you're doing is bizarre and polluting the class so is obviously wrong | 16:18 | |
SmokeMachine | mst: I agree... | 16:19 | |
mst | this is why I was wondering about attribute trait | ||
you might be able to get at slots that way | |||
if you can't, maybe create a _set_dirty private method and call that? | |||
16:19
pyrimidine left
|
|||
timotimo | you mean !set_dirty :) | 16:19 | |
perl6 has real private methods | 16:20 | ||
16:20
pyrimidine joined
|
|||
SmokeMachine | thats a good idea! | 16:20 | |
mst | timotimo: my fingers don't know that yet | ||
16:20
bwisti joined
|
|||
timotimo | :) | 16:22 | |
CIAvash | samcv: Noto Mono doesn't seem to have ≔, I'm guessing another font is rendering it for you. I checked it in Emacs and GNOME Character Map. | ||
samcv | hm | 16:23 | |
jdv79 | I like how the HTTP::Tinyish t tests are just a compile test and xt has the real tests | 16:29 | |
can't decided if that's hilarious or exasperating | |||
16:30
cognominal joined
|
|||
[Coke] | . | 16:35 | |
RabidGravy | I'm actually considering that for Audio::Liquidsoap as I can't make the tests pass reliably everywhere | ||
;-) | |||
16:36
Cabanossi left
|
|||
RabidGravy | I've also completely shagged the jenkins on my test server | 16:36 | |
16:38
Cabanossi joined
|
|||
jdv79 | why... would you simply silently stop parsing http headers if you don't see "HTTP/\d.\d" | 16:38 | |
HTTP/2 is valid, right? | |||
nine | Looks like Bailador is broken and nobody noticed :/ "Nothing given for new socket to connect or bind to in method connect" | 16:40 | |
jdv79 | i personally would die instead of return but ok | ||
RabidGravy | well arguably an HTTP request is valid without the HTTP version at all | ||
jdv79 | that's true. but a resp is not, rght? | 16:41 | |
RabidGravy | well it's the "be liberal what you accept, conservative what you produce" thing | 16:42 | |
which I think people have lost sight of in the last few years | |||
brokenchicken | jdv79: are you still talking about HTTP::Tinyish? It's just a wrapper around curl. I doubt it does any parsing of anything. | 16:43 | |
nine | And HTTP::Server::Tiny even fails to install | 16:45 | |
16:45
geekosaur left
16:46
geekosaur joined
|
|||
jdv79 | brokenchicken: it does and yes im talking about it and i'm filing a bug now | 16:46 | |
simple bug | |||
but curious handling | 16:47 | ||
16:47
cygx joined
|
|||
cygx | o/ | 16:47 | |
nine: from the slides you linked: "naked " | |||
code blocks don't care about arguments | |||
they do, they just bind a single positional argument to $_ | 16:48 | ||
nine | cygx: yes, it might be a bit of an over simplification | ||
brokenchicken | m: {}.signature.say | 16:49 | |
camelia | rakudo-moar 7e9850: OUTPUT«No such method 'signature' for invocant of type 'Hash' in block <unit> at <tmp> line 1» | ||
brokenchicken | m: {;}.signature.say | ||
camelia | rakudo-moar 7e9850: OUTPUT«(;; $_? is raw)» | ||
16:50
melezhik left
16:53
melezhik joined
|
|||
cygx | m: say :($a; $b); say :($a;; $b) | 16:58 | |
camelia | rakudo-moar 7e9850: OUTPUT«($a, $b)($a;; $b)» | ||
cygx | ^^ curious | ||
(and, as far as I can tell, undocumented) | 16:59 | ||
brokenchicken | cygx: ; is just another way to write , | ||
Whereas ;; is a multi-dispatch consideration marker thing | |||
17:00
kybr left
|
|||
brokenchicken | .seen toolforger | 17:01 | |
yoleaux | I saw toolforger 28 Jan 2017 10:13Z in #perl6: <toolforger> lizmat, rakudobugs are in and confirmed | ||
17:03
kybr joined
|
|||
RabidGravy | okay unbroken my local jenkins, it is now building a rakudo with 572 changes since the last time it worked | 17:10 | |
(which was 6 December,) don't know what broke it | 17:14 | ||
jdv79 | what's the p6 equiv of p5's delete local $h{$k}? | 17:15 | |
moritz | temp %h = %h; %h{$k}:delete; # iirc | 17:16 | |
brokenchicken | temp %h; %h{$k}:delete | 17:17 | |
jdv79 | thanks | 17:18 | |
brokenchicken | jdv79: or (temp %h){$k}:delete | ||
jdv79 | what's a terse way to check for a bool hash value that'll explode if its not that - like non-existance. | 17:20 | |
brokenchicken | not that is not what? | ||
moritz | die unelss %h<key> ~~ Bool; | 17:21 | |
jdv79 | not a bool | ||
moritz | *unelss | 17:22 | |
argl | |||
*unless | |||
jdv79 | rather, true | ||
moritz | die if %h<key> !=== True | ||
jdv79 | ah, thanks | ||
17:25
ufobat joined
|
|||
brokenchicken | m: %.<key> // … 'y u no key?' | 17:26 | |
camelia | rakudo-moar 7e9850: OUTPUT«y u no key? in block <unit> at <tmp> line 1» | ||
timotimo | … | 17:29 | |
brokenchicken | m: %.<key> || ??? 'y u no key?' | 17:32 | |
camelia | rakudo-moar 7e9850: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Warning: something's wrong in block <unit> at <tmp> line 1» | ||
brokenchicken | nil? | 17:33 | |
moritz | m: ??? 'foo' | 17:34 | |
camelia | rakudo-moar 7e9850: OUTPUT«foo in block <unit> at <tmp> line 1» | ||
brokenchicken | m: %.<key> || (??? 'y u no key?') | ||
camelia | rakudo-moar 7e9850: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Warning: something's wrong in block <unit> at <tmp> line 1» | ||
brokenchicken | prolly not meant to be used that way | ||
moritz | brokenchicken: is it maybe parsed as %(.<key> || ??? '...') ? | ||
brokenchicken | That | 17:35 | |
That'd be weird | |||
moritz | brokenchicken: and the ??? returns a Nil that the %() tries to stringify | ||
brokenchicken | m: (%.<key>) || (??? 'y u no key?') | ||
camelia | rakudo-moar 7e9850: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Warning: something's wrong in block <unit> at <tmp> line 1» | ||
moritz | there is no %. variable, to the best of my knowledge | ||
brokenchicken | But there's % :) | ||
moritz | m: %.<key> | ||
camelia | ( no output ) | ||
moritz | m: %.<key> || 'foo' | ||
camelia | rakudo-moar 7e9850: OUTPUT«WARNINGS for <tmp>:Useless use of constant string "foo" in sink context (line 1)» | ||
brokenchicken | hm | ||
Oh that one is correct | 17:36 | ||
Ah | |||
moritz | I still think %.<key> actually does %$_.<key> | ||
brokenchicken | m: Nil | ||
camelia | ( no output ) | ||
brokenchicken | m: $_ = %(foo => 42); %.<foo> = 72; dd $_ | 17:37 | |
camelia | rakudo-moar 7e9850: OUTPUT«Hash $_ = ${:foo(42)}» | ||
17:37
Azzham joined
17:38
Azzham left
|
|||
brokenchicken | m: $_ = %(foo => 42); dd %.<foo>; dd $_ | 17:38 | |
camelia | rakudo-moar 7e9850: OUTPUT«Any % = AnyHash $_ = ${:foo(42)}» | ||
brokenchicken | m: my %h; %h<key> || ??? 'y u no key?' | ||
camelia | rakudo-moar 7e9850: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1Warning: something's wrong in block <unit> at <tmp> line 1» | ||
17:39
Cabanossi left
17:40
Cabanossi joined
|
|||
brokenchicken | m: %.<key> // ??? 'y u no key?' | 17:44 | |
camelia | rakudo-moar 7e9850: OUTPUT«y u no key? in block <unit> at <tmp> line 1» | ||
17:45
wizard_ left
|
|||
timotimo | wait wtf | 17:48 | |
17:48
geekosaur left,
CIAvash left
|
|||
timotimo | ??? "y u no key" calls sink on X::StubCode.new | 17:48 | |
not only does the string not appear in the ast output, but it also outputs | 17:49 | ||
Oops!!! Cannot invoke this object (REPR: P6opaque; NQPMu) | |||
17:49
geekosaur joined
|
|||
timotimo | it actually outputs that error twice during --target=ast | 17:49 | |
something is Seriously Wrong here | |||
potentially sink-related differences between // and ||? | 17:50 | ||
brokenchicken | yeah. And // version also has the Oops but only once. | ||
And the || version has a void Want but // doesn't | |||
m: Int || 'foo' | 17:53 | ||
camelia | rakudo-moar 7e9850: OUTPUT«WARNINGS for <tmp>:Useless use of constant string "foo" in sink context (line 1)» | ||
brokenchicken | m: Int // 'foo' | ||
camelia | ( no output ) | ||
17:53
pyrimidine left,
setty1 left
|
|||
brokenchicken | m: (??? 'foo').sink.say | 17:54 | |
camelia | rakudo-moar 7e9850: OUTPUT«foo in block <unit> at <tmp> line 1Nil» | ||
timotimo | so the result of sinking ??? 'foo' is what gives us the Nil use | ||
but how do we end up not having foo in the AST at all when we have a // bfore that... | 17:55 | ||
brokenchicken | dunno about the Nil... 'cause the output with || doesn't output the message given to 'foo' but just the default thing; and I suspect the Nil warning is due to @msg.join in warn | ||
I'd guess the message is meant to be under StubCode but it doesn't get displayed past the Ooops thing | 17:56 | ||
17:56
cygx left
|
|||
timotimo | yeah | 17:57 | |
that's potentially what output that oops. i haven't looked at that output to see if it does anything strange to control flow that'd make it just disappear | |||
18:07
curt__ joined
18:08
Cabanossi left
18:10
Cabanossi joined
18:25
hankache joined
|
|||
brokenchicken curses all the programs that use CTRL+W to close tab and CTRL+Q—which is right next to CTRL+W—to close entire program | 18:30 | ||
Atom in particularly -_-- | 18:31 | ||
Juerd | ctrl+w is evil enough. I'm used to that erasing the previous word, not the entire page... | 18:33 | |
18:34
agentzh joined,
espadrine_ left
|
|||
tadzik | oh yes | 18:36 | |
but I'm still more pissed about screen's default C-a | |||
you're unix people, you're supposed to know it means something! | |||
and then tmux comes around and “improves” that... by using C-b | |||
grumble grumble | 18:37 | ||
Juerd | But at least ^AA is still available for when you need a real ^A | 18:41 | |
It's like ~ being special in telnet and ssh, after a newline. Just escape it with another ~ | |||
18:45
setty1 joined
18:46
girafe joined,
jeek left
18:47
TEttinger joined
|
|||
tadzik | yeah, but it's still a silly default | 18:48 | |
imo | |||
Geth | oc: JJ++ created pull request #1168: Adds definition for Repository |
18:52 | |
18:53
agentzh left
18:55
Tonik left
|
|||
Geth | oc: d9485954e9 | (JJ Merelo)++ | doc/Language/glossary.pod6 Adds definition for Repository |
18:57 | |
oc: 0791485950 | (Zoffix Znet)++ | doc/Language/glossary.pod6 Merge pull request #1168 from JJ/master Adds definition for Repository |
|||
brokenchicken | "Method caches hang off an STable"... I keep hearing this "hang off..." phrase. What does it mean? | 18:58 | |
19:03
agentzh joined
|
|||
MasterDuke | i interpret it as "method caches are a data structure which STable has a pointer to", but i wouldn't bet large sums on that being 100% correct | 19:05 | |
19:05
ufobat left
|
|||
brokenchicken | :) | 19:06 | |
19:06
dugword joined
19:07
darutoko left
19:08
Cabanossi left
19:10
Cabanossi joined
19:14
zakharyas left
|
|||
AlexDaniel | m:dd %42 | 19:14 | |
m: dd %42 | |||
camelia | rakudo-moar 7e9850: OUTPUT«Hash % = {}» | ||
agentzh | gfldex brokenchicken: i wrote a merge script that concate all my 8K LOC p6 code into a single .p6 file. now it always takes around 7 sec to complete. | 19:16 | |
it's even faster than a typical partial build after editing an arbitrary single .pm6 compilation unit, which usually takes 7 ~ 13 sec. | |||
it's amazing to see compiling an all-in-one script is even faster than a partial build. | 19:17 | ||
19:17
jeek joined
|
|||
agentzh | not to mention it is significantly faster than a full from-scratch build of every well divided compilation units. | 19:17 | |
*of all those | |||
19:18
pyrimidine joined
|
|||
agentzh | which takes 31 sec. | 19:18 | |
Geth | oc: d8730a58c9 | (JJ Merelo)++ | doc/Language/glossary.pod6 Adds pugs |
||
oc: 7ac5c1f589 | (JJ Merelo)++ | doc/Language/glossary.pod6 Extends PR with reference to Replsitory |
|||
oc: 274142ebeb | (JJ Merelo)++ | doc/Language/glossary.pod6 Fiddly and iffy and diffy I have no idea what they are, so I'll leave just the reference which is kind of circular and will find out. |
|||
agentzh | but still, 7 sec is still far from good enough for test-driven development workflow. | ||
brokenchicken | Sure. We don't claim we've reached the top speed yet :) | 19:19 | |
agentzh | the bearable limit is around 2 sec ~ 3 sec, IMHO. | ||
brokenchicken: no, i was not expecting top speed, i was just hoping for human bearable speed for prototyping purposes :) | 19:20 | ||
MasterDuke | samcv and i each have a moarvm PR waiting for review/merge which should improve that by maybe 0.001s | ||
samcv | heh | ||
MasterDuke | 0.002s if you use a lot of Unicode Nd chars as digits | 19:21 | |
agentzh | MasterDuke: 0.001s for every p6 statement? if yes, then that would be impressive for an 8K LOC code base :) | ||
samcv | agentzh, that's a pretty big change | ||
MasterDuke | agentzh: ha, total | ||
brokenchicken | I thought I saw somewhere nqp::radix is gonna be 50% faster? | 19:22 | |
samcv | not as much as 50% speed boost tho ;) | ||
yeah | |||
i have a PR that does that | |||
brokenchicken | sweet | ||
samcv | for non ascii chars it's 50% faster | ||
19:22
hankache left
|
|||
brokenchicken | Oh. And for ascii? | 19:22 | |
MasterDuke | for Unicode digits | ||
samcv | most likely the same speed | ||
19:22
pyrimidine left
|
|||
brokenchicken | Ah. OK | 19:22 | |
MasterDuke | my PR improves everything, but very slightly | ||
samcv | 50% faster when it sees any non ascii digits | ||
idk does that also happen when the number ends? | 19:23 | ||
lizmat | :q | ||
oops | |||
agentzh | unfortunately i'm not using non-ascii chars in my current project (yet). | ||
samcv | "10 " i mean does it ever encounter like non number chars | ||
or does it basically only process numbers | |||
agentzh | but still good to see speedup! | ||
samcv | or does it have to find a stopping point? | ||
lizmat | .001 improvement for every p6 statement would make setting building in negative time ? | ||
agentzh | lizmat: lol | 19:24 | |
lizmat | setting being something like 50K lines | ||
ok, just parsing in negative time then | |||
parsing takes about 47 seconds for me nowadays :-) | |||
brokenchicken | samcv: it'd process that as 10 and one of the return values would tell you offset where it stopped | ||
agentzh | lizmat: in my measurement, now each p6 statement takes 0.0052s on average in the comiplation. | 19:25 | |
lizmat: so won't be negative. | |||
just 20% better, i think | |||
lizmat | ok, so 20% better: I'll take that | ||
Geth | oc: c6eda71ce9 | (JJ Merelo)++ | doc/Language/glossary.pod6 Definning the three stooges of categories iffie, diffie and fiddly. Defined according to copied IRC chat from @timtoady as transcribed by @kalkin in #728 Definitely not contributed to clean up the page, rather the obverse, but I'm all in for cleaning, dirtying, or whatever is decided about this page. |
||
brokenchicken | m: use nqp; say nqp::radix(10, '10blarg', 0, 0)[2] | ||
camelia | rakudo-moar 7e9850: OUTPUT«2» | ||
brokenchicken | m: use nqp; say nqp::radix(10, '100000rg', 0, 0)[2] | ||
camelia | rakudo-moar 7e9850: OUTPUT«6» | ||
agentzh | lizmat: the actual number should be worse than 0.0052s though since i'm counting lines with a sole '}' char as a statement in my current estimation :) | 19:26 | |
samcv | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.max | ||
camelia | rakudo-moar 7e9850: OUTPUT«9 => nin» | ||
samcv | also it is odd this doesn't evaluate numerically? | 19:27 | |
but i guess you can call .max on all letter things | |||
brokenchicken | s: %, 'max', \() | 19:28 | |
SourceBaby | brokenchicken, Sauce is at github.com/rakudo/rakudo/blob/7e98...s.pm#L1217 | ||
agentzh | TimToady: one thing i'm really missing in perl 6 grammars is the feature of automatic parse error reporting, like in Parse::RecDescent: metacpan.org/pod/Parse::RecDescent...r-handling | 19:29 | |
samcv | i mean it just calls cmp on them, so since they're strings, they just compare as strings | ||
so i end up doing %hash.keys.».Int.max | 19:30 | ||
though i guess maybe i could keys.sort(+*).max too? | |||
nvm that don't work either | |||
brokenchicken | m: my %hash := :{0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'}; say %hash.max | ||
camelia | rakudo-moar 7e9850: OUTPUT«10 => ten» | ||
samcv | could do %hash.keys.sort(-*)[0] | 19:31 | |
brokenchicken | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.max: +*.key | ||
camelia | rakudo-moar 7e9850: OUTPUT«10 => ten» | ||
samcv | hmm | 19:32 | |
weird that .max sorts properly but .keys.max doesn't | |||
i know there is a reason they don't but still wouldn't expect it as the user initially | |||
brokenchicken | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.keys.max | 19:34 | |
camelia | rakudo-moar 7e9850: OUTPUT«9» | ||
samcv | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.max | ||
camelia | rakudo-moar 7e9850: OUTPUT«9 => nin» | ||
brokenchicken | Looks propper to me | ||
samcv | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.keys.max | ||
camelia | rakudo-moar 7e9850: OUTPUT«9» | ||
brokenchicken | m: my %hash := {0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'}; say %hash.keys.max | 19:35 | |
camelia | rakudo-moar 7e9850: OUTPUT«9» | ||
brokenchicken | that doesn't :S | ||
samcv | i guess i'll use .max: +*.key then | ||
brokenchicken | m: my %hash := {0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'}; say %hash.keys[0].^name | ||
camelia | rakudo-moar 7e9850: OUTPUT«Str» | ||
brokenchicken | dafuq | ||
Oh, I missed the second : :) | 19:36 | ||
m: my %hash := :{0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'}; say %hash.keys.max | |||
camelia | rakudo-moar 7e9850: OUTPUT«10» | ||
brokenchicken | \o/ | ||
samcv is considering using Inline::Perl5 and generating the UCD data in perl6 and then using perl 5 to write it to the file | 19:37 | ||
cause that is what takes the most time | |||
is after i have all the data setup, takes forever to like. put it in rows and crap | |||
lizmat | samcv: are you using printf ? | 19:40 | |
19:41
rba_ left
|
|||
samcv | yes i guess? | 19:42 | |
sprintf | |||
19:43
pyrimidine joined
|
|||
brokenchicken | it's pretty slow | 19:43 | |
lizmat | it's the parsing of the format every time you call it, that's making it slow | ||
it uses a grammar :-) | |||
brokenchicken | :) | ||
lizmat | fwiw, I'm not sure why it needs a grammar | 19:44 | |
taking sprintf out of List.fmt recently, made it 60x faster | |||
brokenchicken | :o | ||
samcv | oh i'm not even using it that much | 19:46 | |
just in a few places, nowhere that gets called a ton | |||
i don't think? can check | |||
yeah no i use nqp::base_I() to convert from integers to strings | 19:47 | ||
19:47
wamba left
|
|||
lizmat | samcv: then I have no explanation for the slowness | 19:47 | |
samcv | this one is pretty slow github.com/samcv/UCD/blob/master/U...en.p6#L650 | ||
it used to take like 10+ times longer before i started nqp optimizing it | 19:48 | ||
19:48
wamba joined
|
|||
samcv | i might make %code-to-prop and %prop-to-code nqp hashes to try and get more speed or something | 19:48 | |
and the point mapping for the bitfield is already a nqp array because it took a million years to make that one before i did that | 19:49 | ||
lizmat | github.com/samcv/UCD/blob/master/U...en.p6#L664 | 19:50 | |
samcv | that part only runs for less than a second | ||
lizmat | have you tried: sort({%enumerated-properties{$^a}<bitwidth>}) | ||
samcv | but i'm sure you could make it faster | ||
with only $^a? | |||
lizmat | yes | 19:51 | |
it will do a schwartzian transform for you under the hood | |||
samcv | nope. though this is where the slowness happens github.com/samcv/UCD/blob/master/U...en.p6#L677 | ||
lizmat | samcv: why is code-to-prop a hash ? | 19:52 | |
why not an array ? | |||
samcv | uhm | ||
i guess i could make it an array | |||
can't make prop-to-code an array tho | |||
lizmat | seems to take a monotonically increasing integer key | 19:53 | |
samcv | yea | ||
lizmat | which spells "array" to me... possible even a str array | ||
samcv | i will generate a minimal build, commit that to the source repo and then we can play aronud with it | ||
so we make sure it doesn't change the output | 19:54 | ||
AlexDaniel | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.max | 19:55 | |
camelia | rakudo-moar 7e9850: OUTPUT«9 => nin» | ||
AlexDaniel | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.maxpair | ||
camelia | rakudo-moar 7e9850: OUTPUT«No such method 'maxpair' for invocant of type 'Hash' in block <unit> at <tmp> line 1» | ||
AlexDaniel | m: my %hash = 0 => 'zero', 1 => 'one', 10 => 'ten', 9 => 'nin'; say %hash.maxpairs | 19:56 | |
camelia | rakudo-moar 7e9850: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5one' (indicated by ⏏) in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
AlexDaniel | why does it attempt to numify it?… | 19:57 | |
lizmat | AlexDaniel: maxpairs assumes values are numbers | ||
it came from Baggy/Mixy | |||
samcv | so with this minimal build takes 90s to generate the bitfield rows. now gonna make a few of those changes | ||
i wish we had macros | 19:59 | ||
lizmat | nudge masak :-) | 20:02 | |
20:03
agentzh left
|
|||
moritz | samcv: no idea if anybody mentioned that, but quietly + warnings is likely expensive; avoiding the warnings in the first place is typically faster | 20:05 | |
samcv | well it prints tons of warnings | ||
and i have no clue why | |||
let me find the error | |||
moritz | find where they come from, and sprinkle some // '' or // 0 in | ||
lizmat | moritz++ | 20:06 | |
20:08
agentzh joined,
domidumont left
|
|||
samcv | well it comes from the iterator | 20:09 | |
or something | 20:10 | ||
i will get back to you when i get some info on it | |||
lizmat | what is the warning exactly, samcv? | ||
samcv | once i finish this thing i will undo the quietly | 20:11 | |
20:13
cognominal left,
skids joined
20:16
Vynce joined
|
|||
samcv | weird. i removed it and it didn't warn for every single iteration | 20:17 | |
dunno if related to recent changes to rakudo but if i didn't have quietly it would warn me about something used in string context on the line that was `for %points.keys.sort(+*) -> $point {` | 20:18 | ||
and it didn't make any sense at all | |||
lizmat | what was that something ? | ||
samcv | it didn't tell me | 20:19 | |
lizmat | so it said "used something in string context" ? | ||
samcv | Use of uninitialized value of type Any in string context | ||
something like that | |||
lizmat | ah, ok | 20:20 | |
20:20
espadrine_ joined
|
|||
samcv | yeah it didn't tell me what it was | 20:20 | |
lizmat | no it did, it was an Any | ||
samcv | and the values were iniialized cause i could print them out each loop and i checked | 20:21 | |
lizmat | m: dd Any | ||
camelia | rakudo-moar 7e9850: OUTPUT«Any» | ||
samcv | yeah but. | ||
none of the keys or values were Any, i could print them all out fine in the loop | |||
so i am not sure where the Any came from | |||
timotimo | agentzh: does your code happen to use a whole lot of sub infix:<foo> or similar? | 20:23 | |
lizmat | hmnmm | ||
samcv: you'r doing %points.keys.sort(+*), which implies that the keys of %points are Str or at least Cool | |||
agentzh | timotimo: nope | ||
samcv | lizmat, yep | 20:24 | |
they are ordinary keys | |||
default | |||
lizmat | ok | ||
agentzh | timotimo: i haven't defined any custom operators yet. | ||
lizmat | samcv: I just blew up my line of reasoning... :-) | ||
agentzh | timotimo: i just have a .Str() method in one of my 46 classes. | ||
samcv | lol | ||
agentzh, you don't have enough classes. | 20:25 | ||
should have 2000 | |||
for optimim compiling speed | |||
and augment everything | |||
that's how you turn on the turbo speed | |||
timotimo | OK. we do know that defining many infixes/prefixes/whatever makes compile times blow up a whole lot | ||
samcv | ;P | ||
20:25
dugword left
|
|||
agentzh | samcv: lol | 20:26 | |
samcv | lizmat, so we're down to 72 seconds down from 90 i think, or 80? | ||
lizmat | you said 90 before | ||
samcv | same final output, i think the removing the quietly. so that's a good improvement | ||
will be magnified greatly for full builds | |||
gonna try some of the other things now :) | |||
lizmat | well, removing the warnings would be better | ||
agentzh | samcv: i have another perl 5 project waiting to be ported over to perl 6, which has 69 classes, way more than my current one :) | 20:27 | |
20:27
awwaiid joined
|
|||
agentzh | samcv: most of the classes are for AST node types. that's why there are many. | 20:27 | |
samcv | just make them all the same class! genius! samcv you really are smart! | ||
lizmat | timotimo: what's the whatever ? subs in general ? | ||
agentzh | samcv: these are compilers. | ||
samcv | problem fixed | ||
ah cool :) | 20:28 | ||
agentzh | samcv: we're hacking on our own perl 6 dialect compiler. | ||
using rakudo as the reference p6 impl during testing and development. | 20:29 | ||
samcv | i should make a grammar someday that does Unicode regex notation or something | ||
20:29
b2gills left
|
|||
samcv | it will probably happen somewhere down the road | 20:29 | |
20:29
b2gills joined
|
|||
samcv | nice | 20:29 | |
agentzh | hopefully ours is much more practical than rakudo in terms of compilation speed and runtime speed. | ||
samcv | and how are you achieving this magic? | 20:30 | |
agentzh | Perl has to be Practical :) | ||
moritz | agentzh: do you have a link for us? | 20:31 | |
agentzh | moritz: not yet, it's still under development. | ||
samcv | top secret club | ||
agentzh | moritz: a simple fib(35) recursive p6 program is already 10x faster than rakduo and 2x faster than perl 5. | ||
but that's just a toy. | |||
we've implemented a lot of perl 6 common features already, including OO. | 20:32 | ||
targeting LuaJIT. | |||
and OpenResty | |||
moritz | agentzh: that's great; I hope you can keep up the performance as you add more features | 20:33 | |
agentzh | moritz: thanks. yeah, we haven't really started optimizations yet. | ||
MasterDuke | agentzh: have you run it against roast? if so, what % of it passes? | ||
moritz | (or decide to implement only a well-defined subset to keep performance) | ||
agentzh | moritz: the goal is to make our p6 compiler generate code that is times faster than perl 5. | ||
perl 5 is our performance reference. | |||
rakudo is our functionality reference. | 20:34 | ||
samcv | how do you plan to implement NFG string types? | ||
agentzh | MasterDuke: not yet. but we'll get to that. | ||
samcv: i think we'll just implement features we will use ourselves when creating other compilers. | 20:35 | ||
like PHP/Python/Ruby/JS on LuaJIT. | |||
it's part of our company's business. | |||
MasterDuke | agentzh: any blog posts or articles written about it? | ||
agentzh | so we have a team working on these. | ||
samcv | so you are not planning on implementing it? | ||
or it is not planned yet? | 20:36 | ||
agentzh | MasterDuke: will definitely write a few. we're still in the early phase. | ||
samcv | i could always help out if this becomes profitable | ||
MasterDuke | cool, look forward to them! | ||
timotimo | lizmat: no, not subs in general, just stuff that adds to EXPR somehow | 20:37 | |
it forces the NFA to have stuff added to it and then the optimizer runs over the whole thing again | |||
samcv | lizmat, now from 72 down to 52 seconds :) | ||
timotimo | so the first time it optimizes the whole core grammar NFA, then it optimizes that + a bit, then that + another bit, then that + one more extra bit | ||
lizmat | samcv: cool | 20:38 | |
timotimo | so the work it has to do increases in a stupid way | ||
TT recently started working on something that'll let us do this more efficiently | |||
lizmat | TT ? | ||
20:38
Cabanossi left
|
|||
japhb | TimToady, I presume. | 20:39 | |
yoleaux | 23 Jan 2017 14:01Z <jnthn> japhb: Probably setting the encoding to ASCII might do it too. Otherwise, use .read(1) - after all, you're after bytes, not chars. | ||
timotimo | yup | ||
i couldn't backlog today, anything good happen? :) | |||
20:40
Cabanossi joined
|
|||
brokenchicken | Yes! Perl 7 can do classes now! | 20:40 | |
:) | |||
gfldex | timotimo: believe it or not, there was another should-I-use-unicode-operators-discussion :-> | 20:41 | |
MasterDuke | timotimo: if you didn't backlog #moarvm, jnthn and i figured out why i didn't see radix being JITted. turns out moar won't jit the mainline of an NQP program, had to put it in a sub | ||
20:42
jferrero joined
|
|||
MasterDuke | which led to github.com/MoarVM/MoarVM/pull/514 | 20:42 | |
timotimo | oh!! | 20:43 | |
were you able to find any performance improvement with the two things? | |||
food time :) | 20:44 | ||
MasterDuke | 20m iterations of nqp::radix() (with just ascii chars) was 1s faster (7s -> 6s) | ||
20:45
agentzh left
20:47
agentzh joined
|
|||
agentzh | samcv: not yet planned. | 20:48 | |
samcv: maybe at some point in the future. not sure. not a priority right now. | 20:49 | ||
20:51
bjz joined
|
|||
agentzh | moritz: performance is our top concern, not completeness. so we choose perl 6 features that can be practically implemented efficiently enough and ignore those that can't (at least for now). | 20:51 | |
that's our advantage. | |||
*grin* | |||
20:51
FROGGS left
|
|||
ugexe | like how all the other perl6 compilers started? | 20:51 | |
MasterDuke | timotimo: and radix is called 6k times during a rakudo build, so that's a whole 0.0003s improvement! | 20:52 | |
agentzh | ugexe: i can get the sarcasm. but i want to make it clear that ours is driven by real world business requirements. it's not a pet project nor a hobby :) | 20:53 | |
we have a full-time engineering team working on it seriously. | |||
ugexe | how many of you perl6 dev people think of your work on perl6 as a pet project or hobby? | ||
moritz does | 20:54 | ||
20:55
TEttinger left
|
|||
lizmat has always been hobbying for a living | 20:55 | ||
moritz | agentzh: I'm thrilled that there's another Perl 6 compiler project now. Please keep us up-to-date, and tell us if you need any help testing or so | 20:56 | |
gfldex goes green of envy | |||
20:56
kurahaupo__ left
|
|||
agentzh | moritz: thanks. very much appreciated. i've already been getting a lot of help here. | 20:56 | |
20:56
kurahaupo__ joined
|
|||
MasterDuke does (enough that i'm not sure i would even call myself a perl6 dev person) | 20:56 | ||
agentzh | i'll definitely keep posting our progress here :) | ||
and share any findings. | 20:57 | ||
moritz | agentzh: does your compiler have a name already? | ||
20:57
rba_ joined
|
|||
agentzh | moritz: yes, it's called fanlang. | 20:57 | |
The word Fan means "translate" in Chinese. | 20:58 | ||
since perl 6 is a wonderful language to build compilers and transcompilers. | |||
lizmat | www.amazon.com/FANLANG-Foldable-Ki...B01JOHKTIW :-) | ||
agentzh | lizmat: lol | ||
we started working on fanlang since last Nov. | 20:59 | ||
so it's still very young. | |||
we're trying hard to make it production ready next month. | |||
we're hacking crazily. | |||
we're gonna sell products written in perl 6 and compiled by fanlang soon. | 21:00 | ||
it's so much fun coding in perl 6 and also implementing perl 6, even just a core subset of it. | 21:01 | ||
moritz | \o/ | ||
and I'll have a bigger audience for my book :-) | |||
agentzh | ah, you're working on a book? | ||
moritz | yes, leanpub.com/perl6 | 21:02 | |
agentzh | yeah, we'll also try to help promote perl 6 in the industry. | ||
21:02
cognominal joined
|
|||
agentzh | moritz: nice! | 21:02 | |
moritz | about 2/3 done by manuscript length | ||
agentzh | moritz: glad to see you are still actively around after so many years. | ||
moritz | so probably 20% by effort | ||
agentzh | moritz: cool! | ||
moritz | agentzh: my involvement did reduce the last two years or so; with two small kids at home it was quite difficult to muster energy for anything except work and family :-) | 21:03 | |
agentzh | i just coded a 8K LOC perl 6 project last week. | ||
moritz | 8K LOC sounds like my yearly output :-) | 21:04 | |
agentzh | much shorter than my original p5 version. | ||
and also much nicer. | |||
moritz: i said we are crazy :) | |||
moritz: yeah, that's understandable. | 21:05 | ||
moritz: i had to reduce my workload when i had my daughter. | |||
now she's 3 years old and i can hack a lot again. | |||
*grin* | 21:06 | ||
moritz | agentzh: :-) | ||
agentzh: when my older daugther was a few weeks old, I could hold her on my lap while coding; the younger was was too big and restless for that :-) | |||
agentzh | lol | 21:07 | |
yeah, older kids want to compete on the keyboard :) | |||
moritz | aye | 21:08 | |
and then they would point at the screen and say "papa" ("daddy") when they saw my github profile picture | |||
mst | being sat on my father's lap watching while he wrote code is what prompted me to try doing so myself | 21:09 | |
moritz | Ms. 6 loves numbers (and learned adding multi-digit numbers on paper in a under half an hour), so I hope that's a good base for some scientific or engineering interest that I can kindle | 21:11 | |
now I'm looking for child-compatible biographies of female scientists or engineers to serve as role models | 21:13 | ||
21:14
andrzejku_ left
|
|||
SmokeMachine | brokenchicken: how do I create a class in perl7? | 21:15 | |
brokenchicken | ugexe: I think of it as a school. | ||
SmokeMachine: github.com/perl7/perl7#object-orientation | 21:16 | ||
21:16
_28_ria left
|
|||
AlexDaniel | no semcicolons, no braces… | 21:17 | |
/c// | 21:18 | ||
ugexe | I just think its disingenuous to consider a group of paid engineers as an argument for their producing higher quality "serious' work to that of volunteers (most of whom are paid engineers themselves) | ||
AlexDaniel | s | ||
21:18
agentzh left,
_28_ria joined
|
|||
moritz | ugexe: it's just a matter of time available | 21:18 | |
and building on the experience of others | 21:19 | ||
brokenchicken | ugexe: my code quality in rakudo is about 1000% better than stuff I write for work. | 21:20 | |
21:20
bjz left
|
|||
ugexe | brokenchicken: my thoughts exactly | 21:20 | |
RabidGravy | tum ti tum | 21:22 | |
SmokeMachine | brokenchicken: why had you changed your mind about fun ton? | 21:23 | |
brokenchicken | SmokeMachine: because the code that handles functions and methods is the same and having methods declared with `fun ion` was silly :) | 21:24 | |
japhb | .oO( Like silly ever stopped you before ... ) |
21:26 | |
SmokeMachine | I was expecting something like cla Foo met foo[a] say a hod ss | 21:28 | |
21:29
pyrimidine left,
pyrimidi_ joined
|
|||
SmokeMachine | And why had you dropped the 💬? | 21:30 | |
21:33
kurahaupo__ left
|
|||
Geth | ook: e68b8c721c | Cale++ | src/subs-n-sigs.pod Update subs and sigs (#87) * Add file extension to open('scores') Did not compile without this. * Update basics.pod ... (30 more lines) |
21:34 | |
21:35
kurahaupo left
|
|||
brokenchicken | SmokeMachine: just got annoyed trying to type it | 21:36 | |
21:37
labster joined
|
|||
SmokeMachine | :( | 21:39 | |
21:44
espadrine_ left
21:54
bjz joined
21:58
obfusk left,
obfusk joined
22:01
bjz left,
bjz_ joined
22:08
Cabanossi left,
bjz_ left
22:09
pmurias left
22:10
Cabanossi joined
22:13
RabidGravy left,
agentzh joined
22:16
kyan joined
22:22
BenGoldberg joined
22:23
chewzerita joined
22:24
chewzerita left
22:26
dugword joined
22:28
Vynce left
22:29
pyrimidi_ left
22:30
dugword left
22:32
geekosaur left
22:33
agentzh left,
geekosaur joined
22:37
Cabanossi left
22:38
pmurias joined
22:40
Cabanossi joined
22:42
perlawhirl joined
22:50
pyrimidine joined
|
|||
MasterDuke | brokenchicken: you say "You can specify parameters with square brackets:", but all the examples use round parentheses, i.e., () | 22:51 | |
timotimo | square brackets are just for role parameters, i believe? | 22:53 | |
oh | |||
that's for perl7 | |||
gfldex | moritz: i got a real word example you may be able to use in your book of role mixin in github.com/gfldex/perl6-concurrent...d.pm6#L120 | 22:54 | |
22:55
perlawhirl left
22:59
pyrimidine left
23:08
Cabanossi left
23:10
Cabanossi joined
|
|||
brokenchicken | MasterDuke: a ye, I changed that too | 23:11 | |
MasterDuke | changed! how can Perl 7 be considered production-ready when it just changes out from under you like that! | 23:12 | |
23:13
perlawhirl joined,
dugword joined
|
|||
brokenchicken | :) | 23:16 | |
23:16
Actualeyes left
23:18
Actualeyes joined
23:19
avuserow left,
avuserow joined
23:25
lep-delete left
|
|||
samcv is still waiting for perl 6 | 23:27 | ||
err i meant perl 8 | |||
23:28
rindolf left
23:29
lep-delete joined
23:34
_28_ria left,
njmurphy joined
23:35
perlawhirl left
23:41
AlexDaniel left
23:44
_28_ria joined
23:52
Vynce joined
|