»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:07
flightrecorder joined
00:09
havenn joined
00:12
flightrecorder left
|
|||
dalek | kudo/nom: 58fd8fa | jnthn++ | src/Perl6/Grammar.pm: Eliminate a workaround. |
00:13 | |
00:23
fgomez left
|
|||
jnthn | sleep & | 00:23 | |
dalek | kudo/nom: 2bb3029 | jnthn++ | src/Perl6/Grammar.pm: Add class/methods in preparation for heredocs. |
00:24 | |
00:30
MayDaniel left
00:32
bowtie left,
fgomez joined
00:45
spider-mario left
00:47
leont left
00:59
fgomez left
01:15
PZt left
01:20
sirrobert left
01:23
fgomez joined
|
|||
colomon | heredocs! \o/ | 01:38 | |
02:10
mst left
02:12
mst joined
02:16
benabik joined
02:32
PacoAir left
02:41
plobsing joined
02:47
kurahaupo joined
02:50
benabik left
02:51
benabik joined
03:00
Chillance left
03:11
orafu left,
orafu joined
03:21
benabik left
03:23
tokuhiro_ joined
03:30
benabik joined
03:31
tff joined,
tff left
03:43
benabik left
03:45
benabik joined
03:59
tokuhiro_ left
04:00
tokuhiro_ joined
04:05
tokuhiro_ left
04:28
kurahaupo left,
dayangkun joined,
kurahaupo joined
04:46
xinming left
04:56
jaldhar_ left
05:00
thou joined
05:03
jaldhar joined,
cognominal left
05:07
xinming joined
05:10
cognominal joined
05:35
grondilu joined
|
|||
grondilu | rn: class Foo {...}; class Bar is Foo {}; class Foo { }; say Bar.new; | 05:35 | |
p6eval | niecza v22-15-gc600005: OUTPUT«===SORRY!===Two definitions found for symbol ::GLOBAL::Foo first at /tmp/fAbrdWXbwj line 1 second at /tmp/fAbrdWXbwj line 1 at /tmp/fAbrdWXbwj line 1:------> o {...}; class Bar is Foo {}; class Foo ⏏{ }; say Bar.new… | ||
..rakudo 2bb302: OUTPUT«No such method 'new' for invocant of type 'Bar' in block at /tmp/cQGUxSzlKp:1» | |||
sorear | apparently it only works for my-classes | 05:36 | |
05:40
benabik left,
benabik joined
06:27
kaare_ joined
06:47
araujo left
06:58
benabik left
07:15
azawawi joined
|
|||
azawawi | hi | 07:15 | |
tadzik: ping | |||
07:45
tokuhiro_ joined
07:46
thou left
07:51
benabik joined
07:52
wk left
08:07
GlitchMr joined
08:19
Mescale joined
08:42
domidumont joined
08:55
stocks left
09:02
Mescale left
09:04
azawawi left
09:05
domidumont left
09:06
domidumont joined
09:38
SamuraiJack joined
09:46
nyuszika7h left
09:47
sorenso joined
09:50
nyuszika7h joined,
kaare_ left
09:52
kaare_ joined
10:02
nyuszika7h left
10:03
nyuszika7h joined,
havenn left,
havenn joined
10:04
xinming left,
nyuszika7h left
10:06
nyuszika7h joined
10:08
havenn left
10:10
rindolf joined
10:24
araujo joined,
araujo left,
araujo joined
|
|||
masak | good antenoon, #perl6 | 10:25 | |
10:25
leont joined
|
|||
tadzik | hello hello | 10:29 | |
...and it's still morning! \o/ | |||
masak does some air quotes | 10:30 | ||
leont denies it's morning. It's still night and he's still asleep :-S | 10:31 | ||
masak | r: macro greet($t) { quasi { say "good " ~ {{{$t}}} ~ "!" } }; greet "morning"; greet "day"; greet "evening"; greet "night" | 10:32 | |
p6eval | rakudo 2bb302: OUTPUT«good morning!good day!good evening!good night!» | ||
masak | \o/ | ||
though this example, just as many others, is Better Written As Sub. | |||
tadzik | (: | 10:33 | |
macros macros | |||
masak | wanted: macro examples which are not Better Written As Sub. | ||
tadzik | can they be exported now? | ||
masak | good question. | ||
my guess is "no", but please go ahead and try ;) | |||
tadzik | yay, rakudo update time | 10:34 | |
masak | also, if y'all keep naming your macros "marco", I will eventually release the ferrets on you. | ||
tadzik | (: | ||
cognominal | will christmas come early this year? macros, heredoc… | 10:35 | |
masak | tadzik: exporting macros seems to work, yes. | 10:36 | |
tadzik | ossum | ||
# these will be macros one day, yet macros can't be exported so far | 10:37 | ||
I wrote that 2 years ago :) | |||
masak | next to what? | ||
tadzik | next to 'sub RESET is export { "\e" }' and friends in Term::ANSIColor | 10:38 | |
masak looks | 10:39 | ||
sure, you could make those macros. but honestly, they look like highly inline-able functions to me, and so it shouldn't really matter. | 10:40 | ||
by the principle of least power, you should probably keep them as subs and lobby for excellent inlining. | 10:41 | ||
tadzik | hm | 10:44 | |
indeed, being inlinable subs they'll probably end up being the same thing in the generated code | |||
masak | right. | 10:45 | |
so... Better Written As Sub. :) | |||
10:45
kurahaupo left
|
|||
masak finds it quite ironic that he first gives the Perl 6 world macros and then chooses that as his slogan | 10:45 | ||
10:55
cognominal left
|
|||
jnthn | Rakudo may well already be inlining that RESET fwiw :) | 11:05 | |
masak | \o/ | ||
is there any way to find out? | 11:06 | ||
jnthn | Only trawling through the generated code :) | 11:07 | |
11:08
spider-mario joined
|
|||
masak | doesn't sound so bad. | 11:08 | |
11:11
snearch joined
|
|||
masak | r: macro foo($code) { quasi { {{{$code}}}() } }; my $c = 0; my &inc = -> { $c++ }; foo &inc; say $c | 11:11 | |
p6eval | rakudo 2bb302: OUTPUT«1» | ||
masak | everything just... works! \o/ | ||
11:14
havenn joined
|
|||
masak | Missing test file: t/spec/S03-operators/andthen.t | 11:14 | |
commit c82a6d5436c75978a29300367ac4c09933e9cdbf, Author: Moritz Lenz [email@hidden.address] "implement infix:<andthen>" | 11:15 | ||
added S03-operators/andthen.t to t/spectest.data | 11:16 | ||
but there's no corresponding file in roast. | |||
11:18
PZt joined
11:19
havenn left
|
|||
jnthn | r: macro infix:<pos-or>(*@asts) is assoc('list') { my $result = @asts.pop; for @asts.reverse { $result := quasi { {{{$_}}} > 0 ?? {{{$_}}} !! {{{$result}}} } } $result }; sub foo() { say "oops"; 4 }; say -5 pos-or 3 pos-or foo; | 11:20 | |
p6eval | rakudo 2bb302: OUTPUT«===SORRY!===Unable to parse expression in block; couldn't find final '}' at line 2, near "for @asts."» | ||
masak | jnthn: semicolon | ||
jnthn | r: macro infix:<pos-or>(*@asts) is assoc('list') { my $result = @asts.pop; for @asts.reverse { $result := quasi { {{{$_}}} > 0 ?? {{{$_}}} !! {{{$result}}} } }; $result }; sub foo() { say "oops"; 4 }; say -5 pos-or 3 pos-or foo; | ||
p6eval | rakudo 2bb302: OUTPUT«3» | ||
jnthn | Using two of the month's new features together :P | 11:21 | |
masak | that's pretty impressive. | ||
jnthn | Sadly, fixing the double evaluation exposes a bug. | ||
masak | "the double evaluation"? | 11:22 | |
jnthn | r: macro infix:<pos-or>(*@asts) is assoc('list') { my $result = @asts.pop; for @asts.reverse { $result := quasi { my \x = {{{$_}}}; x > 0 ?? x !! {{{$result}}} } }; $result }; sub foo() { say "oops"; 4 }; say -5 pos-or 3 pos-or foo; | ||
p6eval | rakudo 2bb302: OUTPUT«Lexical 'x' not found in at /tmp/tiE6e4uirM:1 in block at /tmp/tiE6e4uirM:1» | ||
masak | sounds like you're referring to a known RT ticket. | ||
jnthn | masak: It evalutes the macro argument twice. | ||
masak | oh! | ||
how do you know? | |||
jnthn | masak: Because I wrote it that way | ||
masak | oh! | ||
(phew) | |||
11:22
MayDaniel joined
|
|||
jnthn | {{{$_}}} > 0 ?? {{{$_}}} !! ... | 11:23 | |
masak | nodnod. | ||
yes, each {{{}}} evaluates once. | |||
jnthn | And I wanted to just do it once, but when I try to stick it in a temporary variable, it busts. | ||
masak | as above. I see. | ||
maybe declaring variables in quasis doesn't work? | |||
jnthn | Seems so | ||
Still, pretty neat that list associative macros work :P | |||
masak | r: macro foo { quasi { my $a = "OH HAI"; say $a } }; foo | 11:24 | |
p6eval | rakudo 2bb302: OUTPUT«Cannot assign into a PMCNULL container in at /tmp/sUPrYDDbdi:1 in block at /tmp/sUPrYDDbdi:1» | ||
masak submits rakudobug | |||
jnthn | Aside from running into that, it pretty much worked as I expected first time :) | 11:25 | |
11:27
MayDaniel left
11:29
cognominal joined
11:30
MayDaniel joined
|
|||
masak | r: macro apply($code, $arg) { quasi { {{{$code}}}({{{$arg}}}) } }; apply sub ($t) { say $t }, "OH HAI" | 11:32 | |
p6eval | rakudo 2bb302: OUTPUT«OH HAI» | ||
masak | \o/ | ||
(but Better Written As Sub) | |||
11:34
cognominal left,
am0c joined
11:35
cognominal joined
|
|||
masak | r: sub apply($code, $arg) { $code($arg) }; apply sub ($t) { say $t }, "OH HAI" # like this | 11:36 | |
p6eval | rakudo 2bb302: OUTPUT«OH HAI» | ||
masak | r: (sub ($t) { say $t })("OH HAI") | 11:38 | |
p6eval | rakudo 2bb302: OUTPUT«OH HAI» | ||
masak | r: sub ($t) { say $t }("OH HAI") | ||
p6eval | rakudo 2bb302: OUTPUT«===SORRY!===Confusedat /tmp/_JIW9Kguk5:1» | ||
masak | thought so. | ||
11:45
xinming joined
11:46
leont left
11:49
PacoAir joined
|
|||
dalek | kudo/nom: 203f97e | masak++ | src/Perl6/Actions.pm: [Perl6::Actions] unify macro code paths Three code paths are now one code path. Finally! |
11:51 | |
11:52
cognominal left
|
|||
masak | some nice additions having to do with error reporting, added by moritz++ to one of the code paths, is now avaiable in all three kinds of macro call syntax. | 11:52 | |
jnthn | yay, 50 lines of stuff gone :) | ||
masak | yep. | ||
there was a lot of repetition in there. | |||
jnthn | Indeed. | 11:53 | |
masak | the only code that turned out to be parametric was "how to collect arguments". because we were in different rules in the grammar. | ||
so we just pass that in as a callback :) | |||
callbacks++ | |||
11:59
cognominal joined
|
|||
masak | r: macro f { my $a = "OH HAI"; quasi { say $a } }; f | 12:01 | |
p6eval | rakudo 2bb302: OUTPUT«OH HAI» | ||
dalek | kudo/nom: 4925c91 | jnthn++ | src/Perl6/ (2 files): Eliminate leftover quoting code; unused since Q. |
12:03 | |
atures: 8a6cb6c | masak++ | features.json: [features.json] Rakudo does hygiene now |
12:06 | ||
jnthn | masak: The coment on "Basic macros" says "no placeholders yet", but we have those now. Also worth an update? | 12:07 | |
12:09
cognominal left
|
|||
masak fixes | 12:15 | ||
jnthn++ | 12:16 | ||
dalek | atures: ea70272 | masak++ | features.json: [features.json] rakudo has placeholders now |
||
12:17
cognominal joined
12:45
nebuchadnezzar left
12:48
Lola_91 joined
|
|||
Lola_91 | is the maintainer of fedora perl6 rakudo package here? i tried to install from the repo and keep getting this on fedora 17 PARROT VM: Could not load bytecode Could not load oplib `nqp_ops' :s | 12:49 | |
masak | Lola_91! \o/ | ||
Lola_91: I recognize that error message. | 12:50 | ||
it happens when installed versions of Parrot/nqp/Rakudo are out of sync. | |||
Lola_91 | masak: hiiii!^____________^ | ||
masak | :D | ||
Lola_91: nice to see you pop in now and then :) | |||
Lola_91 | masak: i might be no more a programmer but i can not leave you alone here without passing by :P | 12:51 | |
jnthn | hi Lola_91 :) | 12:52 | |
Lola_91 | jnthn: Helooooo :) | ||
jnthn | Maybe a source install is easier...if you've a C compiler handy :) | ||
12:52
rindolf left
12:53
rindolf joined,
rindolf left
|
|||
Lola_91 | jnthn: I have gcc and the needed tool to compile but I found it fancier to use the repo :( | 12:54 | |
12:55
nebuchadnezzar joined
|
|||
Lola_91 | so the fedora packages are mmm.. rakudo star 0.0.2012.08_4.7.0-2.fc17 and parrot 4.7.0-1.fc17.1 .. they seem old too i think | 12:55 | |
jnthn | Those aren't terribly old | 12:56 | |
And they look like they should be compatible too...odd. | |||
Lola_91 | jnthn: mmm if it seems odd to the gurus then i should just build from source :P | 12:57 | |
jnthn | Lola_91: I'm only the compiler writing guru. I don't know much at all about packaging... :) | 12:58 | |
masak | it's a bit of a blind spot among the compiler writers, I guess. we tend to always build directly from source. | 12:59 | |
Lola_91 | masak: i can manage creating the rpms i think i still remember how i used to do it ^__^ | 13:00 | |
masak | cool. | ||
13:04
Patterner left
13:05
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
Lola_91 | i tried on a couple more of my virtual machines, fedora17 perl6 rakudo does not work :( will remove and install from source | 13:06 | |
someday I will buy a mac :P | 13:07 | ||
jnthn | shop, bbl & | ||
Lola_91 | ops i burned my lunch :( must go see you soon ! :) | 13:09 | |
13:09
Lola_91 left
13:12
Chillance joined
13:18
cognominal left
13:25
cognominal joined
13:42
tokuhiro_ left,
tokuhiro_ joined
13:47
tokuhiro_ left
14:02
sorenso left
14:09
dayangkun left
14:10
rindolf joined
14:24
cognominal left
14:29
sorenso joined
14:30
xinming left
14:32
cognominal joined
14:37
skids left
14:38
skids joined
|
|||
grondilu | do you guys use an IDE? Padre, maybe? | 14:40 | |
14:41
thou joined
|
|||
rindolf | grondilu: hi. | 14:42 | |
grondilu: I'm using gvim mostly. | |||
masak | grondilu: I do most of my coding in vim. it has excellent hooks to the shell, pulling in things like `sort` and `perl` naturally. | 14:43 | |
grondilu | ok. I'll stick to vim as well then. I thought I was missing something by not using an IDE. | 14:44 | |
masak | chances are you are. :) | 14:46 | |
though personally, those things that I'm missing haven't yet been convincing enough to make me adopt an IDE. | |||
flussence | (at what point does vim become an IDE? it still loads in under a second for me...) | 14:49 | |
14:51
REPLeffect left
|
|||
grondilu | Do you use special vim-scripts/plugins for Perl? | 14:52 | |
flussence | I'm using vim-perl for the slightly more up to date syntax stuff, but nothing fancy | 14:53 | |
14:54
xinming joined
|
|||
grondilu | r: say [ 1, @([2, 3]) ].perl | 15:02 | |
p6eval | rakudo 4925c9: OUTPUT«[1, 2, 3]» | ||
grondilu | r: say [ 1, list [2, 3] ].perl | ||
p6eval | rakudo 4925c9: OUTPUT«[1, [2, 3]]» | ||
grondilu | do I really need to use the @() notation for dereferencing? | 15:03 | |
masak | r: say [ 1, [2, 3].list ].perl | ||
p6eval | rakudo 4925c9: OUTPUT«[1, 2, 3]» | ||
masak | list != .list | 15:04 | |
grondilu | oh | ||
ok | |||
15:05
am0c left
15:09
Mescale joined
|
|||
TimToady | r: say [ 1, [2,3][] ].perl | 15:12 | |
p6eval | rakudo 4925c9: OUTPUT«[1, 2, 3]» | ||
15:19
rindolf left
15:21
Chat0237 joined,
Chat0237 left
|
|||
grondilu | r: say [ 1, [,] [2, 3] ].perl | 15:22 | |
p6eval | rakudo 4925c9: OUTPUT«[1, [2, 3]]» | ||
grondilu | rn: say [ 1, [,] [2, 3] ].perl | ||
p6eval | rakudo 4925c9, niecza v22-15-gc600005: OUTPUT«[1, [2, 3]]» | ||
TimToady | [2,3] is still a single item to the list that is the argument to [,] | ||
zen slice is the shortest way that I know of, as I did above | 15:23 | ||
but if it's a literal [], why not use () instead? | |||
and if it's not a literal, why isn't it in a @ var? | |||
grondilu | it is not a literal. | 15:24 | |
I used a literal here to make the example clear | |||
TimToady | nr: my $aref := [2,3]; say [ 1, @$aref ].perl | ||
p6eval | rakudo 4925c9, niecza v22-15-gc600005: OUTPUT«[1, 2, 3]» | 15:25 | |
TimToady | don't need the parens, even if it's in a $ var | ||
grondilu | the code I had in mind was more like: [ 1, some-function-returning-an-array().list ] | ||
TimToady | why isn't the function returning a list instead of an array? | ||
grondilu | hang on | 15:26 | |
Mescale | /quit Failed to hang on | ||
15:26
Mescale left
|
|||
TimToady | this often means the function should be using gather/take rather than pushing to an array :) | 15:26 | |
grondilu | indeed it should return a list in my example, not an array. | ||
my bad | 15:27 | ||
TimToady | though 'return @array' should be returning it as a list | ||
no problem; we're all still trying to figure this out on one level or another... :) | 15:28 | ||
grondilu | the thing is my function as returning a list of arrays, and at some point this confused me into thinking I should dereference the output. | ||
which was wrong. | |||
TimToady | I prefer the word "suboptimal"... | 15:29 | |
15:30
sorenso left
|
|||
TimToady | gah, I give one talk and it sets me back four days in backlogging... | 15:31 | |
jnthn | That was either a very long talk, or a serious amount of prep :) | 15:32 | |
15:32
azawawi joined
|
|||
TimToady | well, driving here took one day | 15:32 | |
jnthn | Oh... | 15:33 | |
TimToady | I shouldn't blame only the talk; been fighting with the email forwarding from my home server to my ISP as well | ||
jnthn doesn't know where stuff is much in California :) | |||
I know the sea is to the west and there's this fault line through the middle and that's about it :) | |||
TimToady | well, California is kinda longish | 15:34 | |
I wonder if there's a way to quantify long-and-skinny-ness | 15:35 | ||
dunno how you'd do that, especially for states that curve like Florida | 15:36 | ||
Tennessee is pretty straight though... | |||
azawawi | jnthn: Is Perl6::Compiler accessible from within a Perl 6 script? | ||
jnthn | azawawi: No | ||
Well, OK, not by that name. :) | 15:37 | ||
That'd be a confusion of compiler vs compilee scope :) | |||
If you want to get hold of the compiler object, pir::compreg__Ps('perl6') will get you it | |||
TimToady | perimeter over area would be one way, but as we know perimeter is fractally indeterminate when you have a coastline | ||
azawawi | jnthn: hmm.. so what's the new name? | ||
jnthn | TimToady: Hm, I keep forgetting that California goes all the way up from Mexico to Oregon. | 15:38 | |
awwaiid: You can get it using compreg like I showed. | |||
TimToady | unless it goes the other direction... | ||
jnthn | :) | ||
awwaiid: What are you wanting to do with it, out of curiosity? | |||
azawawi | jnthn: cool thx | 15:39 | |
jnthn: It would be nice to have that valuable info in github.com/rakudo/rakudo/blob/nom/...mpiler.nqp :) | 15:40 | ||
15:47
xinming_ joined
15:50
xinming left
15:52
bowtie joined,
am0c joined
|
|||
grondilu has edited rosettacode.org/wiki/Permutations#Perl_6 | 15:53 | ||
the Perl5 version was actually simpler than the Perl6 one. That was no good, imho. | 15:54 | ||
TimToady | interesting use of smartmatch semantics | 15:56 | |
I wonder which is faster... | 15:58 | ||
phenny: tell hoelzro that the eject symbol (in yellow) is in there primarily for people who are colorblind. it used to just switch from green to red at that point. | 16:02 | ||
phenny | TimToady: I'll pass that on when hoelzro is around. | ||
awwaiid | wrong tabcomplete, jnthn | ||
awwaiid is awoken from his slumber | 16:03 | ||
16:06
havenn joined
|
|||
jnthn | awwaiid: oops, sorry | 16:06 | |
masak | grondilu: that is possibly the nicest recursive implementation of permutations I've ever seen. | 16:07 | |
TimToady | nr: sub postfix:<.fakemeth> ($n) { "faked method on $n" }; say 42.fakemeth | 16:10 | |
p6eval | niecza v22-15-gc600005: OUTPUT«Potential difficulties: &postfix:<.fakemeth> is declared but not used at /tmp/xLtyeAaicT line 1:------> sub postfix:<.fakemeth> ⏏($n) { "faked method on $n" }; say 42.faUnhandled exception: Unable to resolve method fakemeth in type … | ||
..rakudo 4925c9: OUTPUT«No such method 'fakemeth' for invocant of type 'Int' in block at /tmp/vuZameO8_l:1» | |||
TimToady | hmm | ||
arguable | 16:11 | ||
jnthn | r: 'awwaiid'.comb.categorize({$_}).map({ $^c.key => $c.value.elems }).perl.say; 'azawawi'.comb.categorize({$_}).map({ $^c.key => $c.value.elems }).perl.say # :-) | 16:12 | |
p6eval | rakudo 4925c9: OUTPUT«("a" => 2, "w" => 2, "i" => 2, "d" => 1).list("a" => 3, "z" => 1, "w" => 2, "i" => 1).list» | ||
TimToady | pugs: sub postfix:<.fakemeth> ($n) { "faked method on $n" }; say 42.fakemeth | ||
p6eval | pugs: OUTPUT«*** No such method in class Int: "&fakemeth" at /tmp/JUAl2l7_Pc line 1, column 60 - line 2, column 1» | ||
jnthn | TimToady: Hm, wonder why LTM doesn't land us in the postfix... | 16:13 | |
16:13
snearch left,
am0c left
|
|||
TimToady | it seems to me that the ability to declare fake methods would be a feature, kinda sorta | 16:14 | |
see .WHAT et al. | |||
16:14
azawawi left
|
|||
dalek | kudo/nom: 0268805 | masak++ | src/Perl6/Actions.pm: make macro expansion ignore empty ASTs Fixes RT #115506. |
16:15 | |
grondilu | masak: thanks :) | 16:19 | |
TimToady | jnthn: because LTM comes out to the same length, and <dotty> comes before <postop> in the alternation, I think | 16:23 | |
jnthn | TimToady: ah...right. | 16:25 | |
yeah, of course, the identifier of the method name is declarative... | |||
TimToady | yes, moving <postop> to the top of the alt inside POST fixes it, at least in STD | 16:27 | |
dalek | d: 04216b1 | larry++ | STD.pm6: fake-method postfixes can override real methods |
16:28 | |
16:32
huf left
|
|||
jnthn | > sub postfix:<.fakemeth> ($n) { "faked method on $n" }; 42.fakemeth | 16:39 | |
faked method on 42 | |||
TimToady: Seems swapping them is enough in Rakudo too | 16:40 | ||
spectesting to see if causes any fallout | |||
16:40
havenn left
|
|||
masak | *why* is swapping them enough? I thought LTM... oh, is this a case when earliest alternative wins? | 16:40 | |
16:40
havenn joined
|
|||
flussence | I guess it works like CSS, most specific one wins usually, then there's some obscure rules not many people remember after that... | 16:42 | |
jnthn | masak: Same length by LTM | ||
masak: So fall back to ordering | |||
masak | right. | ||
then it makes sense. | |||
16:42
huf joined
|
|||
masak | blog post! \o/ strangelyconsistent.org/blog/macros...-d2-merged | 16:42 | |
jnthn | Which is a bad idea to rely on for protoregexes, but for alternations is pretty safe | ||
masak | aye. | 16:43 | |
16:44
havenn_ joined
|
|||
dalek | kudo/nom: 170c90f | jnthn++ | src/Perl6/Grammar.pm: Chase an STD change. Fake-method postfixes can override real methods. |
16:45 | |
16:45
havenn left
|
|||
jnthn | TimToady: no spectest reggies | 16:46 | |
16:50
xinming_ left
16:52
xinming joined
|
|||
TimToady | "reggies"? | 16:52 | |
oh, regressions | |||
No amount of caffiene makes up for certain forms of stupidity... | 16:53 | ||
so far niecza has no reggies either, nearly done | 16:54 | ||
masak | in an alternate universe, each new spectest has to be registered with Microsoft in order to be trusted, and "reggies" refers to this process... :) | 16:55 | |
TimToady | sometimes this universe is an alternate universe... | ||
masak | one person's actual universe is another person's alternate universe. :) | 16:56 | |
jnthn | hmmm | 16:57 | |
my %r = %$self; | |||
$r{_herelang} = $self; | |||
bless \%r, $::LANG{Q}; | |||
TimToady: What's this actually doing? :) | 16:58 | ||
Or, more to the point: why does it have to bless back into %*LANG<Q> here? | |||
TimToady | parsing the quoted part of q:to 'foo' using Q, and saving the actual derived quote language for the heredoc | ||
jnthn | OH! | 16:59 | |
masak | nice. | ||
jnthn | Right, we don't want to parse the terminator with the derived. | ||
16:59
mikec_ left
|
|||
jnthn doesn't really read Perl 5 well any more... | 16:59 | ||
16:59
mikec_ joined
|
|||
jnthn | And certainly not non-Moose OO :) | 16:59 | |
masak | it never occurred to me that heredocs, somewhat perversely, contain a nested q or qq quote. | 17:00 | |
yo dawg. | |||
TimToady | one of those places where the implementor takes on vicarious suffering for the user... | ||
jnthn | Yeah...just need to figure out a way to do this that's less of a hack :P | 17:02 | |
Think I got something figured. | 17:03 | ||
17:04
topo` joined
|
|||
TimToady | Note to any future historian who collects my sayings from the irclogs: Please feel free to fix my capitalization at the beginnings of sentences without editorial notations. | 17:04 | |
jnthn | Hm, gonna have to be really careful the quote language cache doesn't go caching on the :to... | ||
masak | in the future, everything is lower-case, anyway. | ||
TimToady hates things like [W]e are not amused. | |||
past historians can do whatever they like, however... | 17:05 | ||
dalek | ecza: 4c016f5 | larry++ | src/STD.pm6: allow fakemethods |
17:07 | |
TimToady | next thing you know, people are going to want 'my method' to declare fakemethods... | ||
but maybe only in one of masak's alternate universes... | 17:08 | ||
TimToady wonders if he's in one of those | |||
masak | depends what you mean by "you". | 17:09 | |
TimToady | pronouns is tricky, not to mention verbs | 17:10 | |
masak | ;) | 17:11 | |
sorear | o/ | 17:13 | |
masak | sorear! \o/ | ||
TimToady | o̸ | 17:14 | |
(which looks rather different in the log) | 17:15 | ||
sorear | meh, english is case insensitive | ||
sorear idly wonders if german channels capitalize more | |||
jnthn | o/ sorear | 17:16 | |
masak | TimToady: is that a light saber? | 17:17 | |
TimToady | well, gnome-term doesn't overlay it at all, so it looks like o/ on my terminal | 17:18 | |
masak | .u o̸ | ||
phenny | U+006F LATIN SMALL LETTER O (o) | ||
U+0338 COMBINING LONG SOLIDUS OVERLAY (◌̸) | |||
TimToady | in the log it shows up here as an o with a diagonal line totally within the o. | ||
but if I past to a text box in the browser, it has the overlay close to right, except that the solidus is a bit up and to the left of the middle of the o | 17:19 | ||
*paste | |||
xterm does it pretty close to right | 17:20 | ||
sorear | iterm2 also gets it pretty close to right | 17:21 | |
geekosaur | it's wrong in xchat, but that's more or less normal | 17:22 | |
flussence | that looks more correct here in urxvt than it does in chromium... | 17:38 | |
17:47
xinming_ joined
17:50
xinming left
17:52
lex_ joined,
kurahaupo joined
17:55
lex_ left
17:59
spanner_ joined
18:01
topo`_ joined,
xdbr_ joined,
pmichaud joined,
krunen_ joined
18:02
Lex__ joined,
grondilu_ joined
18:04
Lex__ is now known as Lex9
18:06
topo` left,
domidumont left,
grondilu left,
pmichaud_ left,
colomon left,
dbr left,
spanner left,
krunen left,
colomon joined
18:09
Lex9_ joined
18:11
Lex9 left,
Lex9_ is now known as Lex9
18:13
wk joined
18:14
domidumont joined
|
|||
dalek | kudo/nom: 7c0820a | jnthn++ | src/Perl6/Grammar.pm: Tweak whitespace parsing to be more STD-like. Not a huge change, but provides a place to hang heredoc parsing off. Also gets us the version control marker detection. |
18:23 | |
18:24
kurahaupo left
|
|||
masak | version control marker detection! \o/ | 18:30 | |
sorear | masak++ bloggage | 18:39 | |
masak | it made sense? nice. :) | 18:40 | |
nwc10 | masak: the macro definition has this: {{{$code}}}( {{{$argument}}} ); | 18:41 | |
but your expansion is this: (sub ($t) { say $t })("OH HAI"); | 18:42 | ||
why did the extra? set of () appear? | |||
flussence | std: sub ($t) { say $t }('arf') | 18:43 | |
p6eval | std 04216b1: OUTPUT«ok 00:00 45m» | ||
flussence | ...well if that's the case I dunno | ||
r: sub ($t) { say $t }('arf') | 18:44 | ||
p6eval | rakudo 170c90: OUTPUT«===SORRY!===Confusedat /tmp/K4oZTuuAdM:1» | ||
masak | nwc10: I tried it without the parens in Rakudo while writing the post, and it didn't work without the parens. | ||
nwc10 admits to being impatient and not reading everything carefully before asking.. | |||
flussence | n: sub ($t) { say $t }('arf') | ||
p6eval | niecza v22-16-g4c016f5: OUTPUT«arf» | ||
masak | nwc10: but the real answer is that the transformation is not textual, but on the AST level. so the parens are just there for clarity, they don't change the AST topology. | ||
masak submits rakudobug | |||
nwc10 | ah OK | ||
flussence | tbh, I really didn't expect that to work in niecza | ||
(nice that it does :) | 18:45 | ||
masak | well, since it parses in STD, it should mean something :) | ||
18:47
xinming joined
18:51
xinming_ left
|
|||
masak | woot, the blog post seems to have triggered another email from the scala macros guy! \o/ | 18:52 | |
r: macro test { my $a = "OH HAI"; quasi { $a } }; say test | 18:53 | ||
p6eval | rakudo 170c90: OUTPUT«OH HAI» | ||
sorear | masak: yay | 18:58 | |
masak | I think my reply to him may be interesting for others to read, too. I might gist it when I'm done. | 18:59 | |
r: for 1..10 -> $i { our sub foo { say $i } }; our &foo; foo | 19:07 | ||
p6eval | rakudo 170c90: OUTPUT«10» | ||
masak | r: for 1..10 -> $i { our sub foo { say $i }; last }; our &foo; foo | ||
p6eval | rakudo 170c90: OUTPUT«1» | ||
masak | r: for 1..10 -> $i { BEGIN { say $i } } | ||
p6eval | rakudo 170c90: OUTPUT«Mu()» | ||
masak | Mu! | ||
r: my $i; say $i | 19:08 | ||
p6eval | rakudo 170c90: OUTPUT«Any()» | ||
masak | so "Mu()" there means "really, really undefined"! :P | 19:09 | |
can anyone explain why I'm not getting "Any()"? | |||
oh! | |||
it's a loop parameter, right? | |||
r: my $i = 42; BEGIN { say $i } | |||
p6eval | rakudo 170c90: OUTPUT«Any()» | ||
masak | yep. | 19:10 | |
r: my $i = 42; BEGIN { say $i }; say $i | |||
p6eval | rakudo 170c90: OUTPUT«Any()42» | ||
19:12
fgomez left
19:13
domidumont left
|
|||
masak | r: my $x = 42; role R { method foo { $x } }; class C is R {}; say C.new.foo | 19:16 | |
p6eval | rakudo 7c0820: OUTPUT«42» | ||
masak | \o/ | ||
n: my $x = 42; role R { method foo { $x } }; class C is R {}; say C.new.foo | |||
p6eval | niecza v22-16-g4c016f5: OUTPUT«42» | ||
masak | rakudo++ niecza++ | ||
p: my $x = 42; role R { method foo { $x } }; class C is R {}; say C.new.foo | |||
p6eval | pugs: OUTPUT«42» | ||
masak | pugs++ | 19:17 | |
r: my $x = 42; macro foo($value) { quasi { say {{{$value}}} } }; foo $x | 19:24 | ||
p6eval | rakudo 7c0820: OUTPUT«42» | ||
19:29
havenn_ left,
fgomez joined
|
|||
dalek | p: d27844e | jnthn++ | src/QRegex/Cursor.nqp: Add a !cursor_pos, for explicitly setting pos. |
19:30 | |
19:30
raiph joined
|
|||
masak | r: sub foo { my $greeting = "OH HAI"; quasi { $greeting } }; macro bar { quasi { say {{{foo}}} } }; bar() | 19:31 | |
p6eval | rakudo 7c0820: OUTPUT«Mu()» | ||
masak | interesting. | ||
jnthn: bug? | |||
r: sub foo { my $greeting = "OH HAI"; quasi { say $greeting; $greeting } }; macro bar { quasi { say {{{foo}}} } }; bar() | |||
p6eval | rakudo 7c0820: OUTPUT«Mu()Mu()» | ||
masak | r: sub foo { my $greeting = "OH HAI"; -> { say $greeting } }; BEGIN { foo()() } | 19:32 | |
p6eval | rakudo 7c0820: OUTPUT«OH HAI» | ||
jnthn | masak: I think I'd expect that one to work. Not sure why it doesn't... | 19:35 | |
masak submits rakudobug | |||
jnthn | masak: Not sure where I suggest you look to track it down either... :S | ||
masak | jnthn: looks like the quasi in foo is getting the static lexpad. but why? | ||
jnthn | masak: Yeah, that's what I'm not sure about. | ||
masak: Maybe something to do with the way quasis get their fixups? | 19:36 | ||
masak | maybe. | ||
r: sub foo { my $greeting = "OH HAI"; quasi { say $greeting } }; BEGIN my $gast = foo; macro bar { $gast }; bar() | 19:37 | ||
p6eval | rakudo 7c0820: OUTPUT«OH HAI» | ||
masak | *that* works. | ||
so, essentially, it's not foo's fault. | |||
it's the fact that foo is called inside of {{{ }}} | |||
jnthn | That's odder still. | 19:38 | |
Though at least also more isolated... | |||
masak | yeah. | ||
19:47
xinming_ joined
19:50
xinming left
|
|||
masak | here's the reply email I just wrote to the Scala macros guy: gist.github.com/c97c37efa09d0d72ad9e | 19:50 | |
TimToady | why did you say class C is R instead of 'does'? | 19:53 | |
20:00
Friendofafriend joined
|
|||
Friendofafriend | so... whens perl 6 coming out? | 20:01 | |
ALSO where are some good tutorials for learning perl 5 | |||
? | |||
TimToady | coming out of what? | ||
Friendofafriend | Larry Wall's brain | ||
flussence | by "release", do you mean 10 years ago, or 4 years ago? | 20:02 | |
TimToady | Larry Wall's brain doesn't even know when Perl 6 will quit flowing outward... | ||
the flow seems to have slowed considerbly over the last couple years, and the implementations are starting to catch up | 20:03 | ||
Friendofafriend | gotcha | ||
TimToady | bbq & | 20:04 | |
Friendofafriend | well in that case.. do you know of any good perl 5 tutorials / books ? | ||
im trying to learn perl | |||
rking | Friendofafriend: I still advocate the Camel book. | ||
Friendofafriend | which one? | 20:05 | |
masak | the latest one :) | 20:06 | |
rking | Friendofafriend: www.amazon.com/Programming-Perl-Unm...camel+perl | ||
Friendofafriend | haha thanks for the link | ||
yeah Larry Wall just talked at my school, so im kinda motivated | |||
rking | Friendofafriend: What did he talk about? | ||
Friendofafriend | just how perl came to be. | 20:07 | |
and why it is the way it is | |||
it was a great talk | |||
he explained the linguistic origins of perl | |||
it was very cool | 20:08 | ||
masak | oh, Westmont college? | ||
Friendofafriend | indeed | ||
masak | we think Perl is cool, too. | 20:09 | |
Friendofafriend | haha | ||
how did you know about westmont? | |||
masak | Larry Wall is a friend of a friend... :P | ||
I agree that the Camel book is hard to beat in terms of learning material. | |||
it's sitting here on my shelf within arm's length. | 20:10 | ||
Friendofafriend | haha yeah, Im pretty good friends with his son, lewis | ||
masak | I know him as quietfanatic, but yes, I talk to him sometimes, too. | ||
rking | Friendofafriend: The `perldoc` information is actually excellent. | ||
masak | `perldoc` is excellent, but kinda difficult to bootstrap up from 0 with. | ||
IIRC `perldoc` is actually based on the Camel book somehow? | 20:11 | ||
Friendofafriend | yeah hes a great guy, I pair program with him quite a bit, and have learned so much | ||
rking | Friendofafriend: What kind of programming is he into? | ||
masak | Friendofafriend: this is kind of the "future department" of Perl, in case you're wondering. we've been inventing the future of Perl for the past 12 or so years. | 20:12 | |
Friendofafriend | just mostly school projects | ||
ie weather servers written in raw c | |||
blah | |||
masak | Friendofafriend: I've taken to discussing language design with him, which is also very interesting. | ||
Friendofafriend | yeah, hes started writing his own language | ||
20:12
havenn joined
|
|||
masak | yeah. me too. | 20:12 | |
Friendofafriend | check out his github profile | 20:13 | |
anyways thanks for everything guys, I gotta go. Best of luck | |||
20:13
Friendofafriend left
|
|||
masak | o/ | 20:13 | |
rking swoops in and waves at masak so he isn't left hanging. o | |||
raiph | "Metacircularity is not about self-interpretation at all. Rather, it's an engineering approach to re-using as much code as possible between different parts of a toolchain (including compiler, runtime and debugger)." (from www.inf.usi.ch/postdoc/kells/blog/2012/06/01/) Anyone care to agree/disagree/comment on this perspective and/or its applicability to Perl 6? | 20:14 | |
masak | raiph: we've definitely been seeing that aspect of metacircularity now and then, both in Niecza and Rakudo, I think. | 20:15 | |
though whether to elevate it to what metacircularity "is about", I don't know. | |||
jnthn | raiph: Well, in my meta-programming in Perl 6 talk, I define meta-circularity as extending the langauge using the language itself. | 20:16 | |
raiph: Which seems compatible with that point of view. | |||
masak | raiph: take val() as a recent example. it figures both internally (in the handling of <> qw-like lists and MAIN arguments) and in userspace. | ||
raiph | oh. gotta run. will backlog. thanks for your answers. | 20:17 | |
20:17
raiph left
|
|||
masak | "Metacircularity is awesome because it is metacircular!" | 20:28 | |
20:36
sizz_ joined
20:37
sizz left
|
|||
dalek | kudo/nom: 08436b7 | jnthn++ | src/Perl6/Grammar.pm: Apply stopper role after tweaks role. Same ordering as STD; turns out it matters for heredocs. |
20:44 | |
kudo/nom: f643fba | jnthn++ | src/Perl6/World.pm: Factor out compile-time nabbing of nibbles. Generalizes things a bit, to be useful in heredoc implementation. |
|||
kudo/nom: 7d32387 | jnthn++ | src/Perl6/ (2 files): Get heredoc parsing in place. Trimming of the parsed document not yet implemented, but seems to do about the right thing aside from that. |
|||
masak | "nabbing of nibbles" :) | 20:45 | |
jnthn: trimming? isn't it just a question of using the spec'd/built-in Str.indent method? | |||
r: say " foo;\n bar;\n baz".trim(*) | 20:46 | ||
p6eval | rakudo 7c0820: OUTPUT«Too many positional parameters passed; got 2 but expected 1 in method trim at src/gen/CORE.setting:4324 in block at /tmp/Il89zPC6uJ:1» | ||
masak | er. | ||
r: say " foo;\n bar;\n baz".indent(*) | |||
p6eval | rakudo 7c0820: OUTPUT«foo; bar; baz» | ||
20:47
xinming joined,
sorenso joined
|
|||
jnthn | masak: Yeah, but we should see if we can do it at compile time or not too, I think. | 20:47 | |
20:48
Gliner is now known as Rix
|
|||
masak | ah. | 20:49 | |
20:50
xinming_ left
|
|||
masak | 'night, #perl6 | 21:12 | |
awwaiid | gnight | ||
21:15
GlitchMr left
21:17
havenn left
21:18
havenn joined
21:20
havenn left
21:25
havenn joined
21:33
Lex9_ joined
21:36
Lex9 left,
Lex9_ is now known as Lex9,
Lex9 left
21:37
spider-mario left
21:42
spider-mario joined
|
|||
[Coke] yawns | 21:43 | ||
21:44
Mescale joined
21:47
SamuraiJack left,
xinming_ joined
21:49
ChoHag left
21:50
ChoHag joined,
xinming left
21:57
dorlamm joined
22:00
kaare_ left
22:17
PacoAir left
22:25
dorlamm left
|
|||
[Coke] | jnthn - latest nqp/parrot build and I can run partcl on it. | 22:27 | |
brrt++ jnthn++ | |||
dalek | rl6-roast-data: bf61ef6 | coke++ | / (4 files): today (automated commit) |
22:28 | |
rl6-roast-data: 09e4d92 | coke++ | / (2 files): today (automated commit) |
|||
jnthn | yay :) | ||
[Coke] | jnthn: (that roast data is old. fixing that up now.) | ||
jnthn | Yeah | 22:29 | |
shows | |||
"" , , , , , , | |||
for Rakudo :) | |||
Grr, that heredoc parsing thing I comitted is wonkier than I first realized... | |||
[Coke] | I didn't even look at it, I just pushed any pending commits. whoops. :) | ||
jnthn | Though doesn't break anything at least :) | ||
[Coke] | I'll just delete those. | ||
dalek | rl6-roast-data: a1856b6 | coke++ | perl6_pass_rates: Remove bad/stale data. |
22:30 | |
22:35
HarryS left
22:37
HarryS joined
|
|||
[Coke] | jnthn: I'm going to change the daily run to check everything out fresh to avoid the weird not-always updating bug that hit rakudo. | 22:37 | |
Will also change it so that all 3 tests run the same version of roast. (instead of a fresh copy per run.) | 22:38 | ||
er, per instance. | |||
22:43
havenn left,
havenn joined
22:46
bloonix left
22:48
havenn left
|
|||
[Coke] | would it be helpful to have the sha1 of the repo used for the testing? | 22:50 | |
22:50
cognominal left
|
|||
[Coke] | or is just the date close enough? | 22:50 | |
(I am putting roast's sha1, now that it's shared.) | |||
jnthn | [Coke]: It'd certainly make it easy to diagnose "didn't update the repo" issues | 22:51 | |
22:53
havenn joined
22:55
Mescale left
|
|||
[Coke] | I'm trying to get Pugs.hs building again. Getting this error: | 22:59 | |
* Missing (or bad) header file: perl5/p5embed.h | |||
is there a way I can just wipe out anything I've done with cabal? | 23:01 | ||
is rm ~/.cabal sufficient? | |||
(-rf) | |||
dalek | kudo/nom: 4bab771 | jnthn++ | tools/build/NQP_REVISION: Get NQP with !cursor_pos. |
23:02 | |
kudo/nom: 1585d5a | jnthn++ | src/Perl6/ (2 files): Fix heredoc parsing, and add indent handling. This gets us passing all the various heredoc tests in S02-literals, so seems fairly complete. |
|||
flussence | yay | ||
dalek | kudo/nom: 1dc622c | jnthn++ | docs/ROADMAP: ROADMAP update. |
||
ast: eacb839 | jnthn++ | S02-literals/quoting.t: Heredoc and other quoting unfudges. Also harden the heredoc tests for Windows. |
23:03 | ||
atures: 80d8df3 | jnthn++ | features.json: Rakudo has heredocs. |
23:04 | ||
23:04
wk left
|
|||
[Coke] | gist.github.com/4009237 - `last` of pugs configure failure. | 23:05 | |
it's complaining about libutil.h | |||
is that something we can get installed on feather? (Or am I just misconfigured to miss it?) | 23:06 | ||
23:07
Vlavv_ left
|
|||
[Coke] | aha. | 23:08 | |
found the header in /usr/include/bs, but see no way to get Pug.hs building with that piece of information. Any help greatly appreciated. | 23:10 | ||
dalek | kudo/nom: 68460ce | jnthn++ | docs/ChangeLog: Some more ChangeLog additions. |
||
[Coke] | er, *bsd | ||
23:21
fgomez left
23:27
sorenso left
23:32
MayDaniel left
23:36
fgomez joined
23:38
flightrecorder joined
23:39
havenn left
|
|||
jnthn | [Coke]: No idea how to help, but good luck! | 23:41 | |
'night, #perl6 | |||
23:47
adu joined,
xinming joined
23:50
xinming_ left
23:59
flightrecorder left
|