»ö« 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:00
stevan_ left
|
|||
timotimo_ | what is the second argument to stat for? "put a 0 here"? :P | 00:02 | |
except sometimes you put 7 | 00:03 | ||
ah, found the list of constants | 00:04 | ||
00:06
fgomez joined
|
|||
dalek | p: 6b97517 | (Timo Paulssen)++ | src/HLL/Compiler.pm: better message for nonexistent files on the commandline. |
00:39 | |
lee__ | timotimo_: would it make more sense to do the stat in the catch block? </peanutgallery> | 00:45 | |
timotimo_ | hm, can the stat throw? | 00:47 | |
lee__ | i'm not sure, i was just thinking you could avoid a stat in most cases, and only do it to get the more specific error | 00:49 | |
japhb_ | Why bother stat'ing at all? | ||
What does it tell you that a failed open does not? | 00:50 | ||
timotimo_ | well, it allows me to say "coldn't stat" ... i guess? | ||
japhb_ | timotimo_, but that's not friendly to the user -- they only want to know if the file could be opened. | 00:51 | |
Plus, they don't want to run a directory, right? | |||
timotimo_ | that sounds reasonable. i'll roll it back to what i had before | ||
00:52
Targen joined
|
|||
japhb_ | Just skip the first bit with the stat. The rest of the change seems sane to me. | 00:52 | |
timotimo_ | i guess i'll run some tests now, too :) | ||
dalek | p: 1e657f9 | (Timo Paulssen)++ | src/HLL/Compiler.pm: the stat was kind of superfluous |
||
00:57
anuby joined
01:03
araujo joined
01:10
japhb_ left
01:12
lustlife joined
01:22
hypolin joined
01:28
ggoebel_ left
01:48
rking joined
|
|||
timotimo_ | lee__: now i remember why i changed it like that. look at the bug report: rt.perl.org/rt3//Ticket/Display.html?id=112988 - it would be nice to have a "no such file" in there | 01:56 | |
Could not open does_not_exist.p6. Unable to open filehandle from path 'does_not_exist.p6' - this isn't much prettier either, but at least it doesn't show a lengthy stack trace | |||
02:00
rindolf joined
02:30
xinming joined
02:46
am0c joined
02:57
stevan_ joined
03:02
adu joined
03:03
Jimmy_ joined
03:08
orafu joined
03:13
Jimmy_ left
|
|||
dalek | rl6-roast-data: 3ae6521 | coke++ | / (4 files): today (automated commit) |
03:15 | |
03:48
Targen left
03:49
LlamaRider joined
03:52
stevan_ left
04:03
LlamaRider left
04:12
SamuraiJack joined
04:15
daniel-s joined
04:28
jaldhar joined
04:38
skids left
04:50
SmokeMachine joined,
preflex joined
04:54
ircleuser joined
04:55
Heather joined
|
|||
Heather | is there 'elif' ? | 04:55 | |
if elif else ? | 04:56 | ||
timotimo_ | it's called elsif | ||
Heather | oh... thanks | ||
timotimo_ | it already complains if you try "else if", maybe it should get to know "elif", too | ||
i'll do that tomorrow if nobody else does | |||
gnite! | |||
diakopter | o/ | 04:57 | |
Heather | timotimo_ gnite | 04:59 | |
what means "Missing block" ? | 05:00 | ||
diakopter | what's the line? | ||
Heather | when f { say 'f'; } | 05:01 | |
in given block | |||
I'm trying to match IO | |||
diakopter | what's f | ||
Heather | IO.f | ||
diakopter squints | |||
what's the given line? | 05:02 | ||
Heather | diakopter sec | 05:03 | |
diakopter | oh, did you try :f | ||
Heather | diakopter I'm trying to make something alike gist.github.com/Cynede/5140496 | ||
diakopter :f works ! thank you | 05:04 | ||
diakopter | hm, what about .IO.f | 05:05 | |
Heather | updated gist | ||
diakopter | oh ok | 05:06 | |
Heather | diakopter wait ... can I mach it alike .IO.f ? ) | ||
diakopter | I dunno | ||
Heather | how to check if there is no such file at all? | 05:07 | |
diakopter for now I think if that is not dire not file and not link that it's nothing ) | |||
diakopter | r: say "perl7".IO.e | ||
p6eval | rakudo 810412: OUTPUT«False» | ||
diakopter | r: say "perl6".IO.e | 05:08 | |
p6eval | rakudo 810412: OUTPUT«False» | ||
diakopter | oh.. | ||
erm | |||
diakopter is still guessing blindly | |||
r: say ".".IO.e | |||
p6eval | rakudo 810412: OUTPUT«True» | ||
diakopter | oh heh | ||
r: say ".".IO.d | |||
p6eval | rakudo 810412: OUTPUT«True» | ||
diakopter | r: say ".".IO.f | ||
p6eval | rakudo 810412: OUTPUT«False» | ||
diakopter | okay yeah; e | ||
Heather | diakopter can I write: 'when :f :l {' ? | 05:09 | |
so I need match both in one case, :f and :l | |||
seems like yes ) | 05:10 | ||
cool | |||
diakopter | put & between | ||
Heather | I need OR | ||
diakopter | | | ||
Heather | but it works just with space :S | ||
seems like... | |||
yes, tested | 05:11 | ||
when :f :l { works | |||
diakopter | r: given '.'.IO { when .e&.d { say 44 } } | ||
p6eval | rakudo 810412: OUTPUT«44» | ||
diakopter | r: given '.'.IO { when .f|.d { say 44 } } | ||
p6eval | rakudo 810412: OUTPUT«44» | ||
diakopter | huh. | 05:12 | |
Heather | 07 01r: given '.'.IO { when :f :d { say hi } }01 | ||
01.... | |||
p6eval hey | 05:13 | ||
diakopter | what? :) | ||
Heather | doesn't work | ||
I mean bot | |||
diakopter | your messages look blank to me | ||
diakopter checks the clogs | |||
oh! weird. | |||
Pleiades` | you put a space in before the r: | ||
Heather | 01r: given '.'.IO { when :f :d { say 44 } } | 05:14 | |
... | |||
diakopter | I think you pasted it; try retyping it | ||
Heather | 01r: say 'where are you' | ||
he ignores me :( | |||
TimToady | your r: is in very dim grey here | 05:15 | |
diakopter | ohhh maybe your irc client is coiloring | ||
coloring even | |||
TimToady | r: given '.'.IO { when :f :d { say 44 }} | ||
p6eval | rakudo 810412: ( no output ) | 05:16 | |
Heather | it is | ||
TimToady | :f :d doesn't actually work | ||
Heather | r: say 'test' | ||
p6eval | rakudo 810412: OUTPUT«test» | ||
TimToady | r: given '.'.IO { when :f | :d { say 44 }} | ||
p6eval | rakudo 810412: OUTPUT«44» | ||
Heather | yeah | ||
TimToady | it's applying the :d as a modifier on the :f, and probably ignoring it | ||
n: given '.'.IO { when :f :d { say 44 }} | |||
Heather | r: given '.'.IO { when :f :l { say 44 }} | ||
p6eval | niecza v24-33-gfc6d5fd: OUTPUT«===SORRY!===Multi colonpair syntax not yet understood at /tmp/7tETQCwxcz line 1:------> given '.'.IO { when :f :d ⏏{ say 44 }}Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1… | ||
rakudo 810412: ( no output ) | |||
diakopter | r: say :alone :in :the :world | 05:17 | |
p6eval | rakudo 810412: OUTPUT«» | ||
TimToady | named args there | ||
Heather | I see | ||
will use | then | |||
diakopter | r: say (:alone :in :the :world) | ||
p6eval | rakudo 810412: OUTPUT«"alone" => Bool::True» | ||
TimToady | I'm not sure named args should be applied to a pair... | 05:18 | |
diakopter | r: say {; :alone :in :the :world}() | ||
p6eval | rakudo 810412: OUTPUT«"alone" => Bool::True» | ||
TimToady | a colon pair where an infix is expected is applied as an adverb | 05:19 | |
to whatever operation is on the left | |||
but :alone isn't exactly an operation... | |||
diakopter | r: say {; .alone: in::the:world}() | 05:20 | |
p6eval | rakudo 810412: OUTPUT«Could not find symbol '&the' in method <anon> at src/gen/CORE.setting:10545 in at src/gen/Metamodel.pm:2493 in any find_method_fallback at src/gen/Metamodel.pm:2481 in any find_method at src/gen/Metamodel.pm:929 in at src/gen/BOOTSTRAP.pm:895 in any … | ||
diakopter | o_O | 05:21 | |
r: &_::_::_::_::_::_::_::_::_::_ | 05:23 | ||
p6eval | rakudo 810412: ( no output ) | ||
diakopter | r: &BOOGABOOGA::BOOGA | 05:25 | |
p6eval | rakudo 810412: ( no output ) | ||
diakopter happily sees Stefon appear on SNL | 05:27 | ||
Heather | how to return from main? | 05:33 | |
return; ? | |||
diakopter | exit 0 ? | ||
Heather | diakopter thanks | 05:35 | |
05:35
wk joined
05:36
adu left
|
|||
diakopter is glad some of my guesses have worked.. | 05:36 | ||
Heather | diakopter how to concat strings? :) | 05:39 | |
diakopter ~ ? | |||
diakopter | yes | ||
Heather | diakopter is there something alike sprint ? | 05:40 | |
diakopter like with %s %d ... | |||
diakopter | yep perl6advent.wordpress.com/2009/12/0...ormatting/ | ||
Heather | wow... | 05:41 | |
truly cool | 05:42 | ||
diakopter | :) | 05:44 | |
05:46
kaleem joined
05:54
wk left
05:57
ircleuser left
|
|||
Heather | I think I'm about to present my first perl program :D | 06:10 | |
Timbus | o boy, i love spaghetti | 06:11 | |
Heather | spaghetti ? ) | ||
Timbus | I'm just being mean :v | 06:12 | |
diakopter | Heather: what's your program | ||
Heather | adds line to file \o/ | ||
Timbus | an excellent use for perl | 06:13 | |
(was actually being serious that time) | |||
diakopter | -_- | 06:14 | |
sorry just sleepy | |||
Heather | \p/ | ||
diakopter | the tail of the p must be long hair | 06:15 | |
Heather | github.com/Cynede/ignore | ||
github.com/Cynede/ignore/blob/master/bin/ignore | |||
diakopter | you don't need the () after if | 06:16 | |
Heather | diakopter I think I don't :S | 06:17 | |
habit | |||
diakopter | what is .elems = 1 | ||
Heather | if found 1 element ) | 06:18 | |
diakopter | == | ||
Heather | overhead | ||
diakopter | ? | ||
Heather | basically I can check it with :e | ||
oh.... | |||
I need == | |||
true | |||
another habit -_-' | |||
Timbus | a habit from.. basic?? | 06:19 | |
Heather | ml | ||
Timbus | oh phew | ||
Heather | :P | ||
Timbus | howcome you indent your closing braces? thats one of the more different styles ive seen | 06:20 | |
diakopter | I think the :e is redundant: :e & (:f | :l) | 06:21 | |
Heather | Timbus I indent last bracket with code | ||
diakopter if file don't exist it goes in this pattern, I don't know why | |||
doesn't | |||
Timbus | yes I see. Is that a particular style from somewhere? | ||
diakopter | that sounds like a bug | 06:22 | |
Heather | Timbus I inline first bracket like K&R and indent last like GNU | ||
Timbus | oooh yeah. gnu style | ||
Heather | Timbus but not very GNU alike ... gnu was a bit more weird ) | 06:23 | |
en.wikipedia.org/wiki/GNU_coding_standards | 06:24 | ||
they have double indent | |||
I do single indent for code and for closing bracket | |||
it makes me feel like I have no brackets and use empty line in the block ending | 06:25 | ||
06:26
toebu left
|
|||
Heather | Timbus another example: github.com/Cynede/ctodo/blob/master/ctodo.c | 06:26 | |
Timbus | i see | 06:28 | |
well its readable | |||
and youre very consistent so yeah. its just different to follow | |||
Heather | thanks ) | 06:29 | |
it's because after some ml practice I think in ml and when I write void doit() { I think about let doit() = | 06:30 | ||
diakopter | sorear: did you feel the quake | 06:31 | |
sorear | no | 06:32 | |
sleep& | |||
Heather | diakopter quake? | ||
not | |||
diakopter | socal | 06:33 | |
Heather | diakopter to check if string contains something I need regexp? | 06:42 | |
diakopter | r: say "foo" ~~ /fo/ | 06:47 | |
p6eval | rakudo 810412: OUTPUT«「fo」» | ||
Heather | Quantifier quantifies nothing | 06:48 | |
diakopter I want match * | 06:49 | ||
diakopter \* ? | 06:50 | ||
diakopter | . means any char | ||
* means 0..Inf repetitions of the previous | |||
so .* means match anything or nothing | |||
Heather | wait ... how user will input * -_-' | 06:51 | |
fault | |||
diakopter | oh, you mean literal * | ||
'*' | |||
er | |||
Heather | yes | 06:52 | |
diakopter | r: say '*' ~~ /'*'/ | ||
p6eval | rakudo 810412: OUTPUT«「*」» | ||
Heather | seems like /\*/ also works | ||
r: say 'hi*' ~~ /\*/ | |||
p6eval | rakudo 810412: OUTPUT«「*」» | ||
Heather | r: say 'hi' ~~ /\*/ | 06:53 | |
p6eval | rakudo 810412: OUTPUT«#<failed match>» | ||
Heather | diakopter but it's non-inputable ) | 06:54 | |
diakopter only if user will put something alike "*" but user is lazy :( | |||
How can I creat code wrappers, alike usingFile { code code code } # File will be closed in the end | 06:59 | ||
07:00
daniel-s left
|
|||
Heather | wrapped code could be some lambda ) | 07:00 | |
wait.... TimToady is perl creator? O_O | 07:11 | ||
tadzik | yes | 07:13 | |
Heather | wow... | ||
tadzik | I remember myself suddenly discovering that :P | ||
Pleiades` | ^ same | 07:14 | |
Heather | on windows I have strawberry perl and I was checking if there is anything interesting and there was quote on main page (strawberryperl.com/) in picture and I was alike "who is this" then found github account then wikipedia article ) | 07:17 | |
tadzik does rakudo means something in Japanese? A butterfly maybe? | 07:19 | ||
Timbus | 'way of the camel' | 07:21 | |
Heather | Timbus do<- way raku<-camel ? | 07:22 | |
Timbus | well the 'do' part is correct, i dont actually know if raku means camel | 07:23 | |
tadzik | rakuda-do, or so | ||
07:25
labster joined
07:29
rindolf left
07:30
rindolf joined
|
|||
labster looks at backlog... | 07:32 | ||
rakuda-do means way of the camel. rakudo means paradise | |||
Heather | labster oh.. and what means butterfly? :) | 07:33 | |
labster | chou in japanese. mariposa in spanish. | ||
Heather | labster I mean in logo | ||
I have some obsession to sybolics ) | |||
labster | I think Camelia means happiness. | 07:34 | |
Heather | labster Camelia? | 07:36 | |
labster | I suppose her name would be Tsubaki in Japanese, but that's not so much of a pun. | ||
07:37
rindolf left
|
|||
Heather | labster the butterfly is Camelia? :S | 07:37 | |
labster | Camelia is the name of the Perl6 butterfly. | ||
07:38
rindolf joined
|
|||
labster | www.perl6.org/ <-- first sentence here | 07:38 | |
Heather | oh -_-' | ||
labster what is spokesbug | 07:39 | ||
labster | spokesperson ~~ s/person/bug/ | 07:40 | |
an insect who speaks for us. | |||
speaking of bugs: | 07:42 | ||
r: say 1.1.fmt('%.*f') | |||
p6eval | rakudo 810412: OUTPUT«Null PMC access in get_number() in method fmt at src/gen/CORE.setting:2293 in block at /tmp/YwbgSjFsYH:1» | ||
Heather | I see | ||
07:44
rindolf left
07:52
wk joined
07:57
yeltzooo joined
|
|||
Heather | does someone use Parde ... | 08:00 | |
08:02
FROGGS joined
|
|||
moritz | szabgab does | 08:09 | |
though he isn't on IRC much these days | 08:10 | ||
08:11
domidumont joined,
am0c left
|
|||
Heather | want to try it. it's gentoo ebuild suddenly disappeared from tree, maybe I should recover it. | 08:11 | |
08:33
domidumont left
08:34
domidumont joined
08:43
brrt joined
08:59
Jimmy_ joined
|
|||
Jimmy_ | .u ☭ | 08:59 | |
yoleaux | U+262D HAMMER AND SICKLE [So] (☭) | ||
08:59
Jimmy_ left
|
|||
tadzik | hrm | 09:00 | |
Heather | :D | 09:01 | |
hoelzro | what's the recommended way to ./configure ; make ; make test ; make install for a Perl6 module? | 09:07 | |
I'm guessing that's up in the air atm... | |||
09:07
grondilu joined
|
|||
hoelzro | is ufo still a thing? | 09:07 | |
hoelzro is looking into generating packages for Perl6 modules | |||
grondilu | Is there a german here? If so, what does "Haftungsbe" mean to you? | ||
Heather | hoelzro I like ufo | 09:08 | |
grondilu | (I don't see it on wiktionnary.org but this word seem to exist) | ||
09:08
daxim joined
|
|||
Heather | grondilu maybe it's alike ehrnviuerhbreiuvreiojgoehuhuj ? | 09:08 | |
FROGGS | grondilu: that word isn't complete | 09:10 | |
bonsaikitten | grondilu: it's part of a word | ||
tadzik | hoelzro: ufo && make test I guess | ||
FROGGS | grondilu: could be Haftungsbescheid, though I dont hope you mean that | 09:11 | |
tadzik | ufo is The Thing for module developers | ||
bonsaikitten | grondilu: "Haftungsbeschraenkt" or similar would mean "limited liability" or something equivalent | ||
hoelzro | ok, I didn't know if that was "standard" | ||
tadzik | yes, it is | 09:12 | |
well battle-proven too :) | |||
grondilu | bonsaikitten: thanks. I guess it is this. | ||
Heather | bonsaikitten it reminds me some fun picture set about Deutch... | ||
FROGGS | RATZKRATZNFATZ!! | 09:13 | |
bonsaikitten | Heather: ambulance, ambulance, KRANKENWAGEN ? | ||
hoelzro | ok, great! | ||
FROGGS | butterfly, SCHMETTERLING | ||
brrt | psyche? | ||
Heather | YES | ||
:D | |||
FROGGS | :#| | ||
Heather | found it www.trolino.com/image?id=15874 | ||
bonsaikitten | FROGGS: and the fun is that schmetter- means smashing- ... so a butterfly in german is a SMASHER | 09:14 | |
hulk butterfly! | |||
FROGGS | hehe | ||
Heather | it's big picture set -_-' | 09:15 | |
FROGGS | bonsaikitten: "Der deutsche Name „Schmetterling“, 1501 erstmals belegt, kommt vom slawischstämmigen ostmitteldeutschen Wort Schmetten (das heißt Schmand, Rahm)" [...] | ||
so butterfly | |||
bonsaikitten | FROGGS: ah, so it's a cream-fly instead of a butter-fly | ||
that's an interesting etymology | 09:16 | ||
FROGGS | right :o) | ||
bonsaikitten | I still prefer to parse it as "HULK SMASH" | ||
FROGGS | well, if you know the spongebob episode.... hulk fits well | 09:17 | |
09:21
labster left
|
|||
bonsaikitten | no, I don't | 09:23 | |
:\ | |||
09:26
fhelmberger joined
09:31
dakkar joined
09:46
brrt left
09:55
domidumont left
09:59
eiro joined
10:02
hypolin left
|
|||
hoelzro | hmm | 10:28 | |
in order to use ufo for module installation when building package, it's going to need DESTDIR support... | 10:29 | ||
tadzik | you can use panda :) | ||
DESTDIR=foo panda install . | |||
hoelzro | hmm | ||
that would be acceptable | |||
although bootstrapping that will be...interesting. | |||
tadzik | it'll just be tad slower | ||
hoelzro | I'm guessing panda can install itself? | 10:30 | |
tadzik | panda bootstraps itself using panda :) | ||
yes | |||
hoelzro | perfect =) | ||
so I'll have to tell my spec conversion script to skip panda | |||
and write spec files for panda by hand | |||
which isn't too bad | |||
tadzik | spec files? | 10:31 | |
hoelzro | PKGBUILD/RPM specs/DEB spec files | ||
for Linux distros | |||
tadzik | nice | ||
hoelzro | I want Rakudo * to be installable as a meta-package by 2013.04 | 10:32 | |
and it's something I can help with | |||
I feel like a lot of the effort in the Perl 6 community is focused on the compiler(s) | |||
which *is* important | |||
Heather | moar benchmarks please | 10:33 | |
tadzik | I was recently thinking about a marketing effort | ||
hoelzro | but I think that people will be more keen to slap the "production-ready" label on if there's some infrastructure behind it | ||
tadzik | like those who say "look, our language X is faster than C!" | ||
everyone knows it's total bullshit, but they get the attention they wanted | |||
Heather | tadzik it's not bullshit :) | ||
tadzik | there are things we can advertise. Built-in profiler, for example | ||
Heather: of course it is. C is a language, not an implementation :) | 10:34 | ||
languages aren't fast | |||
hoelzro | well, to take a note from chromatic: I think we need real-world examples that don't break between releases | ||
rosetta code is nice and all | |||
but a web application or something like that would probably go over better | |||
arnsholt | We're getting there | ||
Heather | tadzik so... but people don't mean exactly language when they say such ) | ||
arnsholt | Not quite in place just yet, but I think it's within reach soon | 10:35 | |
hoelzro | I was thinking of registering 6pan.org | ||
tadzik | yeah, but it's always "here, we came up with something in language X that coincidentally runs faster than other thing we wrote in C" | ||
arnsholt | I have a plan involving both Zavolaj and webapps | ||
hoelzro | arnsholt: oh? | ||
hoelzro listens up | |||
Heather is faster then C | 10:36 | ||
arnsholt | Do you know Mongrel 2? | ||
hoelzro | I know of it | ||
arnsholt | Well, it handles all the annoying HTTP bits and communicates with webapps over ZMQ | ||
hoelzro | right | ||
arnsholt | So my idea is to get a ZMQ wrapper going, and then plug that into Mongrel 2 to make some kind of webapp | 10:37 | |
hoelzro | hmm | 10:38 | |
grondilu just edited the Perl 6 entry in wikidata: www.wikidata.org/wiki/Q2052676 :) | |||
hoelzro | I think I would start with bailador + nginx proxy | ||
just to get something off the ground | |||
arnsholt | That'll work as well | 10:41 | |
hoelzro | having a module repository for Perl 6 (something a little better than modules.perl6.org) would be nice | 10:42 | |
and *actual* releases, rather than "build from Git" | |||
heck, for the time being, we could fork MetaCPAN and use it =) | |||
tadzik | PAUSE, more like | 10:43 | |
hoelzro | good point | ||
PAUSE ne MetaCPAN | |||
tadzik | I think it would be nice if you could just tag a release on git and the module repo will figure out the rest for yourself | ||
hoelzro | I'm 110% behind that | 10:44 | |
tadzik | I like things being easy :) | ||
hoelzro | I'm in favor of easy | ||
especially if that's part of the "killer features" of Perl 6 | |||
tadzik | hmm | ||
hoelzro | "wanna release your module? git tag -s" | ||
tadzik | I may want to look at that soonish | 10:45 | |
hoelzro | you just need to cope with other rev systems | ||
10:45
Heather left
|
|||
hoelzro | and people who tag version 0.01 as 0.01, v0.01, release/0.01, etc | 10:45 | |
tadzik | we'll deal with them when anyone uses them :P | ||
here we go, an easy way to enforce conventions :0 | |||
hoelzro | Git is the winner in the Perl 6 community, it seems | ||
arnsholt | I think there are several things not done yet about modules though | ||
tadzik | I'm said that the smoketesting thing never took off | 10:47 | |
sad * | |||
it's all in place, it's just cron not working | |||
feather.perl6.nl/~sergot/modules/ I mean this | 10:48 | ||
tadzik vanishes | |||
10:52
am0c joined
10:58
Heather joined
|
|||
Heather | tadzik panda installs all it's dependies? | 10:59 | |
it's bad for packaging. | 11:00 | ||
hoelzro | that's why you make sure all of the dependencies are installed when building the package =) | ||
but a --nodeps option would be nice | 11:01 | ||
Heather | hoelzro yes, it must not install them in package because deps are another packages controlled by PM | 11:02 | |
colomon | tadzik: I'm still planning on trying to set up smoke testing on my new Linux box. Just need to find the tuits... | ||
11:03
am0c left
|
|||
daxim | raw.github.com/bbkr/jsonrpc/master..._32x32.png | 11:03 | |
this means invoking a deity, right? | |||
grondilu | TimToady: I updated your entry wikidata: www.wikidata.org/wiki/Q92597 | 11:06 | |
:) | |||
gist: Larry Wall: creator of Perl, also known as TimToady. | 11:07 | ||
masak | ahoj, #perl6 | 11:08 | |
Heather | ahoj? | 11:12 | |
masak hi | |||
FROGGS | ++colomon # I'll do the same on my boxes then | 11:16 | |
11:17
anuby left,
am0c joined,
kaleem left
11:22
rindolf joined
|
|||
rindolf | Hi all. | 11:22 | |
Heather | masak why ufo default installation place and default PERL6LIB are different? | ||
colomon | because ufo is ancient.... | 11:30 | |
Heather | colomon panda makes the same -_-' | 11:31 | |
but... I'm not sure, it makes the same for itself | |||
when I run bootstrap | |||
maybe I use wrong prefix... | 11:32 | ||
11:53
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
Heather | default to ED? | 11:53 | |
hoelzro github.com/Cynede/ufo/commit/1a0fd...cc0fea0425 see if I made something wrong | 11:57 | ||
hoelzro | what's ED? | 11:58 | |
moritz | why do we need both $DESTDIR and $PREFIX? | ||
why not just set $PREFIX to the concatenation of both values? | 11:59 | ||
hoelzro | because DESTDIR is needed by package managers | ||
you could | |||
but | |||
moritz | or simply change PREFIX to DESTDIR? | ||
Heather | failed in ED ) | ||
and in lines 60+ | |||
hoelzro | then you need to figure out from outside of ufo/Makefile what PREFIX is supposed to be | ||
I *should* just be able to say make install DESTDIR=$pkgdir or whatever and have it "just work" | 12:01 | ||
I shouldn't need to know where ufo thinks modules should be installed under / | |||
Heather: you missed a \ | |||
Heather | hoelzro github.com/Cynede/ufo/commit/867a5...568f50b883 | 12:02 | |
hoelzro | check your changed lines for missing \ | ||
Heather | I think empty line is fine | ||
for default | |||
hoelzro | empty is fine | ||
in fact, you don't need to "declare" DESTDIR, iirc | 12:03 | ||
Heather: I see from your GH that you also have some Gentoo packages for perl6 =) | 12:04 | ||
I might need to enlist you for Gentoo testing when I get these Rakudo * packages off the ground | |||
Heather | hoelzro just for myself, currently | ||
hoelzro bonsaikitten is gentoo perl6 maintainer | |||
hoelzro | that's totally fine! | ||
Heather | hoelzro but I will do more ) | ||
masak: github.com/masak/ufo/pull/5 | 12:05 | ||
hoelzro | my first goal is Arch packages, as I'm on Arch | ||
but I'm hoping to do RPM and DEB | |||
and EBUILDs if I find the time | |||
and hopefully others will help with other packaging =) | |||
Heather | hoelzro contact me if you need help with ebuilds ) | ||
hoelzro and let use one github repo | |||
for them | |||
hoelzro | well, the ebuilds will be generated via a script under tools/build in rakudo/star | 12:06 | |
I haven't pushed that yet | 12:07 | ||
but I have Arch package files being generated successfully | |||
Heather | hoelzro good | ||
I will take a look after push | |||
hoelzro sorry but what is enlist for Gentoo testing? | 12:12 | ||
hoelzro | Heather: oh, I just mean that I don't have a Gentoo system, and when I write the script to generate ebuilds, I need people to test them =) | 12:13 | |
Heather | hoelzro alright, I'm in | ||
hoelzro | \o/ | ||
(if anyone is willing to help with RedHat/Debian distros, that would also be nice!) | 12:14 | ||
also, I think we should have a build server somewhere | |||
so I can point my machine to packages.perl6.org/archlinux/perl6.db and it will "just work" | |||
Heather | teamcity? | ||
hoelzro | I'm not sure what to do just yet | 12:15 | |
but having nqp, rakudo, and rakudo-star packages generated for each release would be *great* | 12:16 | ||
my current rakudo * package is a monolithic one, and I have to manually package it every month | |||
Heather | hoelzro about DESTDIR declaration I prefer to keep it because some checkers may feel bad w/o it | 12:19 | |
hoelzro | ok | 12:20 | |
that's fine | |||
Heather | and it's better to use make DESTDIR= ... instead if DESTDIR = .. make | ||
I think | |||
hoelzro | well, those are different things, iirc | ||
make DESTDIR=... is what you're supposed to do | 12:21 | ||
12:28
snearch joined
12:29
snearch left
12:40
rindolf joined
12:42
kaleem joined
12:44
census joined
|
|||
hoelzro | \o/ | 12:45 | |
hoelzro finds panda already supports --nodeps | |||
Heather | hoelzro oh... | 12:46 | |
hoelzro | crap | 12:48 | |
panda has its own deps...=/ | |||
how do I install those?! | 12:49 | ||
Heather | lol | ||
hoelzro | unless... | ||
no, that won't work. | |||
masak | Heather: thank you for your pull request. teaching right now, but will try to look at it later. | 12:50 | |
Heather | hoelzro we need package everything in panda deps without panda usage ) | ||
masak | Heather: please remind me if I forget. I get too many pull requests. | ||
hoelzro | yeah | ||
that's tricksy | |||
Heather | masak cool :) | ||
moritz | hoelzro: since when does panda have its own deps? | 12:54 | |
erm, never mind | 12:55 | ||
I confused panda and ufo | |||
hoelzro: panda has a bootstrapping mechanism | |||
Heather | yes and it installs all the installed libs with file collision | 12:56 | |
ok, time to go for me ) see you | |||
hoelzro | moritz: I saw, but I want to make OS packages for panda and Perl 6 modules | 12:57 | |
moritz | hoelzro: and is there a reason not to use the bootstrapping mechanism for that? | ||
hoelzro | so when panda installs itself, does it install its own copy of the deps? | ||
moritz | no | 12:58 | |
hoelzro | ah | ||
so how does it work once installed? | |||
moritz | it just installs the deps | ||
hoelzro | oh, I see | ||
got it | |||
hmm | |||
moritz | erm, I might have misunderstood the question | ||
it installs a copy of the deps, but not a separate copy of the deps | |||
hoelzro | right | ||
moritz | so it records the deps as being installed | 12:59 | |
hoelzro | so I want to create OS packages for Perl 6 modules | ||
I want to use panda for the build/install process | |||
I also don't want panda to bundle the dependencies in its package | |||
(they belong on their own) | |||
but | |||
I can have the packaging process for panda create packages for its deps as well | 13:00 | ||
arnsholt | Does NQP still potentially have problems to build with --gen-parrot when there's a system Parrot as well? | ||
13:00
domidumont joined
|
|||
hoelzro | so I *think* I can make it work! | 13:00 | |
PerlJam | arnsholt: See irclog.perlgeek.de/parrot/2013-02-19#i_6474292 | 13:06 | |
arnsholt: dunno if that's "good enough" of an answer. | 13:07 | ||
13:09
bluescreen10 joined
13:14
stevan_ joined
|
|||
raiph | what's a colorcircumfix? | 13:23 | |
(from GlitchMr's latest Perl 6 changes blog post) | 13:24 | ||
(glitchmr.github.com/) | 13:25 | ||
13:25
kivutar joined
|
|||
raiph | ah. coloncircumfix | 13:26 | |
13:31
kresike joined
|
|||
kresike | hello all you happy and/or unhappy perl6 people | 13:31 | |
PerlJam | kresike: there are no unhappy perl6 people :) | 13:32 | |
kresike | PerlJam, unfortunately I just ran into one a few days ago | 13:33 | |
he/she was really upset by not being greeted :) | 13:34 | ||
tadzik | ah, Heather's gone | 13:39 | |
hoelzro: there is --nodeps :) | 13:40 | ||
hoelzro | I just saw =) | ||
tadzik | oh, ok :) | ||
hoelzro | hmm | 13:41 | |
panda isn't shy about using the network =/ | |||
even when it doesn't need to | |||
tadzik | hm, what do you mean? | ||
bootstrap should be offline | 13:42 | ||
hoelzro | well, if I'm installing ./ext/File__Tools | ||
it still wants the projects file | |||
tadzik | if it says "fetching", it means copying files from one directory to another | ||
it does? Shit | |||
hoelzro | mhmm | ||
tadzik | that shouldn't happen | ||
hoelzro | it's not terrible | ||
tadzik | itis | ||
hoelzro | well, it doesn't stop me from making packages =) | 13:44 | |
tadzik | heh, ok :) | 13:45 | |
hoelzro: wow, it really shouldn't happen :( | 13:46 | ||
it creates the projects.json before it even runs itself | |||
well, bootstrap creates, before bootstrap runs panda | |||
and it does work alright if it even installs File-Tools from exr | |||
*ext | |||
wth | 13:47 | ||
hoelzro: okay, cannot replicate that here | 13:49 | ||
13:50
araujo joined
|
|||
tadzik | hoelzro: trying gist.github.com/tadzik/5143006 and bootstrap.pl. If it does download stuff for you, can you show me the output? | 13:50 | |
hoelzro | tadzik: I'm not using bootstrap.pl atm | ||
I was seeing if ./bin/panda install ./ext/File__Tools will work | 13:51 | ||
tadzik | ah | ||
if you're using an unsupported way, then it means that the supported way is not good enough | 13:52 | ||
hoelzro | well | ||
tadzik | please tell me what you need | ||
hoelzro | I'm trying to build OS packages for the modules included in Rakudo * | ||
tadzik | okay | ||
hoelzro | I'd like to use panda for the build/install process when building a package | ||
which means I need a panda package | 13:53 | ||
...which itself depends on other modules | |||
tadzik | ah | ||
hoelzro | so I was hoping to use panda to create packages for the deps | ||
tadzik | so you need a self-contained panda? | ||
offline? | |||
hoelzro | and then create a panda package | ||
that would help, yes | |||
tadzik | I can do that | ||
hoelzro | \o/ | ||
tadzik | gimme 10 minutes | ||
hoelzro | that would be excellent | ||
I think OS packaging will move the production ready clock forward a good deal | 13:54 | ||
tadzik | actually, it'd me just a modified bootstrap.pl | ||
you're absolutely right | |||
now if you look at bootstrap.pl, it's mostly about shell "perl6 bin/panda install File::Tools JSON::Tiny Test::Mock {cwd}"; | |||
hoelzro | (can we make productionreadyclock.perl6.org?) | ||
ok, cool | 13:55 | ||
tadzik | so you can just change that to whatever you want | ||
however! | |||
it'll still create its state file, src directory and all this crap | |||
so you'll need to clean that up anyway :/ | |||
hoelzro | ah =/ | ||
tadzik | we need pandaminus | ||
hoelzro | haha | ||
whatever works for creating packages | |||
tadzik | I like panda less and less. I lost control of this code | 13:56 | |
I have trouble maintaining it already | |||
and it'll get worse, because it's not really complete | |||
hoelzro | hmm | 13:57 | |
13:58
mavcunha joined,
FROGGS joined
|
|||
colomon | hmm indeed | 14:00 | |
hoelzro | well, whatever works for now | ||
I'm not writing the package files by hand, so changing it for future releases will be fine | |||
tadzik | I can write you something that'll generate them itself | 14:02 | |
I know Arch packaging system, I think | |||
I used to maintain this and that in AUR | |||
hoelzro | well, I've got the bulk of it done | ||
just build() { ... } and package() { ... } | |||
need doing | |||
and I was thinking of using ufo or panda for it | |||
tadzik | I wouldn't mind if panda (or whatever replaces it) would be pluggable enough to provide a simple tool for tasks like this | 14:03 | |
14:03
skids joined
|
|||
hoelzro | that would be great, honestly | 14:03 | |
tadzik | hmm | ||
hoelzro | pandapp --generate-pkg=arch | ||
tadzik | when I was turning neutro into panda it didn't take that long | 14:04 | |
maybe I got even more efficient in rewriting module installers over time | |||
hoelzro | heh | ||
tadzik | besides, I wanted to try how functional-style programming will work for this | ||
I think too much about oop, it's unhealthy | |||
14:09
FROGGS left
14:10
PacoAir joined
14:11
erkan joined,
erkan left,
erkan joined
14:14
wk joined
14:17
PacoAir left,
PacoAir joined
|
|||
colomon | oop-- | 14:18 | |
14:21
kaleem left
14:22
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
masak | I like OOP, but I think the unhealthy bits are mostly related to inheritance hierarchies. | 14:26 | |
14:26
davidalso joined
|
|||
colomon | OOP is very useful where it is useful, but I think overuse of it promotes insanity. | 14:26 | |
14:27
FROGGS joined
|
|||
davidalso | promotes insanity? occult oriented programming? | 14:27 | |
colomon adds ^ and $ to his top-level STEP rule to avoid parse issues.... | 14:29 | ||
14:29
kaare__ joined
|
|||
colomon | it may be that I am not really anti-OOP, but instead very anti-Design Patterns | 14:31 | |
14:32
xilo joined
|
|||
moritz | it's mostly a problem when people use *only* OOP | 14:32 | |
geekosaur | in the haskell world, it's often said that a design pattern indicates a language shortcoming | ||
colomon | moritz: right | ||
moritz | there are cases where a function is the best API | ||
geekosaur: I believe that's very true | 14:33 | ||
colomon | geekosaur: right on | ||
masak | there's much to be said for a healthy mix of OOP and FP. | ||
tadzik | geekosaur: indeed it is | ||
masak | really, a function is in many ways like a really small interface. | ||
tadzik | 90% of design patterns for C++ I've seen is just the lack of first-class functions | ||
masak | also, functions are units of abstraction and units of encapsulation. | ||
colomon | "bless used at line 10. Did you mean '&elems'?" | 14:34 | |
FROGGS | I need help ó.ò # <---- puppy eyes | ||
moritz | colomon: :( | 14:35 | |
FROGGS | It's about github.com/rakudo/rakudo/commit/d2...44df97707a | ||
colomon | moritz: forgot the self. before bless. but not a helpful message! | ||
FROGGS | the current code uses eval to create a regex containing regex rules from a variable like "a+b" | ||
moritz | colomon: aye, it shouldn't suggest that when the difference between 'bless' and 'elems' is so big | 14:36 | |
[Coke] | wilwheaton.tumblr.com/post/45121088...ia-lab-ito - this seems like a good crowd for this link. | ||
FROGGS | without the eval it would call INTERPOLATE, but which will be an endless loop (since I'm creating that regex within INTERPOLATE) | ||
is there a way to create an anon regex like: my $rx := anon regex { ^$arg } | 14:37 | ||
colomon | btw, gist.github.com/colomon/5143394 is a great example of how p6 is awesome -- and the code can probably still be significantly improved / shortened. | ||
moritz | FROGGS: my $rx = regex { <$arg> } | 14:38 | |
FROGGS: but I guess that doesn't help you | |||
because you're implementing <$arg> | |||
FROGGS | moritz: right, doesnt work | ||
nqp: my $arg := "a+b"; my $rx := /^<$arg>/; say("aaaaab" ~~ $rx) | 14:39 | ||
p6eval | nqp: OUTPUT«aaaaab» | ||
FROGGS | would be nice if I could tell it to do that in nqp-land only | ||
and call !INTERPOLATE instead of INTERPOLATE | |||
14:39
wk left
|
|||
FROGGS | I mean, pmichaud is right, an eval is not the best idea | 14:41 | |
[Coke] | hurm. not that you're soliciting, but should that -> $keyword be .kv -> $key, $value ? | ||
colomon | how does one declare an anonymous class? class { whatever } ? | 14:44 | |
FROGGS | r: my $thing = anon class { } | 14:45 | |
p6eval | rakudo 810412: ( no output ) | ||
colomon | never mind, did it. | ||
moritz | class { } and anon class { } are the same thing | 14:47 | |
r: my $x = anon class Foo { }; say $x.^name | |||
p6eval | rakudo 810412: OUTPUT«Foo» | ||
moritz | r: my $x = anon class Foo { }; say $x.^name; say Foo # not in the symbol table | 14:48 | |
p6eval | rakudo 810412: OUTPUT«===SORRY!===Undeclared name: Foo used at line 1» | ||
colomon | how do you capture the key and value of a Pair in a subsig? | ||
colomon really needs to learn that syntax | 14:49 | ||
[Coke]: if you were talking to me, you can't do .kv after .sort | |||
FROGGS | moritz: maybe I should create an NQPRegexMethod directly | 14:55 | |
[Coke] | colomon: I was, ok. | 14:57 | |
colomon admittedly learned that by trying it after [Coke] suggested it. ;) | 14:58 | ||
colomon updated the gist to use an anonymous class and Pair unpacking: gist.github.com/colomon/5143394 | 14:59 | ||
BTW, this script is for $work. :) | |||
[Coke] | r: my Pair $a = <a b>; say $a.kv.join(": "); | ||
p6eval | rakudo 810412: OUTPUT«Type check failed in assignment to '$a'; expected 'Pair' but got 'Parcel' in block at /tmp/Cr0Q5R4Grk:1» | ||
14:59
cognominal joined
|
|||
[Coke] | r: my Pair $a = 1 => 2; say $a.kv.join(": "); | 14:59 | |
p6eval | rakudo 810412: OUTPUT«1: 2» | ||
15:01
sizz_ joined
15:03
xilo left
15:04
happydude joined,
cognominal left
15:05
happydude left
15:06
xilo joined
|
|||
kresike | bye folks | 15:08 | |
15:08
kresike left
15:16
xilo left
|
|||
colomon just realized his current anti-OOP feelings may come from $working with STEP at the moment, surely the most ridiculously over OOPed CAD file format ever. | 15:19 | ||
15:22
am0c joined
15:23
xilo joined
|
|||
arnsholt | PerlJam: Thanks for the reply! I think that's the answer I wanted | 15:24 | |
15:25
mls left
|
|||
timotimo_ added 'elif' parsing to the list of things that throw X::Syntax::Malformed::Elsif | 15:25 | ||
15:28
Guest6468 joined,
Guest6468 left
15:31
asarch joined
|
|||
asarch | I've downloaded Rakudo, perl Configure.pl, make and make install. However I cannot find perl6 in my system. The only place I find "perl6" is in the rakudo/bin dir. Is this correct? | 15:32 | |
timotimo_ | that's correct, yes | 15:34 | |
at least that's the default | 15:35 | ||
asarch | Oh | ||
FROGGS | asarch: after make install you have everything within rakudo/install/... | ||
asarch | I thought "sudo make install" would install perl6 in my system | ||
Then I need to change my $PATH envdir | 15:36 | ||
FROGGS | no, it doesn't do that | ||
right | |||
15:36
am0c left
|
|||
timotimo_ | no, "sudo" will only run it with root privilege and "make install" can do whatever it wants, just depends on the Makefile | 15:36 | |
[Coke] | and rakudo efaults to local ./install/ dir | ||
timotimo_ | for what it's worth, "sudo make install" could delete all your files or create an off-site backup on your amazon glacier or order ten pizzas to your home | 15:37 | |
asarch | lol :-D | 15:38 | |
Ok, ok. Thank you guys | |||
Thank you very much :-) | |||
15:38
stevan_ left
|
|||
timotimo_ | i think i may be hungry | 15:41 | |
15:42
FROGGS left
|
|||
davidalso | r: say <good better best>.pick(1); | 15:46 | |
p6eval | rakudo 810412: OUTPUT«better» | ||
davidalso | pretty good. could have done better. | ||
timotimo_ | it *did* do "better". | ||
davidalso | yes, but nevertheless, it could have done *better* | 15:47 | |
timotimo_ | you mean it could have done best? | ||
davidalso | I feel like it did its best, but the result wasn't good | 15:48 | |
15:48
isomorphisms joined
|
|||
timotimo_ | hm | 15:48 | |
davidalso | r: eval 'better'; | 15:49 | |
p6eval | rakudo 810412: OUTPUT«===SORRY!===Undeclared routine: better used at line 1» | ||
davidalso | Oh, I guess I was wrong. It can't do better. | 15:50 | |
timotimo_ | oh my | 15:51 | |
15:54
risou_ joined,
krunen joined,
szbalint left,
djanatyn joined,
szbalint_ joined,
moritz_ joined,
p5eval joined,
Khisanth joined,
davidalso left
15:55
nyuszika7h joined,
sizz joined
15:56
sizz_ left,
census left
15:58
rindolf left
16:02
FROGGS joined
|
|||
timotimo_ | i wonder why i can't <.typed_panic: "foo", bar => "baz">, but i can { $/.CURSOR.typed_panic("foo", bar => baz) }? | 16:03 | |
16:06
census joined
|
|||
moritz_ | because there's no support (yet) for named arguments in subrule calls | 16:07 | |
timotimo_ | OK | ||
TimToady | n: say 'foo' ~~ /<alpha: :ignoreme>/ | 16:08 | |
p6eval | niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: Excess arguments to Cursor.alpha, unused named ignoreme at /home/p6eval/niecza/lib/CORE.setting line 0 (Cursor.alpha @ 1)  at /tmp/LRV81myOGi line 1 (ANON @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 2968 (Regex.ACCEPTS @ 1… | ||
TimToady | apparently not niecza either | 16:09 | |
moritz_ | n: class A { method m() { } }; A.m(:foo) | ||
p6eval | niecza v24-33-gfc6d5fd: OUTPUT«Unhandled exception: Excess arguments to A.m, unused named foo at /tmp/PAp17bVfqJ line 0 (A.m @ 1)  at /tmp/PAp17bVfqJ line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 4285 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line… | ||
moritz_ | ah, niecza doesn't implement the 'interface consistency' thingy | ||
TimToady | I guess not | 16:10 | |
TimToady is still wondering if there's a better way to handle that | |||
16:10
jay_ joined
16:12
moritz_ is now known as moritz
|
|||
diakopter nods hi | 16:16 | ||
jay_ | hi there. if i understand correctly <ident> defines C-like identifiers, not perl6 identifiers. am i right? | 16:18 | |
16:19
domidumont left
|
|||
moritz | well, if you include Unicode in "C-like", then yes | 16:19 | |
so rather "Java-like" | |||
jay_ | thanks. | ||
16:29
jay_ left
16:35
rindolf joined
16:38
domidumont joined
16:41
cognominal joined
16:45
pmurias joined
|
|||
TimToady | and as it happens, STD effectively defines 'identifier' as <ident>+ % <[ ' \- ]> | 16:47 | |
16:48
stevan_ joined
|
|||
census | Hi, I'm sorry this is not directly perl6 related, but I hope it is ok since there does not seem to be big conversation at the moment. Is anybody very familiar with google plus? | 16:54 | |
16:55
spider-mario joined,
domidumont left,
domidumont joined
16:57
SunilJoshi joined
|
|||
jnthn | evening, #perl6 | 16:59 | |
17:02
wk joined
|
|||
[Coke] hateses DST. | 17:02 | ||
17:04
cognominal left
17:05
gdey joined
17:07
jerome joined
17:09
gdey left
17:10
LlamaRider joined
|
|||
spider-mario | so do I. | 17:12 | |
17:12
mtk joined
17:14
cognominal joined
|
|||
jnthn | Oh, and it comes earlier in the US now? | 17:15 | |
jnthn thinks he remember reading something on that | 17:16 | ||
Think it's still a couple of weeks off here... | |||
colomon | yes, it comes earlier in the US now. | 17:19 | |
[Coke] | IT'S ALREADY UPON US, DEVOURING OUR SOULS | 17:20 | |
[Coke] just signed a petition at whitehouse.gov to pick one or the other and stick with it. | |||
diakopter signed a petition there for monkeys to generate all possible petitions | 17:22 | ||
timotimo_ | i'm currently spectesting github.com/rakudo/rakudo/pull/114 | ||
[Coke] | seems crazy to me that we're able to parse 'else if' but then yell at people about it. | 17:23 | |
diakopter | .oO( it should fix the code for you.. ) |
17:24 | |
17:24
SunilJoshi left
|
|||
[Coke] | or make it legal syntax. | 17:24 | |
17:24
SunilJoshi joined
|
|||
japhb | diakopter, that way lies madness. Sometimes very awesome madness, but madness all the same. | 17:24 | |
geekosaur | seems to me the issue with else if is that, unles syou recognize it up front, the errors it engenders happen somewhere after the end of the if ... else if ... block | 17:25 | |
17:25
cognominal left
|
|||
TimToady | r: given \(42, :foo<x>) { when * -> $pos, :$foo { say $pos } } | 17:25 | |
p6eval | rakudo 810412: OUTPUT«Not enough positional parameters passed; got 0 but expected 1 in block at /tmp/O_Xo6sfvkg:1 in block at /tmp/O_Xo6sfvkg:1» | ||
geekosaur | (or replace block there with "chunk" or "expression" or whatever)_ | ||
TimToady | n: given \(42, :foo<x>) { when * -> $pos, :$foo { say $pos } } | ||
p6eval | niecza v24-33-gfc6d5fd: OUTPUT«Potential difficulties: $foo is declared but not used at /tmp/Au24O2Tn1u line 1:------> given \(42, :foo<x>) { when * -> $pos, :⏏$foo { say $pos } }Unhandled exception: No value for parameter '$pos' in 'ANON' at /tmp/Au24O2Tn1u li… | ||
jnthn | TimToady: Is that the "try binding to the block" thing? | ||
TimToady | yes, not_gerd was asking about that on Sunday | 17:26 | |
or maybe Monday there... | |||
jnthn | Is it syntactic? | ||
TimToady | irclog.perlgeek.de/perl6/2013-03-10#i_6572439 | 17:27 | |
jnthn | I guess so... | ||
jnthn wonders how to implement it... | |||
TimToady | doesn't have to be, /methinks | ||
timotimo_ | r: if False { 10 } else if { 99 } | ||
p6eval | rakudo 810412: OUTPUT«===SORRY!===Please use 'elsif'at /tmp/48_UEYAghg:1------> if False { 10 } else if ⏏{ 99 }Confusedat /tmp/48_UEYAghg:1------> if False { 10 } else if ⏏{ 99 } expecting any of: postfix … | ||
jnthn | What would it look like in a non-syntactic case? | ||
timotimo_ | ah, it already compiled that | ||
r: if False { 10 } elif { 99 } | |||
p6eval | rakudo 810412: OUTPUT«===SORRY!===Confusedat /tmp/dZrGmQun18:1------> if False { 10 } ⏏elif { 99 } expecting any of: postfix statement end statement modifier statement modifier loop horizontal whitespace… | ||
timotimo_ | so "confused" isn't very helpful i think | 17:28 | |
TimToady | well, it wouldn't be syntactic if we allow any when to take a pointy that just does nothing if it doesn't bind | ||
but maybe we don't want to do that | 17:29 | ||
so maybe it is syntactic | |||
jnthn | TimToady: Does when $a -> ... { } mean anything, for example? | ||
TimToady wanders off to get more obviously needed coffee | |||
well, generally you don't put a $a in a smartmatch in any case | |||
timotimo_ | okay, the spectests go through, except for the tests that have been failing without my modifications. feel like merging? | 17:30 | |
jnthn | Yeah, I'm just trying to feel out the expectations so I can try to implement it right ;) | ||
TimToady | s/right/according to expectations/ :) | ||
17:30
cognominal joined
|
|||
jnthn | ;) | 17:30 | |
Expectations vary :) | 17:31 | ||
TimToady | if we want * -> to be a degenerate case (which feels rightish to me, at least today), then failure to bind the block has to be a no-op generally | ||
but I will try to think up arguments for doing it otherwise :) | 17:32 | ||
jnthn | Well, part of it is how I catch the bind failure in a sane way | 17:33 | |
I guess if I make bind failures a typed exception... :) | 17:34 | ||
TimToady | I suppose the main argument for the other side is that people might expect a failure to bind to complain rather than do nothing | ||
jnthn | Well, I kinda thought the use of the construct was so you could try binding in a range of ways? | ||
Almost like a sequential multi-dispatch, or kinda like tree matching if you go unpacking... | 17:35 | ||
TimToady | yes, but should the * be required for that? | ||
or should we just say that any binding can veto the case? | |||
and does that have performance ramifications? | |||
of course, we can distinguish the case syntactically by recognizing the -> rather than the * | 17:36 | ||
diakopter | ..someday maybe | ||
jnthn | The * "feels funny" for this | ||
I guess the question is, if you write | |||
when 'foo' -> $a { } | 17:37 | ||
What does that one really mean? | |||
The thing is that what we're kinda doing with * is using the * to say "no, really I mean try binding that block" | |||
TimToady | it just means does it stringify to 'foo' | ||
jnthn | Yes, I mean about the -> $a { } bit | ||
TimToady | I can imagine: when ThisType -> $a { } | 17:38 | |
jnthn | We support if cond -> $a { } | ||
TimToady | this is much the same | ||
jnthn | What should the argument be? | ||
The topic? | |||
I'm vaguely pondering (maybe this sucks) that if we force peple to write the sig in parens we can stop it being a special case at all. | |||
when * -> (:$foo, :$bar) { } | 17:39 | ||
oh wait | |||
That doesn't make the failure to bind just skip it | |||
Yeah, scratch that. | |||
TimToady | or you can just Capturize $_ if there's a ->, in addition to trapping non-binding | ||
jnthn | Hm, so you could do like | 17:40 | |
TimToady | presumably one could find a way of Capturizing it only once for multiple tries | ||
jnthn | when Pair -> :$kday, :$value { } | ||
*key | |||
Yeah, we could stop that we need to capturize it one time I suspect. | 17:41 | ||
Just do it before the first when that needs it. | |||
Well, that needs a little tracking I guess... | |||
Optimizer could catch it at the very least. | 17:42 | ||
17:42
cognominal left,
LlamaRider left
|
|||
jnthn | We can tell very easily if you're using a pointy on a when, anyway, so I don't think it'd thwart being able to analyze simple ones and transform them into jump tables some day. | 17:43 | |
TimToady | nodnod | 17:44 | |
17:45
asarch left
|
|||
jnthn | I guess iwht this, the * works but it's just a special case since it always matches. | 17:45 | |
This feels like a more powerful/general mechanism than recognizing * and special-casing. | 17:46 | ||
TimToady | that's what I'm kinda aiming for, if it doesn't blow performance in the usual cases | ||
but I wonder whether there should be a -> form that implies .?-ish semantics somehow | 17:47 | ||
moritz | ->? | ||
-?> | |||
jnthn | ~> | ||
TimToady | ~> is a bit too hard to distinguish visually | ||
jnthn | I'm not sure how useful that is in other places, though | 17:48 | |
Yeah. | |||
I realized that right after I'd typed it ;) | |||
TimToady | well, we have to balance out the general use case for a ->? against the DWIM/WAT quotient of not doing anything when the user might expect failure | 17:49 | |
the DWQ | |||
:) | 17:50 | ||
17:50
cognominal joined
|
|||
jnthn | True | 17:50 | |
Dunno if the "when" is a strong enough hint. | |||
TimToady | the Department of Wat(er) Quality | ||
felher | Whats WAT? | 17:51 | |
TimToady | also, -> $a { } when * given $stuff | ||
arguably that has a harder time knowing that the -> should be treated as optional | 17:52 | ||
jnthn | ugh, yes, I really don't want to have to make that work :) | 17:53 | |
moritz | felher: the sound of utter confusion and shock you make when discovering an unbelievable misfeature/bug/behavior | 17:54 | |
TimToady | see also www.youtube.com/watch?v=kXEgk1Hdze0 | ||
it's supposed to sound a bit like a duck quacking too | 17:55 | ||
17:56
cognominal left
17:58
bluescreen10 left
|
|||
masak | #perl6! \o/ | 17:59 | |
colomon | \o/ | ||
jnthn | masak! | 18:00 | |
TimToady | WAT?!? | ||
18:00
Chillance joined
|
|||
jnthn | .oO( WAT for? :P ) |
18:00 | |
masak .oO( $masak.WAT ) | 18:01 | ||
TimToady | .WAT should explain what the thing on the left thought it was doing :) | 18:02 | |
moritz | it usually returns a WTF object | ||
TimToady | what's the World Trade Federation got to do with it? | 18:03 | |
moritz | it's the central duck registry | 18:04 | |
[Coke] | r: wait.WHAT? | ||
p6eval | rakudo 810412: OUTPUT«===SORRY!===Two terms in a rowat /tmp/0CfDdRoHgl:1------> wait.WHAT⏏? expecting any of: method arguments postfix infix stopper infix or meta-infix statement end statement mo… | ||
moritz | r: wait().WHAT | 18:05 | |
p6eval | rakudo 810412: OUTPUT«===SORRY!===Undeclared routine: wait used at line 1» | ||
jnthn | Time to find some dinner...bbiab | 18:06 | |
moritz | I don't understand why this becomes a TTIAR error | ||
either it parses as wait().WHAT or as wait(.WHAT) | |||
[Coke] | r: say wait().WHAT? | ||
p6eval | rakudo 810412: OUTPUT«===SORRY!===Two terms in a rowat /tmp/cl1mGl4RJS:1------> say wait().WHAT⏏? expecting any of: method arguments postfix infix stopper infix or meta-infix statement end statem… | ||
moritz | both cases should complain about undecared routines, none about TTIAR | ||
std: wait().WHAT | |||
p6eval | std 86b102f: OUTPUT«ok 00:00 41m» | ||
moritz | std: foobar().WHAT | 18:07 | |
p6eval | std 86b102f: OUTPUT«===SORRY!===Undeclared routine: 'foobar' used at line 1Check failedFAILED 00:00 41m» | ||
[Coke] | std: wait().WHAT? | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Confused at /tmp/rvY8hftRuO line 1:------> wait().WHAT⏏? expecting any of: POST infix infix or meta-infix infixed function method arguments postcircumfix postfix | ||
..postfix_prefix_meta_operator postop stat… | |||
[Coke] points moritz at the ? | |||
moritz | oh. | ||
jnthn | It's the ?, and it's because it assumes if it was looking for an infix and didn't get one then it must be a ttiar | ||
'cus I didn't implement suppose yet. | |||
moritz unconfuses | |||
jnthn | Once I implement that it can suppose term, and not give bogus ttiar | ||
[Coke] asks jnthn why he supposes that is. | |||
TimToady | std: wait().WHAT?; | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Confused at /tmp/WeDUfIGl13 line 1:------> wait().WHAT⏏?; expecting any of: POST infix infix or meta-infix infixed function method arguments postcircumfix postfix | ||
..postfix_prefix_meta_operator postop sta… | |||
jnthn | Really dinner hunting... :) | 18:08 | |
TimToady | std: wait().WHAT+; | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Bogus term at /tmp/dMisghFVFu line 1:------> wait().WHAT+⏏;Parse failedFAILED 00:00 42m» | ||
felher | moritz: of course! I should have known :) | ||
TimToady doesn't understand why ? doesn't give that error instead | |||
18:08
SamuraiJack joined
|
|||
TimToady | std: wait().WHAT ?; | 18:08 | |
p6eval | std 86b102f: OUTPUT«===SORRY!===Confused at /tmp/k3oFrdoMl5 line 1:------> wait().WHAT ⏏?; expecting any of: infix infix or meta-infix infixed function statement modifier loopParse failedFAILED 00:00 42m» | ||
TimToady | std: wait().WHAT ? ; | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Confused at /tmp/qH44MYFHxF line 1:------> wait().WHAT ⏏? ; expecting any of: infix infix or meta-infix infixed function statement modifier loopParse failedFAILED 00:00 42m» | ||
TimToady | huh | ||
duh | 18:09 | ||
(the + is also an infix) | 18:10 | ||
no amount of coffee will fix certain cognitive difficulties... | 18:11 | ||
[Coke] | TimToady: nice theory, we should test it by drinking MOAR. | ||
[Coke] drinks a cup of spicy eggnog coffee. | |||
TimToady is allergic to spicy eggnog coffee. | |||
geekosaur | [12 13:49] <mizmoose> oh, StDiluted reminds me: Thing I tried last night that yinz must: Coffee with a Cadbury creme egg. As in, make coffee, drop in egg. stir. Drink. Die. | 18:12 | |
perigrin could see doing that with some cocoa. | 18:13 | ||
diakopter | r: \{ s!ay WAT?!.?!!?! } | ||
p6eval | rakudo 810412: ( no output ) | ||
[Coke] | TimToady: OH NOESE | ||
diakopter | std: \{ s!ay WAT?!.?!!?! } | 18:14 | |
p6eval | std 86b102f: OUTPUT«ok 00:00 43m» | ||
diakopter | std: \{ s!ay WAT?!.?!!? } | 18:16 | |
p6eval | std 86b102f: OUTPUT«===SORRY!===Malformed replacement part; couldn't find final ! at /tmp/DSaWSkaFoX line 1:------> \{ s!ay WAT?!.?!!? }⏏<EOL> expecting escapeParse failedFAILED 00:00 43m» | ||
diakopter | std: \{ s!ay WAT?!.?!! } | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Malformed replacement part; couldn't find final ! at /tmp/ls_1XaKzDb line 1:------> \{ s!ay WAT?!.?!! }⏏<EOL> expecting escapeParse failedFAILED 00:00 43m» | ||
diakopter | std: \{ s!ay WAT?!.?! } | ||
p6eval | std 86b102f: OUTPUT«===SORRY!===Couldn't find terminator ! at /tmp/e9pxUqvd19 line 1:------> \{ s!ay WAT?!.?! ⏏} expecting any of: metachar quantifier regex atomParse failedFAILED 00:00 43m» | ||
diakopter | I don't get it; what does the second ! mean | 18:17 | |
TimToady | S05:2334 | 18:18 | |
[Coke] | r: say "hello" ~~ s!l!e! | 18:19 | |
p6eval | rakudo 810412: OUTPUT«Cannot modify an immutable value in sub infix:<=> at src/gen/CORE.setting:12575 in block at /tmp/q0bJejIlZn:1» | ||
[Coke] | r: my $a = "hello" ~~ s!l!e!; say $a; | ||
p6eval | rakudo 810412: OUTPUT«Cannot modify an immutable value in sub infix:<=> at src/gen/CORE.setting:12575 in block at /tmp/G0jQJIZeF7:1» | ||
[Coke] | ... me sees what needs doing, but goes and drinks coffee instead. | ||
masak | so, I'm thinking of giving a Perl 6 course on IRC. how much interest is there? Heather and tadzik already expressed an interest. any more takers? | ||
TimToady would like to find out more about Perl 6... | 18:20 | ||
masak | TimToady: you're welcome to attend. | ||
PerlJam | masak: course on macros in Perl 6? ;) | ||
masak | we'd grab a channel somewhere and basically amuse ourselves for a day. | ||
PerlJam: possibly macros would figure somewhere. I was thinking the scope would be much wider than just macros, though. | 18:21 | ||
something more like "how to write awesome code with Perl 6". | |||
PerlJam | sweet! | ||
masak | just probing a bit for interest before making any fix'd plans :) | ||
18:25
SamuraiJack left
18:28
SunilJoshi left
|
|||
census | i would be a taker!!! | 18:29 | |
:) | |||
yay for perl 6 !! | |||
masak | \o/ | 18:30 | |
timotimo_ | masak: i'd like to attend, too, if i can | 18:32 | |
masak | that makes five. Heather, tadzik, TimToady, census, and timotimo_. | 18:34 | |
cool, I think there's enough of an audience for something like this :) | |||
it won't be any earlier than end of next week, due to @courses. until then we can do planning; find themes and dates. | |||
er, date. | |||
18:37
stevan_ left
18:39
kivutar left
18:47
japhb_ joined
|
|||
dalek | o: 1a0fd4f | ℋeatђer++ | bin/ufo: $(DESTDIR) |
18:48 | |
o: 867a5d4 | ℋeatђer++ | bin/ufo: Update ufo |
|||
o: a4e9a53 | (Carl Mäsak)++ | bin/ufo: Merge pull request #5 from Cynede/master $DESTDIR for ufo |
|||
18:48
cognominal joined
|
|||
masak | Heather++ | 18:49 | |
18:50
_jaldhar joined,
not_gerd joined
|
|||
not_gerd | o/ | 18:50 | |
masak | \o | ||
not_gerd | what's the perl6-equivalent for setters? | 18:51 | |
in particular, I want to transcode a string on assignment | |||
timotimo_ | hm, i know how to do a setter that doesn't do anything to the assigned thing | ||
not_gerd knows how to do that too via rw method | 18:52 | ||
masak | an rw method is the Perl 6 equivalent of a setter. | 18:53 | |
if you want to do fancy things in the background, it seems to me the practice is to return a Proxy object with an interesting .STORE method. | 18:54 | ||
PerlJam | masak: ... if only we had an IRC course on how to do awesome things with Perl 6 ... ;) | ||
masak | PerlJam: point taken, and noted. | 18:55 | |
timotimo_ | masak: that seems pretty involved :| | ||
masak also provisionally names the course "Perl 6 Awesome" | |||
timotimo_: well, what you're asking is for the language to lie to you about assigning something. that should be at least a little involved, in my opinion :P | 18:56 | ||
timotimo_ | hm, kind of | 18:57 | |
PerlJam | timotimo_: once you get the pattern, it's not *too* involved. | ||
masak | timotimo_: the default, just exposing the underlying container, is pretty sane. | ||
18:57
snearch joined
|
|||
timotimo_ | right | 18:57 | |
18:59
snearch left
|
|||
not_gerd | r: class Foo { has $!bar; method bar is rw { my $bar := $!bar; Proxy.new(FETCH => method { $bar }, STORE => method ($val) { $bar = "Nanananana " ~ $val }) } }; my $foo = Foo.new; $foo.bar = "Batman"; say $foo.bar | 19:02 | |
p6eval | rakudo 810412: OUTPUT«Nanananana Batman» | ||
not_gerd | is there a way to simplify that? | ||
PerlJam | using a proxy object seems like one of those "tribal knowledge" things. You're not intentionally left-out, but if you don't know it, you don't know. | ||
moritz | one could argue that the non-trivial extensibility means that it's not a good idea to implement/expose setters the way we do | 19:03 | |
19:04
FROGGS left
|
|||
masak | r: class Pope { hr: class Vatican { my $set = 0; has $!pope; method pope { Proxy.new(FETCH => { $!pope }, STORE => -> $, $newpope { die "Can only set pope twice" if ++$set > 2; $!pope = $newpope }) } }; given Vatican.new { say .pope = "Benedict XVI"; say .pope = "vacant"; say .pope = "Hilarius II" } | 19:07 | |
p6eval | rakudo 810412: OUTPUT«===SORRY!===Two terms in a rowat /tmp/QfEtigJD56:1------> class Pope { hr⏏: class Vatican { my $set = 0; has $!pop expecting any of: argument list postfix infix stopper infix or meta-infix… | ||
masak | r: class Vatican { my $set = 0; has $!pope; method pope { Proxy.new(FETCH => { $!pope }, STORE => -> $, $newpope { die "Can only set pope twice" if ++$set > 2; $!pope = $newpope }) } }; given Vatican.new { say .pope = "Benedict XVI"; say .pope = "vacant"; say .pope = "Hilarius II" } | ||
p6eval | rakudo 810412: OUTPUT«Benedict XVIvacantCan only set pope twice in block at /tmp/7e8tWnixii:1» | ||
masak | moritz: non-trivial extensibility? I'm curious, what do you mean? | 19:08 | |
19:10
rindolf left
|
|||
PerlJam | not_gerd: you could also .wrap() the autogenerated setter I bet. If so, that might be simpler | 19:13 | |
19:13
grondilu joined
|
|||
moritz | masak: I mean having to jump through the hoop of creating Proxy objects | 19:14 | |
(which are quite expensive in comparison to normal rwness, and much more code too) | |||
masak | PerlJam: I'm skeptical. could you show that in code? | 19:15 | |
PerlJam | If I could, I would have already :) | ||
19:16
domidumont left,
domidumont joined
19:18
PacoAir_ joined
|
|||
masak | moritz: well, the one invariant here, I guess, is that the way to set attributes is '$obj.attr = $val'. so something like ECMAScript 5's getters and setters is out, I think. | 19:18 | |
19:18
PacoAir left,
PacoAir_ is now known as PacoAir
|
|||
moritz | masak: but why is that the one invariant? | 19:20 | |
masak: why can't we say $obj.attr($val)? | |||
dalek | rl6-roast-data: 32184f7 | coke++ | / (4 files): today (automated commit) |
||
masak | well, you *can* create methods like that, of course. | ||
moritz | masak: let my rephrase. Why not make 'is rw' generate such setters by default? | 19:21 | |
[Coke] | S32-exceptions/misc.rakudo passed 525 unplanned test(s) | ||
rakudo failed 14 tests again today. :| | |||
masak | I meant something more like (a) I kinda like the assignment operator there, (b) I'm not ready to change that bit of the design, and (c) even if I were, I'm not ready to fight that battle, and I don't think others are either. | ||
moritz: so, 'is rw' would generate one getter method and one setter method? | 19:22 | ||
moritz: how then would you explain that both are called .attr ? | |||
19:22
FROGGS joined
|
|||
masak | moritz: where is the lying going on in the system to delegate to the setter? | 19:23 | |
[Coke] | multis? | ||
masak | doesn't cut it, they're both 1-ary. | ||
moritz | huh? | ||
one is 0-ary, one is 1-ary | |||
+ invocant in both cases | |||
masak | you're still arguing .attr($val) ! | ||
why? | 19:24 | ||
that's not even an option! | |||
moritz | it is an option, if we make it one | ||
masak | (I meant 1-ary, including the invocant, by the way) | ||
moritz | if you refuse to discuss it as an option, there's not much I can do | ||
masak | moritz: sorry, I think you're arguing something insane. :/ | ||
PerlJam | masak: why insane? | 19:25 | |
moritz | masak: then show me the insanity please | ||
PerlJam | It seems like what people coming from Moose-land would expect. | ||
masak | the whole design presupposes assignment there. | ||
moritz | which whole design? | ||
masak | S12. | ||
moritz | rw attrs aren't use much at all core | ||
and not much depends on it | |||
colomon | rw attrs are evil! | 19:26 | |
moritz | masak: most of S12 is completely orthogonal to the way setters work | ||
colomon | maybe. | ||
masak | moritz: again, I'm sorry. you're free to argue for .attr($val). I'm just not so interested in talking about it, because I (a) I like .attr = $val, and (b) I don't think you'll convince TimToady, and (c) I hope you won't convince TimToady. | 19:27 | |
put differently, I dislike Proxy less than I dislike .attr($val) | |||
moritz | masak: does using Proxy feel like a hack to you? | 19:28 | |
jnthn | We have meta-programming. You can shove alternative attr classes in EXPORTHOW. | ||
[Coke] | I really don't like proxy. | ||
it feels like a hack to me. | |||
jnthn | And have it generate the accessors you want. | ||
masak | moritz: no. | ||
moritz: I looked at it in src/core/Bag.pm, and it looked completely fine to. | 19:29 | ||
to me* | |||
moritz | jnthn: it's more about what we do by default, not about what can be done | ||
19:29
bluescreen10 joined
|
|||
moritz | masak: well, that's the difference then. To me, Proxy always feels like a complete and utter hack that screams "you shouldn't be doing it like this" | 19:29 | |
masak | Proxy doesn't scream at all to me. :) | 19:30 | |
PerlJam | interesting. | ||
jnthn | Well, what you write for Proxy isn't far off writing property get/set things in C#. | ||
tadzik | I just thought about that | ||
maybe a DSL would look nicer :) | 19:31 | ||
jnthn | Proxy feels a awkward to work with compared to those, though. | ||
masak | a Proxy feels more like a design element that releases the pressure between caller and callee when they have different expectations on how to get/set things. | ||
tadzik | has $.a = proxe { get {} set {} } | ||
PerlJam | I've always looked at Proxy as more like gentle pressure to reconsider your design, but otherwise works if you're willing to live with it (I am) | ||
colomon | PerlJam: +1 | ||
masak | interestingly, both PerlJam and I just used the word "pressure" to describe Proxy :) | ||
I agree with PerlJam, by the way. | |||
but only because there might sometimes be simpler ways than using Proxy. sometimes not. | 19:32 | ||
jnthn | That is, rather than throwing out the way we do properties, we may want to find a way to do this that feels less hacky to those who find proxy hacky. | ||
s/properties/accessors/ | |||
masak | *nod* | ||
jnthn | I don't find Proxy particularly beautiful, fwiw. | ||
masak | tadzik's syntax is interesting. | ||
not_gerd | there should be a way to apply a transformation to a value on attribute assignment | ||
masak | modulo a semicolon or two. | 19:33 | |
[Coke] sighs again about upgrading rakudo breaking installed modules, and wonders when he can find time to fix it so he can work on his program to see if he likes proxy or not. | |||
tadzik | masak: I'm crafting a module right now :) | ||
not_gerd | the current Proxy system can do that, but it's more painful than it should be | ||
masak | tadzik++ | ||
tadzik | but well, it's tricky | ||
or maybe not :) | 19:34 | ||
masak | tadzik: 'get' is taken. maybe 'getter'? | ||
jnthn | moritz: What is it about Proxy that make it feel like a hack, out of curiosity? | ||
tadzik | masak: yeah, sounds good | ||
masak | proxy { getter {}, setter {} } | ||
comma or semicolon, I dunno. | |||
tadzik | masak: no need :) | 19:35 | |
think Try::Tiny | |||
moritz | jnthn: the clunky syntax, and the need for extra objects for something that feels like it should be possible directly | ||
not_gerd | moritz++ | ||
skids | And the general rule that if you see ALLCAPS you are doing something icky or complicated. | 19:36 | |
not_gerd | feels like ECMAScript property descriptors *shudders* | ||
moritz | jnthn: given that getters and setters are closures, I don't even want to know how many extra GCables and calls are involved. Probably way too many for any hot-ish path | ||
jnthn | moritz: *nod* | ||
moritz | I mean the FETCH and STORE closures passed to Proxy.new | ||
jnthn | moritz: Yes, for a potential hot-path those are hard to optimize. | ||
FROGGS | jnthn: what do I get when calling nqp::getcomp('QRegex::P6Regex').compile("a+b") ? it tells me that get an eval | 19:37 | |
jnthn | FROGGS: You can back something invokable | ||
*get | |||
FROGGS | ahh, so I can call it | ||
cool | |||
jnthn | Yes. | ||
PerlJam | skids: BEGIN, END, BUILD, CATCH, FIRST, NEXT, etc. Are these icky or complicated? :) | ||
FROGGS calls it Peter then | 19:38 | ||
skids | Well, I guess that intention has drifted over time to ALLCAPS means PAY ATTENTION, but i seem to recall that was mentioned at some point when reading through the specs years ago. | ||
hoelzro | ahoy #perl6 folk | 19:39 | |
I have a question about type constraints in sub signatures! | |||
PerlJam | moritz: that's the one thing that does bother me about Proxy. It seems like it would be slow because of the extra hoops the code has to jump through. | ||
hoelzro starts posting | |||
gist.github.com/hoelzro/5146266 | |||
I can't for the life of me figure out why this type checks. | |||
tadzik | masak: ok, not possible after all :( | ||
no prototypes in P6 | 19:40 | ||
dalek | rlito: bbc5fbb | (Flavio S. Glock)++ | misc/jit.txt: Perlito5 - misc/jit.txt - plan for a jit backend |
19:41 | |
hoelzro | also, where are type constraints documented? | ||
moritz | hoelzro: ~~ sets $_ to the value on the left | ||
hoelzro | seriously? | ||
moritz | hoelzro: so never, ever smart-match against $_. It never dows what you want | ||
hoelzro | o_O | ||
can we get a warning for that? =) | |||
so, how can I implement this type check? | 19:42 | ||
(I realize it's a stupid example, but I'm going to be using it in a better way) | |||
moritz | with a normal parameter | ||
hoelzro | I really would like the slurpy hash | ||
PerlJam | hoelzro: I'd use a self-declared var. $^o or something | ||
hoelzro | I'm trying to have normal parameters plus a list of "will be supported in the future, but isn't working yet" | 19:43 | |
PerlJam: ah, good call | |||
moritz | hoelzro: and don't you actually want it the other way round? | ||
hoelzro: $_ ~~ $valid-options ? | |||
hoelzro | moritz: that's what I thought, but when I tested it, I needed Set ~~ Hash rather than Hash ~~ Set | 19:44 | |
moritz | or maybe all(%options.keys) ~~ $valid-options ? | ||
hoelzro | hmm | 19:45 | |
that works too | |||
moritz wouldn't know the smart matching between Hash and Set by heart, no matter which way | |||
19:45
snearch_ joined
|
|||
PerlJam | from the table in S03, it looks like either Hash ~~ Set or Set ~~ Hash should work. | 19:49 | |
Although, I guess I don't know what you're really trying to achieve. | 19:50 | ||
hoelzro | sub MAIN(Bool :$help, *%extra-options where { $valid-options ~~ $^a } ) | ||
awesome =) | |||
I want to issue a warning for options I intend to support, but don't yet | 19:51 | ||
19:52
immortal joined,
erkan left,
immortal left,
immortal joined,
immortal left
|
|||
hoelzro | can one customize the usage message generated by MAIN? | 19:52 | |
PerlJam | hoelzro: see S06:3425 | 19:53 | |
hoelzro: or just ack for USAGE | |||
hoelzro | grazie | ||
19:57
cognominal left
|
|||
timotimo_ | should i add tests for "elif" raising an X::Syntax::Malformed::Elsif to roast? | 19:58 | |
20:00
snearch_ left
|
|||
tadzik | masak: okay, I had a pretty plan, but this is over my head :( | 20:02 | |
20:03
snearch joined
|
|||
masak | tadzik: it's possible if you make 'setter' an infix. but I wouldn't do that. too magical. | 20:03 | |
timotimo_ | "is setter"? | ||
tadzik | masak: I'm not so sure | ||
masak | tadzik: just put a comma or semicolon there :) | ||
tadzik | masak: rakudo doesn't really like 'has $.a = Proxy.new' | ||
it then still fails on $foo.a = (stuff) | |||
20:03
snearch left
|
|||
tadzik | because it's not rw | 20:03 | |
so you need $!a, and method a which returns a proxy | |||
masak | hm. | 20:04 | |
20:04
cognominal joined
|
|||
tadzik | or I'm doing something wrong, which is possible | 20:04 | |
20:08
cognominal left
20:11
cognominal joined
20:16
domidumont left
20:17
cognominal left
|
|||
hoelzro wishes @array.first w/o params just returned the first entry | 20:18 | ||
masak | r: say [5, 6, 7].first(True) | ||
p6eval | rakudo 810412: OUTPUT«5» | ||
hoelzro | ah, but... | 20:19 | |
r: say [5, 6, 7].first() | |||
p6eval | rakudo 810412: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method first at src/gen/CORE.setting:1283 in block at /tmp/Ztd0gbGFlg:1» | ||
hoelzro | it couldn't just default to True? | ||
20:20
erkan joined,
erkan left,
erkan joined
20:21
rurban joined
|
|||
colomon | hoelzro: seems like a lot of work to avoid saying [0] | 20:23 | |
hoelzro | I know | ||
but using methods on arrays makes me think of Ruby, and calling .first is idiomatic Ruby =) | 20:24 | ||
fg | 20:35 | ||
oops =/ | |||
moritz | don't ctrl+z your IRC client :-) | 20:36 | |
not_gerd | moritz: if you have time, please take a look at github.com/rakudo/rakudo/pull/115 | ||
or rather github.com/gerdr/rakudo/blob/f54e2...NET.pm#L93 | 20:37 | ||
the diff isn't all that helpful | |||
20:37
erkan left
|
|||
hoelzro | when I do ... where $object | 20:38 | |
I'm guessing that's equivalent to ... where { $^a ~~ $object }? | |||
moritz | not_gerd: looks good, will spectest next | ||
not_gerd | moritz: thanks | 20:40 | |
masak | today's fun moment in Perl class: implementing an infinite loop with a $SIG{INT} handler. "observe how Ctrl+C doesn't abort the script. great... so now how do I stop the script?" :) | 20:42 | |
timotimo_ | :D | 20:43 | |
^\ | |||
tadzik | masak: do you know the 'sl' program? | 20:44 | |
masak | tadzik: nope. | 20:45 | |
(I ended up ^Z-ing, then doing 'kill %1') | |||
timotimo_ | sl is a very helpful utility | ||
20:45
alester joined
|
|||
masak | url? | 20:46 | |
alester | masak! I have something for you! | ||
masak | whoa! | 20:47 | |
is it rage? :P | 20:48 | ||
20:48
erkan joined,
erkan left,
erkan joined
|
|||
jnthn | is it in a box? :P | 20:49 | |
masak | in either of those cases, allow me to pass. :) | ||
jnthn | .oO( rage in a box ) |
||
masak | I was about to write that! | ||
geekosaur | ocelot? | 20:50 | |
[Coke] | ocelittle. | 20:53 | |
FROGGS | oceless | ||
20:53
_jaldhar left
|
|||
timotimo_ | strange. i added a &?ROUTINE to the block that gets created from m/.../, like this: - QAST::Var(lexical &?ROUTINE :decl) | 20:54 | |
but rakudo complains "Undeclared name: &?ROUTINE used at line 1" when i reference it from inside | |||
jnthn | I'm not sure what should get one... | ||
Hm, maybe it should... | |||
I think regex { ... } etc should get one though. | 20:55 | ||
Do you add a symbol table entry too? | |||
20:55
mberends joined
|
|||
timotimo_ | i used "install_lexical_symbol. is that not enough? | 20:56 | |
tadzik | oh, btw | ||
jnthn | should be. | ||
tadzik | does Perl 6 allow anything like "install those named subs into caller's lexical scope?" | ||
jnthn | If the thing you're calling is a macro, presumably through compiling | ||
timotimo_ | $outer[0].push(QAST::Stmt.new($block)); - this is in there some place else, would i need that, too, perhaps? | 20:57 | |
jnthn | You can't do it after CHECK time since lexical scopes are immutable after that. | ||
timotimo_: No, don't think so | |||
tadzik | Dancer2 does this: github.com/PerlDancer/Dancer2/blob...DSL.pm#L44 | ||
I wonder if that's portable in any way | 20:58 | ||
moritz | not to Perl 6 | 20:59 | |
maybe with macros | |||
timotimo_ | jnthn: paste.ee/p/gZhrX this is the tree, maybe i'm looking at the wrong place? | ||
maybe because of the inner block? | 21:00 | ||
dalek | Heuristic branch merge: pushed 17 commits to rakudo/new-nil by moritz | 21:02 | |
moritz | dammit, merged into the wrong branch | ||
21:02
skids left
|
|||
FROGGS | moritz: doesnt hurt if you wanted to merge it into nom | 21:03 | |
21:03
cognominal joined
|
|||
timotimo_ | yeah, maybe it doesn't work because it's a lexical, but the block is somewhere else in the tree? | 21:03 | |
21:04
kurahaupo joined
|
|||
alester | A kiwi! | 21:05 | |
jnthn | timotimo_: Well, the lexical wants installing inside the regex block | 21:07 | |
timotimo_ | so i need the lexical inside every { ... } block? | ||
jnthn | No, it should be visible from nested ones...it's a lexical | 21:08 | |
timotimo_: Hm, it looks to be in the same scope $?REGEX is. | 21:09 | ||
So I don't immediately see what's wrong. | |||
timotimo_: Does it work for regex foo { ... } ? | 21:10 | ||
timotimo_ | i'll try | ||
it doesn't seem to error out at least | 21:11 | ||
but i don't call it, but that doesn't make a difference, yes? | |||
oh, neat,it does work | 21:12 | ||
er,no, not quite | |||
oh, no, actually yes, it does | |||
perl6 -e '"a" ~~ regex { a { say &?ROUTINE.WHAT } };' -> (Regex) | |||
dalek | kudo/nom: 7a313c0 | (Gerhard R)++ | src/core/IO/Socket/INET.pm: Change IO::Socket::INET.get to return undef on EOF, matching IO semantics. Now, if only someone could show me a good way to make the transcoding happen at attribute assignment and not at every readline call... |
||
kudo/nom: f54e210 | (Gerhard R)++ | src/core/IO/Socket/INET.pm: Fix IO::Socket::INET.lines - now with actual looping |
|||
kudo/nom: a98aa70 | moritz++ | src/core/IO/Socket/INET.pm: Merge branch 'fix-socket-get-2' of github.com/gerdr/rakudo into nom |
|||
moritz | not_gerd++ | ||
alester | In text, are we wrintg "Perl 6" or "Perl6"? | 21:13 | |
timotimo_ | i wrote Perl 6 recently | 21:14 | |
alester | I've heard people suggest it should be the latter but not more than that. | ||
OK, "Perl 6" it is. | |||
arnsholt | jnthn: 'Nother ops question. When I have "class NQPArray { ... }" in NQP, does that end up in the same namespace as, say, QRPA? | 21:15 | |
21:16
kaare__ left
|
|||
jnthn | arnsholt: QRPA isn't in any NQP-visible namespace as it's a Parroty type thing | 21:20 | |
arnsholt: And NQPArray should be a in NQPCORE, so it shouldn't be in a package. | |||
s/a// | |||
It should be declared my and visible due to being lexical. | |||
timotimo_ | jnthn: should i pullrequest the change that adds the &?ROUTINE already? or wait until somebody clever finds out why it doesn't work with /.../ regexes? | 21:21 | |
jnthn | timotimo_: I'm not convinced if it should | 21:22 | |
timotimo_ | rt.perl.org/rt3//Ticket/Display.html?id=116417 - moritz said so. i have no opinion :) | 21:23 | |
jnthn | ah | ||
I dunno if /.../ counts as a routine-y thing or a block-y thing. I guess it is ~~ Regex, so if it's about type... | |||
timotimo_ | so, if it's not supposed to be available in /.../, should i make sure the &?ROUTINE won't be added to the AST in the first place? | 21:25 | |
21:27
not_gerd left
|
|||
masak | alester: I'm curious to see what it is you have -- I'm a bit knackered from lots of teaching, though, so forgive my silly humor and lack of attention. | 21:32 | |
alester | Here it comes. | ||
gist.github.com/petdance/5147279 | 21:33 | ||
Sorry it took so long to get here. | 21:34 | ||
I would also suggest that the answers to the first three questions should be in every release announcement. | 21:35 | ||
One of my frustrations as both potential user and news editor is that the release announcements tell me about what's new, but not what the state is. The what's new doesn't mean anything to me if I haven't been following previous releases. | 21:36 | ||
There's some of that in rakudo.org/2013/02/24/rakudo-star-2...-released/ down at the tail end. | 21:37 | ||
Now, all that said: How can I help? | 21:40 | ||
masak | alester++ | 21:41 | |
I won't have the strength to do anything until tomorrow. but what's there already looks good. | 21:42 | ||
alester | The writing is mostly yours, and wordsithed a bit | 21:44 | |
Wordsmithed. Wordsithed would mean I have to run it past a dark lord. | |||
But the questions are gonna be the tough part. | |||
masak | honestly, I think it's based mostly on what PerlJam++ wrote. | 21:49 | |
jnthn | alester: (what's new, not state) interesting point, perhaps it's worth revisiting the start-of-announcement text to consider what we convey there. | 21:50 | |
alester | jnthn: That's why I'm trying to be the outsider here. | 21:51 | |
Becuase y'all are SO CLOSE to the project. | 21:52 | ||
masak | that's because our arms are only so long. | ||
jnthn | alester: Well, conveing progress is important too, so I guess it wants to be a balance. | ||
alester | I don't see it needs to be a balance. If progress is the bulk of it, that's fine. | 21:53 | |
But I think that as an outsider, I want to know what I'm getting. | |||
jnthn | Something up front that ways you're getting a Perl 6 compiler, modules, debugger, documentation, etc? | 21:56 | |
*says | |||
alester | That'd be a start, sure. | ||
masak | as a Perl 5 teacher, I proudly tell my participants "it's been 13 years. we're working on it. there's noticeable progress, but there are also things left to finish." | ||
alester | masak: Absolutely. I'm proud to be involved, too, in all the things I've done. | 21:57 | |
Not nearly as much as most of y'all, but yeah, I get what you mean. | |||
It stinks that the black/white mentality of done/not-done comes out as so hostile. | |||
But it's also what we have to deal with. | 21:58 | ||
hoelzro | can one augment a subset? | 22:00 | |
jnthn | No | ||
hoelzro | =( | ||
so I can't add methods to a subset? | |||
jnthn | No | ||
hoelzro | dang | ||
oh well | |||
jnthn | It's not a type capable of having methods directly. | ||
masak | can one inherit from a subset? :) | 22:01 | |
timotimo_ | you could add "does foo" as part of the subset-ness test? :P | ||
masak | can one mix a subset into a class as if it were a role? | ||
hoelzro | is there a way I can define a class that has an automatic string coercion? | ||
ex. sub MAIN(IssueState :$state)? | |||
masak | hoelzro: class IssueState is Str {} # ;) | 22:02 | |
[Coke] imagines masak with tyrannosaurus arms. | |||
alester | hoelzro: Get outta here, go overhaul betterthangrep.com to support ack 2.0 | ||
hoelzro | alester: heh | 22:03 | |
timotimo_ | ack 3.0 will be perl6? :) | 22:04 | |
jnthn | hoelzro: Override method Stringy | ||
hoelzro | I was actually thinking of writing an ack port in Perl 6 called 6pack | ||
masak | [Coke]: 2.bp.blogspot.com/_9ooaR4kZwTY/S4NG...Comics.png | 22:05 | |
[Coke] | masak: funnyasduck.net/post/11512 | 22:06 | |
22:06
_jaldhar joined
|
|||
masak | rawr. | 22:07 | |
grondilu | Ayiko: hi, how did you manage to have syntax highlighnting in rosalind.info/problems/fibd/solutions/ without using a shebang? | ||
grondilu realises he can just ask this on this very page | 22:08 | ||
japhb_ | moritz, re: irclog.perlgeek.de/perl6/2013-03-12#i_6578249 , on a purely edit-distance basis, 'bless' and 'elems' are very close. What tweak to the distance heuristics would you recommend to DWYM? | 22:09 | |
hoelzro | jnthn: so I only need to override Stringy? do I need to consume that role? | ||
jnthn | hoelzro: no | 22:10 | |
masak | today's autopun: bash.org/?772595 | 22:11 | |
22:11
olivia123 joined
|
|||
olivia123 | Helloo | 22:11 | |
22:11
olivia123 left
|
|||
masak | goodbyee | 22:12 | |
hm, are there any autopuns on the form <do>...<say>? all the ones I can think of are <say>..<do>. | |||
22:14
mehwork joined
|
|||
mehwork | what's the best way to play with perl6 today? | 22:14 | |
alester | mehwork: Thanks for asking. We're talking about that very question. | ||
mehwork | nice | 22:15 | |
japhb_ | alester, bracketed line 60 of your gist seems no longer necessary, since you have the blockquote at the end that addresses it. | ||
masak | mehwork: download Rakudo. write a one-liner. see if it did what you hoped it would. (probably does.) repeat from step 2. | ||
alester | I've just updated gist.github.com/petdance/5147279 to include mehwork's question' | ||
timotimo_ | mehwork: you can also use the p6eval bot to evaluate single lines of code or gists from gist.github.com for you :) | ||
masak | rn: say "hello $_, from us compilers!" given "mehwork" | 22:16 | |
mehwork | cool, thanks | ||
p6eval | rakudo a98aa7, niecza v24-33-gfc6d5fd: OUTPUT«hello mehwork, from us compilers!» | ||
japhb_ | alester, OK, it's now line 62. ;-) | ||
timotimo_ | here on the channel you always get the newest version of rakudo, but you can also type star: to get your code run on the latest rakudo star release | 22:17 | |
star: if True { say "yay" } else if False { say "no" } | |||
p6eval | star 2013.02: OUTPUT«===SORRY!===Missing blockat /tmp/OyojzVsqYV:1------> if True { say "yay" } else ⏏if False { say "no" } expecting any of: postfix infix or meta-infix infix stopper statement end state… | ||
timotimo_ | r: if True { say "yay" } else if False { say "no" } | ||
p6eval | rakudo a98aa7: OUTPUT«===SORRY!===Please use 'elsif'at /tmp/C9FWhBzvNe:1------> if True { say "yay" } else if ⏏False { say "no" }Confusedat /tmp/C9FWhBzvNe:1------> if True { say "yay" } else if ⏏False { say "no" } expect… | ||
japhb_ likes that star tracks a *release*, not just HEAD | |||
alester | Removed. | ||
22:19
spider-mario left
|
|||
timotimo_ | how long until the 2012.03 rakudo release is planned to happen? | 22:19 | |
jnthn | It happens on the Thursday following the third Tuesday in the month | 22:20 | |
japhb_ | hoelzro, last I hacked on it, overriding &USAGE didn't allow you to access $?USAGE (the default-generated usage info) -- that's still a TODO, see src/core/Main.pm for details. | 22:21 | |
hoelzro | japhb_: yeah, I noticed that too | 22:22 | |
22:23
bluescreen10 left
|
|||
japhb_ | hoelzro: I ran out of right-shaped tuits, but you're welcome to work on any or all of those TODOs. | 22:23 | |
hoelzro | if I find the time =) | 22:24 | |
timotimo_ | a proto regex should not get &?ROUTINE, is that right? | ||
hoelzro puts that next to "add STD opening/closing brackets" | |||
jnthn | timotimo_: I'm not sure there's a way to get at it even if you give it one... | 22:25 | |
timotimo_: But it doesn't hurt if it has one. | |||
timotimo_ | hm, OK | 22:26 | |
timotimo_ specs runtests | 22:29 | ||
i'm still not sure if i should try to give &?ROUTINE to /.../ or not ... | 22:31 | ||
masak | hm, the Thursday following the third Tuesday in the month can be either the third Thursday or the fourth Thursday, but no other nth Thursday, right? | 22:33 | |
jnthn | rajt | ||
timotimo_: Me either; I was wondering if TimToady might drop us an opinion if we're patient :) | 22:34 | ||
timotimo_ | oh, that would be nice | ||
i fear he'd suggest to add it in, in that case i wouldn't be sure how to do it :| | 22:36 | ||
22:37
PacoAir left
|
|||
timotimo_ | i shall add some tests. | 22:37 | |
22:38
skids joined
|
|||
timotimo_ | hm, not sure where to add them to be honest. S05-grammars/? | 22:39 | |
jnthn | Somewhere in S02-magicals maybe | 22:41 | |
timotimo_ | subname.t seems to have &?ROUTINE in it already | 22:42 | |
but only &?ROUTINE.name | |||
ah, sub.t is better | 22:43 | ||
that was surprisingly easy :) | 22:47 | ||
dalek | ast: ee9b043 | (Timo Paulssen)++ | S02-magicals/sub.t: test that &?ROUTINE gets set in regex/token/rule. |
22:48 | |
timotimo_ | these tests pass with my local rakudo, which is just the code that i recently pushed to my github | 22:49 | |
TimToady | I wouldn't give /.../ a &?ROUTINE, since it functions mroe like a block | 22:50 | |
regex {}, token {}, rule {} on the other hand are methods | |||
timotimo_ | great, i'll issue a pull request and if the code looks sane, it could be merged immediately | 22:51 | |
jnthn | TimToady: That was my gut feeling too :) | 22:53 | |
A couple of errands aside, I should have a good tuit supply tomorrow :) | |||
diakopter | hi | 22:54 | |
ww | 22:55 | ||
ww ww | |||
masak | diakopter: :) | ||
jnthn | wat? :) | ||
timotimo_ | ww ww ww ww ww ww ww ww watman! | ||
TimToady | dwim! pow! exp! | 22:56 | |
jasonmay | that's so meta | 22:59 | |
22:59
xilo left
|
|||
lue | hello o/ | 22:59 | |
22:59
pmurias left
|
|||
masak | jasonmay: if there's something we like in here, it's meta. | 23:00 | |
masak .oO( every time you mention the meta, you level up ) | 23:01 | ||
jnthn | It's so meta, even this allusion... | 23:02 | |
masak | at this point, I feel obliged to mention Bertrand Russell. that is all. | 23:04 | |
timotimo_ | oh no, what did i do | ||
masak | you created a self-feeding tempo-spacial vortex! | 23:05 | |
lue | r: my @a = 1,2; my @b = 4,5,6; say @a ZX+ @b; say @a XZ+ @b; # not sure what I want this metaop combining to do :P | ||
p6eval | rakudo a98aa7: OUTPUT«5 75 6 7 6 7 8» | ||
timotimo_ | github.com/rakudo/rakudo/pull/116 - this is now cleaned up and can be merged if you like :) | 23:06 | |
alester | masak et al: Let me know how I can help with writing/wthaever. TTYL. | 23:07 | |
23:07
alester left
|
|||
jnthn | timotimo_: If nobody beats me to it, will merge it in the morning | 23:07 | |
well, review andmerge if it's fine | |||
timotimo_ | :) | 23:08 | |
jnthn | Sleep now... 'night o/ | 23:09 | |
23:17
mj41 joined
23:27
slavik joined
23:28
Chillance left,
xilo joined
23:39
labster joined
23:40
xilo left
|
|||
masak | 'night, #perl6 | 23:42 | |
23:42
revdiablo joined,
xilo joined
23:43
slavik left
23:45
slavik joined
|
|||
colomon 's $work script would be much easier to write if he could do it in p6 rather than p5. :( | 23:59 |