»ö« 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! | YAPC::NA talk submissions due end of Month. Have you submitted your talk? Set by toddr_ on 18 March 2013. |
|||
00:01
supernovus left
00:03
countley joined
00:07
countley left
00:13
countley joined
00:17
nsharrok joined
00:19
countley left
00:20
cognominal left,
Chillance left,
countley joined,
baest left
00:21
cognominal joined
00:29
cogno joined
00:30
adu_ joined
00:33
gdey left
00:41
lustlife joined
00:42
nsharrok left
00:44
countley left
00:48
census left
00:54
Gruber is now known as Grrrr
01:00
am0c joined
01:02
japhb_ left
01:11
orafu left,
lustlife left,
orafu joined
01:14
hypolin joined
01:15
adu_ left
01:23
cogno left,
cognominal left
01:24
cognominal joined
01:27
cogno joined
01:38
cogno left,
cognominal left
01:45
lustlife joined
02:09
xinming left
02:11
xinming joined
02:19
daniel-s__ left
02:48
uasi joined
03:03
grondilu left
03:10
orafu left,
OuLouFu joined,
OuLouFu is now known as orafu
03:25
census joined
03:42
uasi left
03:45
baest joined
04:09
census left
04:19
colomon left
04:28
colomon joined
04:29
census joined
04:37
dayangkun joined
04:39
preflex left
04:40
preflex_ joined,
preflex_ is now known as preflex
04:46
kivutar joined
04:54
daniel-s joined
05:00
rindolf joined
05:10
raiph joined
05:11
dayangkun left
|
|||
diakopter | . | 05:11 | |
r: | | ||| | | || | || | | || || | ||| | | | | || |||| || || || || ||| ||| ||e | 05:12 | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&prefix:<|>' called (lines 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … | ||
diakopter | std: try | | ||| | | || | || | | || || | ||| | | | | || |||| || || || || ||| ||| ||e | 05:13 | |
p6eval | std 86b102f: OUTPUT«ok 00:00 42m» | ||
diakopter | that's the secret way to break into the compiler - it interprets that as binary and writes it to executable memory and jumps there. | 05:15 | |
TimToady | r: ||[] | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&prefix:<|>' called (lines 1, 1, 1, 1)» | ||
TimToady | r: |[] | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&prefix:<|>' called (lines 1, 1)» | ||
TimToady | r: say |[] | ||
p6eval | rakudo 8fea53: OUTPUT«» | ||
05:17
Heather joined
|
|||
Heather | hi | 05:17 | |
nqp must be build with -j1 ? | |||
diakopter | did you try it higher? | 05:18 | |
[curious] | 05:19 | ||
Heather | no | ||
diakopter DrEeevil tested | 05:20 | ||
DrEeevil | it might work in newer versions, when I restricted that a while ago (~1 year I think) it lead to spurious failures | 05:21 | |
05:32
census_ joined
05:34
census left
05:36
census_ left
|
|||
Heather | DrEeevil just reg ex github.com/Heather/ecosystem/blob/.../META.list | 05:36 | |
05:36
census joined
|
|||
Heather wrong chat | 05:36 | ||
so... | 06:02 | ||
let start with: How to read text file on http? | |||
get? | 06:03 | ||
r: my $text = get 'example.com'; | 06:04 | ||
p6eval | rakudo 8fea53: OUTPUT«No such method 'get' for invocant of type 'Str' in sub get at src/gen/CORE.setting:7983 in block at /tmp/a6em_RAPGf:1» | ||
06:07
uasi joined
|
|||
Heather | p5eval: get 'example.com'; | 06:08 | |
06:08
SamuraiJack joined
|
|||
p5eval | Heather: ERROR: syntax error at (eval 7) line 1, near "get 'example.com'" | 06:08 | |
Heather | maybe it should be run wget ? .... | 06:09 | |
06:09
kurahaupo left
06:28
Jimmy_ joined
|
|||
Jimmy_ | Heather: github.com/cosimo/perl6-lwp-simple | 06:29 | |
06:30
Jimmy_ left
|
|||
moritz | star: use LWP::Simple; say LWP::Simple.get('perl6.org').substr(0, 20) | 06:37 | |
p6eval | star 2013.02: OUTPUT«<?xml version="1.0" » | ||
moritz | star: use LWP::Simple; say LWP::Simple.get('perl6.org').comb(rx{ '<title>' .*? '</title>' }) | 06:38 | |
p6eval | star 2013.02: OUTPUT«<title>Perl 6</title>» | ||
Heather | cool | ||
07:12
vaelxon joined
07:17
rindolf left
07:25
kaleem joined
07:31
census left
07:34
rindolf joined
07:37
drbean joined
07:39
drbean left
|
|||
hoelzro | pmichaud: I did not... | 07:40 | |
07:40
drbean joined
|
|||
hoelzro | (wrt nqp_const.pir installation) | 07:41 | |
07:49
FROGGS joined,
domidumont joined
07:51
rindolf left,
rindolf joined
07:52
wk left
07:54
domidumont left
07:55
domidumont joined
08:14
Guest85728 joined
08:22
Sifr left
|
|||
moritz | I love the new built-in pdf viewer in firefox, but "an unknown error occured while printing" is LTA | 08:37 | |
LoRe | lighter than air? | 08:41 | |
moritz | LTA = Less Than Awesome | ||
LoRe | :) | 08:42 | |
FROGGS | moritz: ya, that thing is cool, but it has problems with transparency… but that's the only issue I've seen so far | 08:43 | |
moritz | oh, and the gnome printing dialog can't count | 08:45 | |
when I combine two pages per sheet and double-sided printing, it puts 4 logical pages both on the back and the front of each page | |||
LoRe | and some fonts are rendering very strange, ie the headlines in this menu: www.franziskanerinder-au.de/speisek...ekarte.pdf | 08:46 | |
08:46
daxim joined,
labster left
|
|||
FROGGS | ohh ya, that's kerning, right? | 08:48 | |
08:48
kresike joined
|
|||
kresike | hello all you happy and/or unhappy perl6 people | 08:48 | |
FROGGS | hi kresike | ||
kresike | FROGGS, o/ | 08:49 | |
is there anyone here that is both happy and unhappy ? | |||
dalek | kudo/tmp_highfive: cfb72f2 | (Tobias Leich)++ | src/Perl6/ (3 files): cleanup and attempt to support switching to v5 and back |
08:50 | |
FROGGS | kresike: I'm not | ||
pretty happy atm | |||
kresike | FROGGS, yes, but I'm looking for people that are happy and unhappy at the same time, possibly wrt perl6 | 08:53 | |
FROGGS | kresike: so you'll change your greeting line if nobody answers? | ||
tadzik | hello any(<happy unhappy>) perl 6 people? :) | 08:54 | |
kresike | I'll remove the and, as it makes little sense | ||
FROGGS | tadzik++ | 08:55 | |
kresike | One could say that he is happy that perl6 exists, but unhappy that it hasn't had a complete implementation yet | ||
FROGGS | :o) | ||
kresike | tadzik, ☺ | ||
but that is happy or unhappy | 08:56 | ||
tadzik | it can be and, but then you won't notice | 08:57 | |
r: say any(3, 5) > 1 | |||
p6eval | rakudo 8fea53: OUTPUT«any(True, True)» | ||
tadzik | oh hm | ||
r: say so any(3, 5) > 1 | |||
p6eval | rakudo 8fea53: OUTPUT«True» | ||
tadzik | r: say so any(3, 0) > 1 | ||
p6eval | rakudo 8fea53: OUTPUT«True» | ||
Heather | pdf in firefox -> always crash :D | 08:58 | |
FROGGS | Heather: never crashed here :o) | ||
Heather | FROGGS I don't beleave ^__^ they paid you | ||
kresike | tadzik, how so ? | 08:59 | |
tadzik | any(all(@pdf) ~~ Crash, none(@pdf) ~~ Crash) | ||
08:59
Liz joined,
Liz is now known as Guest24760
|
|||
tadzik | kresike: how so what? :) | 08:59 | |
kresike | tadzik, how can any be and ? | 09:00 | |
09:02
Guest24760 is now known as lizmat
|
|||
tadzik | I don't understand the question :) | 09:05 | |
r: all(1, 1) == any(1, 0) | 09:06 | ||
p6eval | rakudo 8fea53: ( no output ) | ||
tadzik | r: say so all(1, 1) == any(1, 0) | ||
p6eval | rakudo 8fea53: OUTPUT«True» | ||
kresike | tadzik, you said any(<happy unhappy>) perl6 people | 09:07 | |
I think that means happy or unhappy | 09:08 | ||
<tadzik> it can be and, but then you won't notice | |||
how so ? | |||
tadzik | ah | 09:09 | |
well, you'll get the True value regardless of whether it's any of them, or both | 09:10 | ||
like with (False || True) | |||
that'll give you true, and the same with (True || True) | |||
if that sounds confusing, then it's probably the fact that it's early in the morning, I'm thinking slowly and coffee doesn't seem to help :) | |||
kresike | but that means OR ! | 09:11 | |
tadzik | yes | ||
okay, nevermind :) | |||
kresike | Or my logic teacher was way off :) | ||
tadzik | haha, no, you're right | ||
it's just my twisted thinking maybe :) | |||
me and my Schrodinger's logic | |||
Heather | so when you say hello anybody you say hello to some random person :D | 09:12 | |
kresike | Heather, I'm using multicast not anycast :) | ||
Heather | kresike you just using it wrong | 09:13 | |
kresike when you say hello you define the rule people will use to authorize | |||
kresike with that rule all = any | |||
kresike | Heather, I think we're way off topic here :) | 09:14 | |
Heather | ahm... could be | ||
09:15
fhelmberger joined
|
|||
Heather | can somebody share me korean kssn? :P | 09:15 | |
Heather ... worst try I used to get it | 09:16 | ||
09:23
am0c left
|
|||
jnthn | morning, #perl6 o/ | 09:28 | |
tadzik | hello jnthn | 09:29 | |
FROGGS | morning jnthn | 09:30 | |
09:31
acheche left
|
|||
lizmat | morning all | 09:33 | |
FROGGS | morning lizmat | ||
09:34
Grrrr left
|
|||
moritz | \o * | 09:39 | |
nwc10 | what's with this error from making Rakudo? | 09:40 | |
/home/nicholas/Perl/rakudo/install/bin/parrot -o blib/Perl6/ModuleLoader.pbc src/gen/perl6-moduleloader.pir | |||
error:imcc:No such file or directory 'nqp_const.pir' in file 'src/gen/perl6-moduleloader.pir' line 1 | |||
make: *** [blib/Perl6/ModuleLoader.pbc] Error 1 | |||
jnthn | urgh | ||
That hoelzro's patch didn't add the file to those installed like pmichaud said it needed to... :/ | 09:41 | ||
Heather | can LWP Simple work with https ? | 09:43 | |
moritz | I don't think so | ||
Heather | moritz sad... is ther mirrored ecosystem list? | ||
or should I run wget on it... | 09:44 | ||
09:44
wk joined
|
|||
moritz | Heather: I don't know if it's mirrored anywhere | 09:44 | |
Heather | maybe git cherry pick this file ... | 09:45 | |
moritz | Heather: you could add something to the modules.perl6.org rebuilding script that takes care of mirroring | ||
git cherry-pick works with commits, not files | |||
jnthn | nwc10: gist.github.com/jnthn/654e80453444...tfile1.txt may fix it | ||
Heather | wait... I think I can just check how panda do it... | 09:46 | |
09:46
lizmat left
09:47
sqirrel joined
|
|||
moritz | it probably shells out | 09:47 | |
tadzik | fetching META.list? | 09:48 | |
Heather | oh... | ||
feather.perl6.nl:3000/projects.json | |||
tadzik | yes | ||
Heather | yes | ||
tadzik though I need that ecosystem module... | 09:49 | ||
tadzik | hum? | ||
Heather | maybe I can use it from installed panda... | ||
tadzik | what do you want, to generate this file>? | ||
I have a script which does that | 09:50 | ||
not that it's rocket science | |||
Heather | tadzik I need to get all project names with git urls versions and deps | ||
tadzik | you have that in that file, yes | 09:51 | |
Heather | tadzik now I need parse it | ||
moritz | use JSON::Tiny; my $d = from-json slurp 'projects.json' | 09:55 | |
09:55
Grrrr joined
|
|||
nwc10 | jnthn: strace suggests that parrot is looking for that file in .../include/ not .../library: | 10:02 | |
stat("/home/nicholas/Perl/rakudo/install/lib/parrot/5.1.0-devel/include/nqp_const.pir", 0x7fff36800410) = -1 ENOENT (No such file or directory) | |||
it looks for a .pbc in the same directory | |||
jnthn | nwc10: Oh. strace++... | 10:07 | |
10:07
mtk left
|
|||
jnthn | Take two: gist.github.com/jnthn/654e80453444...tfile1.txt | 10:07 | |
10:07
hypolin left
|
|||
dalek | kudo/tmp_highfive: 7fdfc62 | (Tobias Leich)++ | src/Perl6/P5 (2 files): say(1 + 2.5) works |
10:08 | |
masak | good antenoon, #perl6 | ||
tadzik | hi masak | 10:09 | |
masak | today's autopun spotting: twitter.com/codepo8/status/314552333059112960 | ||
FROGGS | hehe | 10:10 | |
jnthn | :)_ | ||
o/ masak | |||
masak | \o | ||
jnthn | masak. Making "I didn't really get here in time for morning" sound classy. :P | 10:11 | |
10:14
mtk joined
|
|||
hoelzro | jnthn: yeah, sorry; I missed that message | 10:15 | |
Heather | perl is very very ultra much more readable then rust ... | 10:16 | |
*than | |||
masak senses through the Twitter that something having to do with feminism is happening over at PyCon | 10:20 | ||
Heather | masak ping | 10:21 | |
masak | pong :) | ||
tadzik | I wish it had nothing to do with feminism, actually | ||
masak | so does Su-Shee, it seems, on Twitter. | ||
tadzik | things like this make people not take real problems seriously | ||
masak | I haven't yet found out what the core issue was. | ||
Heather | ++ | ||
tadzik | and the whole thing being ridiculously immature | ||
masak | the funny thing about Twitter: you get the reactions first, and the backstory later. | ||
Heather | masak I've got a question | 10:22 | |
tadzik | tl;dr: two guys privately tell a penis joke to one another; a woman feels enraged, takes a picture and whines on twitter. Guy gets fired | ||
masak: hehe, true that | |||
masak | Heather: then I implore you to ask it. | ||
tadzik: oh, that sounds a bit sad. :( | 10:23 | ||
Heather | masak can I get %*CUSTOM_LIB in bash? | ||
perl6 <site home> in bash | |||
masak | Heather: I dunno. I'm an old-skooler. I know about, and use PERL6LIB. :) | ||
Heather: I'm dimly aware that there's something new-and-fancy called %*CUSTOM_LIB. but I know nothing more :) | |||
tadzik | well, I wouldn't want to work for a company that fires people for telling jokes to their friends | 10:24 | |
whatever those jokes would be | |||
masak | right. | ||
moritz | Heather: SITE=$(perl6 -e 'say %*CUSTOM_LIB<site>') | 10:25 | |
masak | moritz++ | ||
Heather | -_-' | ||
I'LL TRY | |||
tadzik | As a result of her tweets, PyCon staff talked to her, identified the men, and escorted them out of the room | ||
holy batman | 10:26 | ||
ok, I'll not pollute the safe Perl 6 space with those bollocks anymore | |||
masak | Heather: by the way, it's way cool to see you being active, using Perl 6 in various ways. ;) | ||
Heather: we're always looking for new people to lure in^W^Whelp getting started. | |||
GlitchMr | www.xkcd.com/1188/ | 10:27 | |
I wonder how that would look in Perl 6. | |||
... actually, I guess I should try implementing it | 10:28 | ||
masak | tadzik: well, it happens with other serious issues too, like racism: (1) people clamor for recognition about the problem, (2) solution gets institutionalized, (3) solution gets overapplied, draconian, and useless. | ||
tadzik | yeah | 10:30 | |
moritz | there's also this issue that when some crime is prominent on the media, politicians cry for higher punishments for that crime | 10:31 | |
and now they are totally thrown out of proportion, in relation to punishments for crimes of related severity | 10:32 | ||
masak | it's the syllogism of politics: 1. We must do something. 2. This is something. 3. Therefore, we must do this. | 10:34 | |
FROGGS | 4. And we must this in a way ppl recognize we do much about it. | 10:36 | |
GlitchMr | rn: gist.github.com/GlitchMr/5212121 | ||
p6eval | rakudo 8fea53: OUTPUT«(timeout)» | 10:37 | |
..niecza v24-35-g5c06e28: ( no output ) | |||
GlitchMr | Actually, I don't need explicit try { } block here | 10:38 | |
Does gist.github.com/GlitchMr/5212121 look like Perl 6 code? | |||
moritz | GlitchMr: but you need a default { } block inside CATCH | ||
masak | yes, this PyCon incident sends chills down my spine. and now I'm done talking about it, too. | 10:39 | |
moritz | otherwise it rethrows, because no clause caught the exception | ||
GlitchMr | Seems to be an infinite loop in Rakudo | 10:40 | |
std: gist.github.com/GlitchMr/5212121 | |||
Exactly what it should be | |||
p6eval | std 86b102f: OUTPUT«ok 00:00 40m» | ||
GlitchMr | Do I have old Niecza version of something because it doesn't recognize "is Exception"? | ||
moritz wonders if CATCH without 'when' or 'default' should warn | 10:41 | ||
n: say Exception | |||
p6eval | niecza v24-35-g5c06e28: OUTPUT«===SORRY!===Undeclared name: 'Exception' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5)  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37)  at /h… | ||
moritz | GlitchMr: seems that current niecza doesn't have that type either | ||
jnthn | .oO( Unhandled Exception indeed... ) |
||
GlitchMr | I've tried porting www.xkcd.com/1188/ to Perl 6 | 10:42 | |
10:42
Woodi joined
|
|||
Woodi | o/ | 10:42 | |
GlitchMr | Hi, Woodi | 10:43 | |
Woodi | spring coming :) | ||
GlitchMr | I still have snow | ||
jnthn | Fresh snow fell here yesterday | ||
FROGGS .oO( one cup of hot snow per day ) | 10:44 | ||
moritz | this morning it was snowing a bit, but it's too warm for it to stay | ||
jnthn | Spring doesn't seem to be in a hurry to come this year :) | ||
Woodi | I am sure spring is unavoidable... | ||
moritz | as German politicians would say, it's "alternativlos" | 10:46 | |
which means "there's no alternative to it" | |||
and of course when people say that, I can immediately think of alternatives | |||
GlitchMr | perl6advent.wordpress.com/2011/12/...mment-1312 | ||
Why I cannot do that? | |||
It says that $@a is invalid hard reference syntax. | 10:47 | ||
$@b* | |||
$(@b) is still fine. | |||
moritz | r: my (@a, @b); push @a, $@b | ||
GlitchMr | std: my @a; $@a | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Invalid hard reference syntaxat /tmp/HQ5YxLkbi_:1------> my (@a, @b); push @a, $⏏@b expecting any of: postfix infix stopper infix or meta-infix prefix or term prefix or … | 10:48 | |
std 86b102f: OUTPUT«ok 00:00 42m» | |||
moritz | just a rakudo limitation | ||
GlitchMr | I guess it still wasn't ported to Rakudo and Niecza | ||
moritz | n: my (@a, @b); push @a, $@b | ||
p6eval | niecza v24-35-g5c06e28: OUTPUT«===SORRY!===Invalid hard reference syntax at /tmp/ydqKRLemOI line 1:------> my (@a, @b); push @a, $⏏@bParse failed» | ||
jnthn | It used to be invalid in std too. | ||
moritz | aye | 10:49 | |
dalek | p: 653ba0c | jnthn++ | tools/build/Makefile.in: Install nqp_const.pir. |
10:58 | |
jnthn | nwc10: The "take two" of that patch worked for me so I pushedit | ||
nwc10 | I'm still having fun. The patch as-was didn't apply (whitespace) | 10:59 | |
jnthn | huh... | ||
Well, try it with the one I just pash :) | |||
nwc10 | I am | ||
(as of about 5 seconds ago) | |||
jnthn | Thanks :) | ||
Heather wants JIT | 11:01 | ||
tadzik | JIT, or mere speed? :Y) | 11:02 | |
Heather | tadzik more speed :) | ||
tadzik but JIT should be the way | 11:03 | ||
isn't it | |||
nwc10 | JVM has JIT. And this file is not yet empty: github.com/jnthn/nqp-jvm-prep/blob...ocs/LHF.md | ||
more pragmatically, is there a file of "bits of Rakudo that need porting from PIR or C to NQP" ? | |||
but, also, writing Perl 6 code generally is helpful | |||
and perservering after finding bugs and deficiencies | 11:04 | ||
I can't spell | |||
tadzik | also, if you have a server with supreme firepower, that'd be great :) | ||
jnthn | in the LHF file, note that donaldh++ has done much of the ground work for "invokedynamic code gen". But the other two are certainly welcome still todo. | ||
tadzik | (module smoketesting on various rakudo releases) | ||
11:05
sqirrel left
|
|||
tadzik | feather is (was) doing that to some extend, though | 11:05 | |
Heather | #panda github.com/Heather/gentoo-perl6/co...1f17656e47 | 11:07 | |
11:07
cibs joined
|
|||
jnthn | nwc10: The trouble is that it's not really porting so much as designing abstractions. The handful of places we need to do that are hard for *me* to work out, which I suspect means they're not LHF. | 11:08 | |
nwc10 | interesting. thanks | ||
yes. it's like *I* find the perl 5 internals hard. | |||
jnthn | nwc10: The key places that need work are container stuff (which Pm is thinking about lots too at this point), Rakudo/NQP boundary handling, signature binding, and gather/take. | 11:09 | |
One thing I suspect, if I get the initial bits in place, I may be able to delegate somewhat easily is the big integer stuff. | 11:10 | ||
11:15
mtk left
11:16
mtk joined
|
|||
nwc10 | jnthn: Result: PASS | 11:33 | |
jnthn | yay | 11:37 | |
11:53
woosley1 joined
|
|||
pmichaud | good morning, #perl6, briefly | 12:09 | |
masak | pmichaud, briefly! \o/ | 12:11 | |
jnthn | gm, pm o/ | ||
12:17
JimmyZ_ joined
|
|||
Heather finally setup emacs mode fine | 12:18 | ||
12:19
JimmyZ_ is now known as JimmyZ
|
|||
pmichaud | ugh, why is there both a PARROT_LIB_DIR and a PARROT_LIBRARY_DIR and they mean different things? :-/ | 12:20 | |
jnthn | pmichaud: I wondered that. | ||
Heather | r: my $x; { } | ||
p6eval | rakudo 8fea53: ( no output ) | ||
jnthn | pmichaud: But mostly wanted to unbust the build... | ||
(Should be $dayjobbing today, I guess. :)) | 12:21 | ||
Heather | r: my $x; { 5 }; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«(Any)» | ||
pmichaud | sure, unbust the build is important. It just looks weird to have "lib/include" in a path. | ||
not to mention "lib/library" | |||
Heather | r: my $x; { $x = 5 }; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«5» | ||
Heather | ... | ||
o_O | 12:22 | ||
pmichaud | afk, carpool | ||
tadzik | Heather: why would that surprise you | ||
jnthn | Heather: A block written directly where a statement would go is a bear block and just runs | 12:23 | |
Uh, bare, not bear! | |||
tadzik | bear block! | ||
Heather | >_< | ||
jnthn | It still serves as a new lexical scope, however. | 12:24 | |
masak | shown here. | 12:25 | |
r: my $x = 42; { my $x = 5 }; say $x | |||
p6eval | rakudo 8fea53: OUTPUT«42» | ||
Heather | r: my $x = { 5 }; say $x | 12:26 | |
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
Heather | r: my $x = { return 5 }; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
[Coke] | r: sub prefix:<we>($){}; so say we all | ||
p6eval | rakudo 8fea53: OUTPUT«all()» | ||
masak | Heather: that's not a bear block. | ||
[Coke]: :P | 12:27 | ||
Heather | r: my $x => { return 5 }; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Preceding context expects a term, but found infix > insteadat /tmp/1bLhpC6Ug4:1------> my $x =>⏏ { return 5 }; say $x» | ||
Heather | r: my $x = fn => { return 5 }; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«"fn" => Block.new()» | ||
jnthn | .oO( And that's a pear... ) |
12:28 | |
Heather: I think the syntax you're looking for is -> { ... } | |||
Which is a lambda | 12:29 | ||
-> $x { } # lambda taking an arg | |||
masak | r: my $foo = -> $x { say "OH LOL $x }; $foo(42) | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Unable to parse expression in double quotes; couldn't find final '"'at /tmp/dWqHRYu4Ic:1------> foo = -> $x { say "OH LOL $x }; $foo(42)⏏<EOL> expecting any of: postfix» | ||
masak | r: my $foo = -> $x { say "OH LOL $x" }; $foo(42) | ||
p6eval | rakudo 8fea53: OUTPUT«OH LOL 42» | ||
Heather | masak !!! | ||
r: my $foo = -> { say "OH LOL" }; $foo(42) | 12:30 | ||
p6eval | rakudo 8fea53: OUTPUT«Too many positional parameters passed; got 1 but expected 0 in block at /tmp/zXYYgK8u7F:1» | ||
Heather | ... | ||
masak I don't need args | |||
masak | then don't pass them :) | ||
r: my $foo = -> { say "OH LOL" }; $foo() | |||
p6eval | rakudo 8fea53: OUTPUT«OH LOL» | ||
masak | r: my $foo = { say "OH LOL" }; $foo() | 12:31 | |
p6eval | rakudo 8fea53: OUTPUT«OH LOL» | ||
Heather | ... | ||
masak | r: my $foo = { say "OH LOL" }; say "look, not called yet!"; $foo() | ||
p6eval | rakudo 8fea53: OUTPUT«look, not called yet!OH LOL» | ||
Heather | no..... | ||
tadzik | . o O ( cuteness overload ) | ||
masak | Heather: typing '...' into the channel seems to be a habit of people of a Russian persuation. please don't do that -- it's highly frustrating for those of us who like words. | 12:32 | |
Heather | r: my $x = { return "OH LOL" }(); say $x | ||
p6eval | rakudo 8fea53: ( no output ) | ||
Heather | r: my $x = ({ return "OH LOL" }()); say $x | 12:33 | |
p6eval | rakudo 8fea53: ( no output ) | ||
jnthn | masak: ... | ||
masak | jnthn: !!! | ||
Heather | r: my $x = (-> { return "OH LOL" }()); say $x | ||
jnthn | :D | ||
p6eval | rakudo 8fea53: ( no output ) | ||
Heather | masak it's my personal habit, I like ... | 12:34 | |
jnthn | Note that return is associated with a routine, not a block | ||
Heather | r: my $x = (-> return "OH LOL")(); say $x | 12:35 | |
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Invalid typename 'return' in parameter declaration.at /tmp/6OxDTvFtw1:1------> my $x = (-> return⏏ "OH LOL")(); say $x» | ||
masak | Heather: my point is that it's short for "oh, I didn't expect X" or "I kinda expect Y there". but '...' communicates neither X nor Y, and leaves the reader to try to guess your intent. | ||
...which is harder than you may think. :) | |||
r: my $x = (sub { return 42 })(); say $x | |||
p6eval | rakudo 8fea53: OUTPUT«42» | ||
[Coke] thinks masak needs to let some sends go | |||
jnthn always thought it was short for "wtf" but expressed as a regex that would match it :P | |||
Heather | masak sometimes (mostly) it's just emotion | 12:36 | |
masak no sub, I want lambda | |||
masak | Heather: you can have lambda or return, but not both. | ||
Heather: the lambda version of 'return' is called 'leave'. | |||
moritz | fwiw leave() is specced to return values from a block | 12:37 | |
Heather | ml: let x = z = 5; z | ||
moritz | but afaict it's not implemented | ||
masak | rn: my $x = my $z = 5; say $z | ||
p6eval | niecza v24-35-g5c06e28: OUTPUT«Potential difficulties: $x is declared but not used at /tmp/4gK9z9mHwd line 1:------> my ⏏$x = my $z = 5; say $z5» | ||
..rakudo 8fea53: OUTPUT«5» | |||
jnthn | r: sub foo() { my $x = -> { say 'here'; return 42; } }; $x(); say 'not here'; }; foo() | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Variable '$x' is not declaredat /tmp/N3KdRFkZAO:1------> = -> { say 'here'; return 42; } }; $x()⏏; say 'not here'; }; foo() expecting any of: postfix argument list» | ||
jnthn | oops | ||
pmichaud | back again | ||
jnthn | r: sub foo() { my $x = -> { say 'here'; return 42; }; $x(); say 'not here'; }; foo() | ||
masak | I don't like Niecza's "Potential difficulties" warning on unused variables :( | ||
p6eval | rakudo 8fea53: OUTPUT«here» | ||
moritz | masak: me neither | 12:38 | |
masak | it's too common to have those during development, in intermediate stages. | ||
I vote for its removal. | |||
or we explicitly start talking about warnings on two levels: "development" and "production" or some such. | |||
Heather | r: my $x = my $z = 5; say $z | ||
p6eval | rakudo 8fea53: OUTPUT«5» | ||
masak | or maybe "hack" and "commit". | ||
jnthn | Heather: Above is example of how return is related to the enclosing sub, not enclosing block. | ||
Heather | r: my $x = my $z = 5; return $z | ||
p6eval | rakudo 8fea53: ( no output ) | ||
Heather | r: my $x = my $z = 5; return $z; say $x | 12:39 | |
p6eval | rakudo 8fea53: ( no output ) | ||
Heather | r: my $x = {my $z = 5; return $z;} say $x | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Two terms in a rowat /tmp/sP8VFiSMmh:1------> my $x = {my $z = 5; return $z;} ⏏say $x expecting any of: postfix statement end statement modifier statement modifier loop … | ||
Heather | r: my $x = {my $z = 5; return $z;}; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
Heather | though I was starting with it | ||
12:40
census joined,
skids left
|
|||
Heather | r: my $x =-> {my $z = 5; return $z;}; say $x | 12:41 | |
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
Heather | r: my $x =->-> {my $z = 5; return $z;}; say $x | ||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Malformed parameterat /tmp/4qErM0jdZD:1------> my $x =->⏏-> {my $z = 5; return $z;}; say $x expecting any of: scoped declarator constraint prefix or term prefix or meta-prefix … | ||
Heather | r: my $x ==> {return 5}; say $x | 12:43 | |
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Preceding context expects a term, but found infix => insteadat /tmp/RpObezJ2dZ:1------> my $x ==>⏏ {return 5}; say $x» | ||
12:45
dwoldrich left
|
|||
JimmyZ | r: my $x <== {return 5}; say $x | 12:45 | |
p6eval | rakudo 8fea53: OUTPUT«» | ||
Heather | JimmyZ <== ? | ||
JimmyZ | r: say my $x <== {return 5}; | 12:46 | |
p6eval | rakudo 8fea53: OUTPUT«(Any)Block.new()» | ||
JimmyZ | r: say {return 5}; | 12:47 | |
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
JimmyZ | r: say my $x | ||
p6eval | rakudo 8fea53: OUTPUT«(Any)» | ||
jnthn | Heather: ==> and <== are feed operators, though using them with scalars is a bit curious | ||
Heather | r: say ({return 5})(); | ||
p6eval | rakudo 8fea53: ( no output ) | ||
jnthn | Heather: They let you write stuff as a pipeline | ||
r: my @a = 1..100; @a ==> grep(*.is-prime) ==> map(2 * *) ==> say | 12:48 | ||
p6eval | rakudo 8fea53: OUTPUT«4 6 10 14 22 26 34 38 46 58 62 74 82 86 94 106 118 122 134 142 146 158 166 178 194» | ||
Heather | r: my $x <== { say 1; return 5}; say $x | 12:49 | |
p6eval | rakudo 8fea53: OUTPUT«» | ||
Heather | r: my $x <== { say 1; return 5}; say $x() | ||
p6eval | rakudo 8fea53: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Array' in block at /tmp/pwcKUmTrz7:1» | ||
jnthn | I...have no idea what that just did :) | ||
std: my $x <== { say 1; return 5}; say $x | 12:50 | ||
p6eval | std 86b102f: OUTPUT«ok 00:00 44m» | ||
jnthn | But apparently it's valid syntax... | ||
pmichaud looks around for wormholes. | |||
Heather | r: my $x <-= {return 5}; say $x | 12:51 | |
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Preceding context expects a term, but found infix -= insteadat /tmp/PfIoJtnDuz:1------> my $x <-=⏏ {return 5}; say $x» | ||
Heather | r: my $x <== {return 5}; say $x.WHAT | 12:52 | |
p6eval | rakudo 8fea53: OUTPUT«(Array)» | ||
Heather | r: my $x <== {return 5}; say $x[0] | ||
p6eval | rakudo 8fea53: OUTPUT«Block.new()» | ||
Heather | r: my $x <== {return 5}; say $x[0]() | ||
p6eval | rakudo 8fea53: ( no output ) | ||
Heather | O_O | ||
r: my $x <== { say 1; return 5}; say $x[0]() | 12:53 | ||
p6eval | rakudo 8fea53: OUTPUT«1» | ||
Heather | -_-' | ||
jnthn why array? | |||
jnthn | Heather: As I tried to show you, you can't use return to return a value from a simple closure/block. It's for returning from the currently enclosing sub. | ||
r: my $x <== { say 1; 5}; say $x[0]() | |||
p6eval | rakudo 8fea53: OUTPUT«15» | 12:54 | |
Heather | r: my $x <== { say 1; return 5}; say $x[1]() | ||
p6eval | rakudo 8fea53: OUTPUT«No such method 'Any' for invocant of type 'Parcel' in block at /tmp/nanerF2QHa:1» | ||
[Coke] | I don't dislike the unused vars enough warnings enough to lobby for their removal from niecza. seems harsh. | ||
jnthn | Heather: Array because if a variable is the target of a feed operator, it pushes the results onto it. The first push vivifies an Array there. | ||
Heather | I see so it's now what I expect | ||
jnthn | Heather: The idea of the ==> and <== is that you have a list of things that you pipe through a series of operations, getting a list of things out at the end. | 12:55 | |
Heather | r: my $x = { say 1; return 5}; say $x() | ||
p6eval | rakudo 8fea53: OUTPUT«1» | ||
jnthn | I that example I think you are returning from the program as a whole. We should probably complain about that. | ||
pmichaud | is the unused var message something that can be controlled via lexical pragma? | ||
Heather | ok... I keep this try for tomorrow | ||
see you | |||
masak | o/ | 12:56 | |
jnthn | пока ) | ||
pmichaud | if yes, then just put that lexical pragma into the p6eval setting (a la RESTRICTED) | ||
12:57
Heather left
|
|||
JimmyZ | r: my $x = -> { return 5 }; say $x() | 12:58 | |
p6eval | rakudo 8fea53: ( no output ) | ||
JimmyZ | can't use return here? | ||
moritz | JimmyZ: we've had the discussion in the backlog already | 12:59 | |
JimmyZ couldn't understand it | 13:01 | ||
[Coke] | (and I thought we were trying to be stricter; the unused warnings seem like a logical extension of this to me) | ||
JimmyZ | I meant jnthn++'s discussion | 13:02 | |
moritz | [Coke]: in theory I agree. But in practise they are just annoying | ||
JimmyZ: then I don't understand why you ask again what has already been answered | |||
[Coke] | moritz: I think not understanding something is a good reason to ask about it again. | 13:03 | |
jnthn | JimmyZ: The most important bit of the backlog was this line: | ||
r: sub foo() { my $x = -> { say 'here'; return 42; } }; $x(); say 'not here'; }; foo() | |||
p6eval | rakudo 8fea53: OUTPUT«===SORRY!===Variable '$x' is not declaredat /tmp/Vi2BZFQFi3:1------> = -> { say 'here'; return 42; } }; $x()⏏; say 'not here'; }; foo() expecting any of: postfix argument list» | ||
jnthn | darn | ||
JimmyZ | moritz: I can't understand the answer, since I'm not good at english enough ;) | ||
jnthn | r: sub foo() { my $x = -> { say 'here'; return 42; }; $x(); say 'not here'; }; foo() | ||
p6eval | rakudo 8fea53: OUTPUT«here» | ||
jnthn | JimmyZ: Notice how the "return" is returning from the sub foo, not from the pointy block. | 13:04 | |
pmichaud | JimmyZ: 'return' only works inside of a Routine, such as a 'sub' or a 'method'. A pointy block is not a sub or method. | ||
jnthn | r: sub foo() { my $x = -> { say 'here'; return 42; }; $x(); say 'not here'; }; say foo() # maybe also helps | ||
p6eval | rakudo 8fea53: OUTPUT«here42» | ||
13:04
rindolf left
|
|||
pmichaud | r: my $x = sub { return 5 }; say $x(); | 13:05 | |
p6eval | rakudo 8fea53: OUTPUT«5» | ||
13:05
arnsholt joined
|
|||
JimmyZ | oh, I thought it works in the pointy block | 13:06 | |
pmichaud | you can have a 'return' in a pointy block, if the pointy block is in a sub. In that case, the 'return' returns from the outer sub, not the pointy block. | 13:07 | |
but pointy blocks never use 'return' | |||
JimmyZ | thanks, the second example is very great | 13:10 | |
with pmichaud++'s explanation | |||
13:15
rindolf joined
13:16
bluescreen10 joined
13:23
brrt joined
13:42
PacoAir joined
13:48
jokar joined
13:52
dayangkun joined
13:53
jokar left,
dayangkun left
13:57
jaldhar joined
13:58
Celelibi left
13:59
uasi left
|
|||
masak | I just saw the ADT email on p6l. I feel quite well-equipped to answer that one. but it may be a few hours before I have a slot to do so. | 14:00 | |
pmichaud | masak +1 | ||
masak | (basically, I think Perl 6 is quite well-posed to actually get ADTs at some point. but they wouldn't be really useful unless they had sufficient support in the compiler.) | ||
that is, much of it can be provided by a module. maybe not all of it. | 14:01 | ||
14:01
Celelibi joined
|
|||
pmichaud | I'm guessing the meaning of "abstract data type" has changed since I was in college, then. :) | 14:01 | |
jnthn | masak: Is the "support in the compiler" mostly about type-related things? | 14:02 | |
masak | jnthn: yeah. | 14:03 | |
an ADT would be its own thing, much like an enum type. | |||
jnthn | masak: The MOP stuff lets you override type checking. | ||
Dunno how far that gets you :) | |||
But it already covers classes/roles/enums/subsets etc. :) | |||
masak | it sure helps. | ||
14:03
skids joined
|
|||
masak | the help from the compiler I'm thinking of is "SORRY, this given statement doesn't cover all constructors, plz fix" | 14:04 | |
pmichaud: data Tree a = Branch (Tree a) (Tree a) | Leaf a | |||
pmichaud: that's an ADT. | |||
14:04
drbean left
|
|||
jnthn | masak: That actually (not joking :)) sounds like something you could do with a macro :) | 14:05 | |
14:05
Celelibi left
|
|||
masak | jnthn: :) | 14:05 | |
jnthn: how do you mean? | |||
pmichaud | masak: yeah, when I was in college, "abstract data type" meant "any data type you could implement that wasn't part of the core language" | ||
masak | 'Tree' is the type, 'Branch' and 'Leaf' are the two constructors with two parameters and one parameter, respectively. | ||
jnthn | pmichaud: I think this is about the Haskell/ML meaning of it. | 14:06 | |
masak | pmichaud: yeah. this is a narrower definition. | ||
the nice thing, of course, is that you then use the constructors both for value construction and for value destructuring. | |||
in theory, we have enough puzzle pieces in place to do destructuring with given/when. | |||
14:07
drbean joined
|
|||
masak | I'd like to put together a nice reply showing that. | 14:07 | |
14:07
Celelibi joined
|
|||
jnthn | masak: I'm not quite sure exactly how to formulate it but it feels like if you had a pair of macros, one for the overall constructs and another for each of the deconstructors, provied the other one can see what's on the inside...you may be good. | 14:07 | |
masak | (but I'd need more presence of mind than the current $work load affords me) | ||
jnthn: interesting. | 14:08 | ||
jnthn | Oh, or maybe you can make it drop out of given/when :) | ||
masak | that part I'm not sure about. | ||
jnthn | Well, what you kinda want is a way to catch falling out of the given without having hit a when? | ||
masak | but it seems to me that smartmatching basically already does destructuring. | ||
jnthn: no, definitely should be a compile-time thing. | 14:09 | ||
jnthn | ah | ||
masak | jnthn: answering the question "do we cover all the cases?" | ||
jnthn | Then you need to use something compile time, which is meta-programming or macros or something similar :) | ||
masak | and yes, I know that a general 'given' is basically Turing-complete. I'm talking about a much simpler kind. most of the 'given' statements on ADTs will be really simple, I think. | ||
14:14
xilo left
14:23
Psyche^ joined
14:24
lustlife left,
Patterner left,
Psyche^ is now known as Patterner
14:26
SmokeMac_ joined
|
|||
masak | here, I put together a proof-of-concept: gist.github.com/masak/5213423 | 14:26 | |
it doesn't quite get the type parameter 'a' in there. | 14:27 | ||
but the ease with which this bit gets us a lot of nice things makes me hopeful. | |||
maybe parameterized roles can step in there instead of subtypes, and get us the parameterized type, too. | |||
14:29
SmokeMachine left
14:30
SmokeMachine joined,
SmokeMac_ left
|
|||
timotimo | masak: isn't using hashes for that ridiculously overheady? | 14:32 | |
also, i was very confused to read "perl6 can do AST!" and thought "it had abstract syntax trees for ages!" ;) | |||
(but then of course i realised that this refers to algebraic subtypes) | |||
hm, seems to me it should have said "algebraic data types" instead? but what do i know! | 14:33 | ||
moritz | timotimo: yes, I thought so too | ||
an "abstract data type" is just a type that you can't make objects of | |||
timotimo | oh | 14:34 | |
did i say abstract there? | |||
14:34
JimmyZ left
|
|||
moritz | timotimo: you didn't; Philippe did | 14:35 | |
(on p6l) | |||
timotimo | ah. yes, i don't read that. i wonder if i should? | ||
masak | timotimo: oops. ADT. :) | ||
14:36
xilo joined
|
|||
masak | gist fixed. :) | 14:36 | |
14:36
SmokeMac_ joined
|
|||
timotimo | hm, it's mostly github commit mails | 14:38 | |
moritz | yes; used to be much higher traffic | 14:39 | |
timotimo | at least they are not being discussed, because it would be easy to miss those discussions unless you are on the list and github already has a commit discussion function already | ||
moritz | but also high noise-to-signal ration | ||
*ratio | |||
14:39
SmokeMachine left,
PacoAir left
|
|||
moritz | I just realize that the normal defintion is "signal to noise" and not "noise to signal", because a signal of 0 would make it undefined | 14:40 | |
whereas a noise of zero simply doesn't occur :-) | 14:41 | ||
14:41
PacoAir joined
|
|||
masak | :P | 14:42 | |
jnthn | :) | ||
masak | sure a noise of zero occurs. just not in engineering contexts. | ||
14:43
sqirrel joined
|
|||
masak | here is another version, for those of you who don't like hashes: gist.github.com/masak/5213563 | 14:43 | |
either take on ADTs has its own pros and cons. neither can be said to get it quite right, especially syntactically. | 14:44 | ||
but it's an interesting thought experiment. | |||
especially thinking about what we can do to make it easier to talk about sum types and ADTs. | |||
felher | Oeh, we are speaking of _Algebraic_ Data Types, right? Not Abstract Data Types? | ||
masak | that's the one! | 14:45 | |
yeah, my terminology is mussed up. sorry. | |||
algebraic data types. | |||
timotimo | masak: how do you feel about building macros to create algebraic data types? | 14:46 | |
masak | I'm all for it. | ||
timotimo | should i try? | ||
masak | yes, please. | ||
timotimo | okay, i'll have to experiment a bit, i suppose | ||
it should serve as a so-so benchmark for how easy it is to get macros, i suppose :) | |||
14:47
brrt left
|
|||
timotimo | hm, the first stumbling block: how do i do a repetition in a macro? | 14:47 | |
felher | Uhh, algebraic data types via macros. How exciting :) | ||
moritz | timotimo: just like outside a macro | ||
timotimo | that's not what i meant :) | ||
i mean something like quasi { class {{{ $classname }}} { has $.{{{ $names[0] }}}; has $.{{{ $names[1] }}}; ... } <- this kind of repetition | 14:48 | ||
felher would really like to read backlog and join the discussion, but he has to do $work :/ | |||
bye folks. | |||
masak | o/ | ||
timotimo | viel erfolg, felher :) | ||
masak | timotimo: you way overestimate where you can put unquotes in a quasi block. :) you're not the first. | 14:49 | |
timotimo | hehe. | ||
so, can i somehow use a metaclass to create a class in code without macros? | 14:50 | ||
jnthn | Sure | ||
timotimo | is that somewhere in the specs already? | ||
masak | that's what the compiler does, after all :) | ||
I know it's in some on jnthn++'s talks... | |||
jnthn | Maybe but you may have an easier time following the example in one of my talks. | ||
timotimo | haha | ||
yeah, sure. what's the title? | 14:51 | ||
jnthn | it's jnthn.net/papers/2012-gpw-meta-programming.pdf | 14:52 | |
timotimo | aaw, no recording? | ||
jnthn | No, sadly not | ||
I gave it at a couple of places but I don't think either did recording. | 14:53 | ||
timotimo | okular claims i've already skipped through the slides before | ||
don't know if i actually paid enough attention | |||
jnthn | The section you'll find interesting here is the bit where I take a bunch of JSON and construct classes based on it. | 14:54 | |
timotimo | oh, that seems deceptively easy | ||
yes, i've just reached it | |||
masak | jnthn talks. they make things deceptively easy :) | ||
timotimo | masak: will macros be 'enhanced' to accept unquotes in more places or was my usage just way too optimistic? | 14:55 | |
jnthn | masak: Well, making things complex would be too easy... :P | ||
timotimo | hah, with an "is parsed" macro i could even make it syntactically compatible to haskell data definitions :D | 14:56 | |
moritz | quick, implement "is parsed" macros :-) | ||
jnthn | Well, I did to ParseShared refactor already that was a pre-req for them... :) | 14:57 | |
masak | timotimo: it could go either way. TimToady has been mumbling about an unquotes refactor, which would expand the power of unquotes a bit. but we only got to the conceptual problems of those, not to an actual solutions. :) | 14:58 | |
solution* | |||
timotimo | right. so for something like my example, maybe an unhygienic/text macro would be more suitable | 14:59 | |
masak | possibly. | ||
which we don't implement yet. | |||
Pugs does. :) | |||
jnthn | Note that text macros are easier than is parsed in a sense. | 15:00 | |
moritz | I thought it was the other way round :-) | ||
masak | (note that "unhygienic" and "text" are distinct, but intersecting, types of macros) | ||
moritz | with "is parsed" you "just" have to hand control over to another regex, and then back to the current slang after that | ||
15:01
SamuraiJack left
|
|||
moritz | but with macros that return text, you have to modify the current source code, which is a Str, which is immutable | 15:01 | |
masak | right. | ||
moritz++ | |||
those two are basically orthogonal. | |||
jnthn | It's not quite that bad. :) | ||
TimToady | and, in fact, sometimes you would like to combine them | ||
masak | aye. | 15:02 | |
jnthn | Because $!target lives in ParseShared | ||
And so you just need to update that...in theory. In practice, things further up may have the thing cached in a register. That's the tricker part I guess... | |||
masak | what if you apply a textual macro, update $!target, and then backtrack over the macro application? | 15:03 | |
masak wanted to end that sentence with "!!!?!?", but refrained :) | |||
TimToady | you basically need a stack of strings | ||
you always parse the top of the stack, and when you hit the end, pop | 15:04 | ||
masak | oh, so backtracking over macros is part of the plan. gotcha. | ||
TimToady | yes, textual macros require reparse | ||
masak | looking forward to playing around with them, as soon as we find the suc^Whero who implements them! :D | ||
TimToady | otoh they don't require you to tell them what state they are at the end | ||
jnthn runs and hides :) | 15:05 | ||
masak | because you get that from the parser that reparsed them? | ||
TimToady | nod | ||
masak | wow, that is so awesome. | ||
FROGGS .oO( you need a bag of string, a paperclip and a chewing gum... ) | |||
*strings | |||
-.- | |||
TimToady | whereas handing back a "preparsed" AST the parse has to be told what that means | ||
masak | *nod* | 15:06 | |
jnthn | FROGGS: That sounds more like instructions for making a bong. Which may be a prereq for this... :P | ||
TimToady | which is why syntactic categories get involved | ||
FROGGS | hehe | ||
masak | jnthn: *lol* | ||
FROGGS was thinking of mcgyver | |||
moritz | and now we get into syntactic category theory :-) | ||
15:06
pmurias joined
|
|||
TimToady | I got enough grief for naming p5's lexer "toke.c" | 15:06 | |
masak | TimToady: at some point we should have a deep talk about syntactic categories, spec refactors, and funny-looking Unicode sigils. :) | ||
maybe not today, though. | 15:07 | ||
15:07
am0c joined,
SamuraiJack joined
|
|||
pmurias | FROGGS: have you seen github.com/fglock/Perlito/tree/mas...1-perlito? | 15:07 | |
TimToady | well, I'm pretty much guaranteed to be stupider next week, so maybe you should attack then :) | ||
masak | TimToady: when I read toke.c, I can't help but think that the name isn't all that bad a description. :P | ||
FROGGS | pmurias: I see it right now... | ||
masak | TimToady: noted. let's aim for next week. :) | ||
FROGGS | pmurias: looks like an awesome testsuite for me :o) | 15:08 | |
masak | funny thing with talking about macros with other communities: the first phase of the discussion is bound to be "oh, so *that's* what you guys mean by terms X, Y and Z. that explains why your factoring looks so bizzarre to me." | 15:09 | |
this has happened so far when I've been interacting with the Scala community, and with the Scheme community. | 15:13 | ||
our approach looks strange-ish to them, and vice versa. | |||
but the Scheme guys have some insight which I need to grok going forward. it seems important for hygiene. | 15:14 | ||
moritz | .oO( consistently strange ) |
||
masak | :P | ||
timotimo | gist.github.com/timo/5c8544ec4e8166041e86 - seems good so far? | ||
15:15
SmokeMachine joined
|
|||
masak | timotimo: it seems to me that use of parens is a bit foreign to Perl. | 15:16 | |
and you could get rid of a lot of them by using commas instead. | |||
timotimo | "haskell compatible synatx", but yeah, good point. | ||
masak | something like 'adt Tree = Tree, Tree | Str' | ||
timotimo | yeah | 15:17 | |
masak | and 'adt Tree[A] = Tree[A], Tree[A] | A' | ||
timotimo | the % modifier for regexes makes me so happy right now | ||
masak | feels easier on the eye. | ||
yeah, % rocks :) | |||
timotimo | it rocks so hard! | ||
hard like i suppose a neutron star would feel | 15:18 | ||
will we ever find out what the hardness number of neutron stars is? :D | |||
15:18
SmokeMac_ left
|
|||
masak | not to mention the rockness number. | 15:19 | |
timotimo | this is strange. why are both parts of the alternation called 0? is that just "the first of 1 parts inside the alternation"? | 15:20 | |
timotimo donates more dots | |||
moritz | in (a)|(b), both parens produce matches in $0 | ||
since they can't both match at same time, why would they occupy different capture numbers? | 15:21 | ||
TimToady | if you want different behaviors, you should probably be using named captures instead anyway | ||
timotimo | oh, that's not what i meant. i should clean up my code and show it | ||
i actually have a rule called "alternation", which isn't helpful :D | |||
TimToady | Who's on first? | 15:22 | |
masak | yes, that's confusing levels. :) | ||
timotimo | hm. suggest a good name for the part after the = with the | in between for the type definition? | 15:23 | |
"definers"? :) | |||
TimToady | masak: otoh, if you wait till next week, I might have a morphine-induced visit to Xanadu, and come back with a completely different design for Perl 6 :) | 15:24 | |
15:25
woosley1 left
|
|||
TimToady | timotimo: the union? | 15:25 | |
15:25
kaleem left
|
|||
timotimo | tee hee | 15:25 | |
|| <.die("the union went on strike")> | |||
masak | TimToady: doesn't sound like such an unusual week. :P | ||
masak hides | |||
I meant the redesign, not the morphine-induced visits to Xanadu... :) | 15:26 | ||
TimToady | yes, would just as soon do without the morphine; makes me itch | ||
colomon | "In Xanadu did TimToady / A stately parser-dome decree / Where Mu, the sacred river, ran / Through classes measureless to man / Done to a sunless C" | ||
*Down | |||
masak | no, leave "Done" in there :) | 15:27 | |
makes me feel better | |||
colomon | maybe it was a Freudian slip. | 15:28 | |
TimToady | parser-DOM maybe :) | ||
timotimo | hm. what's the simplest way to force whitespace matches "between" matches of subrules? | 15:29 | |
something like params => 「a, b 」 from a rule like [ <ident> { @.typevars.push($0) }]* % ',' | 15:30 | ||
i get ident => "a" and ident => "b" just fine. maybe i should just let it rest, because it'll work | 15:31 | ||
15:32
arlinius joined
|
|||
masak | timotimo: another thing to think about is whether we wouldn't want to call out type parameters explicitly, because we do in other places. | 15:35 | |
timotimo: something like 'adt Tree[::A] = Tree[A], Tree[A] | A' | |||
calling it out the first time is probably enough. | |||
it's a kind of declaration. | |||
a nice aspect of that is that it doesn't have to be a type. so you can do other things as well. | 15:36 | ||
timotimo | yes, i was just thinking about that | ||
there's still some confusion for me. things like naming. if i have Tree, Tree, i'll have to translate that somehow into perl6. would i just have those as an array/tuple? | 15:37 | ||
doesn't feel right to me | |||
neither does $.Tree1 $.Tree2 and $.A | |||
masak | see my two examples. | ||
timotimo | so maybe something like adt Tree[::A] = Left=Tree[A], Right=Tree[A] | Cargo=A | 15:38 | |
masak | you should be able to translate straight down to my second one, the one with classes. | ||
timotimo looks again | |||
masak | timotimo: I think conceptually, it's a tuple, so they are unnamed. they get nice names during destructuring. | ||
timotimo | oh, i totally forgot how those adts actually work in haskell | ||
i forgot about how you specify the name of the deconstructor | 15:39 | ||
masak | just like you specify the constructor. | ||
that's the nice thing. | |||
timotimo | as always, it's best to know what you actually want to accomplish before trying to do anything | ||
yes. that part was completely missing for half my examples | 15:40 | ||
masak | having the name of the constructor in the adt declaration is *much* more important than naming the parameters. | ||
because those are what you then smartmatch/deconstruct on. | |||
timotimo | yes | 15:41 | |
i think i know where i thoughto'd | |||
15:41
grondilu joined
|
|||
masak | hm, maybe 'data' is a nicer keyword for all this than 'adt'... :) | 15:42 | |
grondilu | rn: $_ = "ffffooooo"; s:g/(.)+/$0.join()/; .say | ||
p6eval | rakudo 8fea53, niecza v24-35-g5c06e28: OUTPUT«ffffooooo» | ||
timotimo | yes. just like they did in haskell :) | ||
grondilu was expecting(hoping) for "fo" | |||
timotimo | grondilu: not sure how you get to that? | 15:43 | |
rn: $_ = "ffffooooo"; s:g/(.)+/$0.uniq.join()/; .say | |||
p6eval | niecza v24-35-g5c06e28: OUTPUT«fo» | ||
..rakudo 8fea53: OUTPUT«ffffooooo» | |||
jnthn | grondilu: $0 refers to the array of captured things | ||
timotimo | oh, whoops! :D | 15:44 | |
masak | why does rakudo get that one wrong? | ||
grondilu | jnthn: oh, makes sense. | ||
timotimo | rn: $_ = "ffffooooo"; s:g/(.)+/$0.perl.say/; .say | ||
p6eval | rakudo 8fea53, niecza v24-35-g5c06e28: OUTPUT«f f f f o o o o o.perl.say» | ||
jnthn | masak: It may be right. | ||
masak: Rakudo does === semantics in uniq, as per spec. | |||
masak | either Niecza or Rakudo gets it wrong. | ||
timotimo | er, that's not what i meant to do. i guess i need ()? | ||
jnthn | masak: iirc, Niecza does not. | 15:45 | |
timotimo | rn: $_ = "ffffooooo"; s:g/(.)+/$0.perl().say()/; .say | ||
p6eval | niecza v24-35-g5c06e28: OUTPUT«(#<match from(0) to(1) text(f) pos([].list) named({}.hash)>, #<match from(1) to(2) text(f) pos([].list) named({}.hash)>, #<match from(2) to(3) text(f) pos([].list) named({}.hash)>, #<match from(3) to(4) text(f) pos([].list) named({}.hash)>, #<match from(4)… | ||
..rakudo 8fea53: OUTPUT«(Match.new(orig => "ffffooooo", from => 0, to => 1, ast => Any, list => ().list, hash => EnumMap.new()), Match.new(orig => "ffffooooo", from => 1, to => 2, ast => Any, list => ().list, hash => EnumMap.new()), Match.new(orig => "ffffooooo", from => 2, to => 3, ast =… | |||
jnthn | masak: So it's probably doing "do they stringify the same" | ||
masak | jnthn: but === semantics for matches has eq semantics, surely? | ||
in that case, why do the strings repeat? | |||
timotimo | masak: this should be correct, right? Tree[::A] = Branch Tree A, Tree A | Leaf A | 15:46 | |
jnthn | masak: Are two matches that have a different structure but match the same string ===-equivalent? | ||
timotimo | oh, actually not. | ||
jnthn | masak: It's not obvious (to me) that we want === on Match objects to mean that. I'm fine if we go that way, just saying it may not be the whole picture. | ||
timotimo | Tree[::A] = Branch Tree[A], Tree[A] | Leaf A should be correct, though | ||
masak | jnthn: *nod* | 15:47 | |
15:47
kaare_ joined
|
|||
masak | timotimo: that looks nice :) | 15:47 | |
timotimo | now if only it would parse :D | ||
jnthn | grondilu: If you want the first thing matched, $0[0] is probably enough. | 15:48 | |
timotimo | oh. '[' ~ ']' .* will also require [] if .* matches "", so that would be the problem. | ||
masak | .+, then :) | 15:49 | |
timotimo | gist.github.com/timo/5c8544ec4e8166041e86 - this is my current version. is the @.typevars thing a good idea to put there? | 15:51 | |
masak | timotimo: looks cool. :) | 15:52 | |
timotimo | so, do i do macro create_adt is parsed /<hs_adt>/? | 15:53 | |
masak | yes, but 'is parsed' is NYI. | 15:54 | |
timotimo | ... d'oh :) | ||
do you already have a rough idea when you'll tackle that? | |||
is there such a thing as parametric classes? or only parametric roles? | 15:57 | ||
masak | hey, I'm the AST macro guy. | 15:58 | |
you must have me confused with the textual macro guy. | |||
timotimo | hehe, ok | ||
masak | only parametric roles. | ||
timotimo | so if create_adt takes the definition as a string, it'll actually have to return a sub that creates instantiations of the roles or something like that? | ||
16:00
cogno joined
|
|||
masak | well, I kinda liked your idea of creating classes on-the-fly using macros and the MOP. | 16:05 | |
you could actually get pretty far doing that with the current macro system in Rakudo... | 16:06 | ||
timotimo | i liked it, too and i still want to do it. but i don't yet see how to tackle type parameters in there | ||
16:06
cogno left
|
|||
masak | ... you just don't get to use 'is parsed'. sorry. :/ | 16:06 | |
yeah, type parameters are an interesting problem there. | |||
I'll think a bit about it. | |||
timotimo | cool :) | ||
masak | you've definitely helped sharpen my thoughts on this. | ||
timotimo | i think i'll do some AFK thinking for a few minutes | ||
masak | if I find some solution involving macros, I'll definitely include it in my email response to the guy. | 16:07 | |
16:07
zby_home_ joined
|
|||
jnthn | Can you describe the type parameters issue succinctly? | 16:07 | |
jnthn can't look at the whole ADT thing but may be able to help on that piece | |||
timotimo | jnthn: i want to have a sub where you put in a declaration like "Either[::A, ::B] = Left A | Right B" and you get classes Either, Left and Right out that you can use together kind of like you would in haskell | ||
16:07
cogno joined
|
|||
timotimo | (later it would be cool to have it as an "is parsed" macro, so you can actually write something like "data Either[..] = ..." | 16:08 | |
but that's not the issue right now) | |||
moritz | well, you can't easily do that with a sub | 16:10 | |
because you need to modify the caller's lexpad to install the names | |||
or at least put them into GLOBAL at compile time | 16:11 | ||
and at runtime that's too late | |||
jnthn | moritz: ooc, what is the timing of the EXPORT sub being run when you use a module? | ||
timotimo | i was going to use the "package EXPORT::DEFAULT" thing and BEGIN blocks like suggested in jnthns talk slides | ||
jnthn | moritz: Does it get run, and then we look at EXPORT:: package to pull in symbols? | ||
timotimo | but yeah, i see why that wouldn't work if you use that package like a package | ||
moritz | jnthn: after the 'use' statement has been parsed, and before the next line is being parsed, iirc | ||
timotimo | as in use ADT; adt("Either = ...") | 16:12 | |
jnthn | moritz: Yes, I meant a little more fine-grained. Do we still import any symbols at all in the "call EXPORT" mode? | ||
timotimo | maybe it'd have to return a package or something? | ||
moritz | jnthn: I don't think so | ||
16:13
SamuraiJack_ joined
|
|||
jnthn | moritz: OK. I guess what I'm really wondering is what the API is for the EXPORT sub to actually specify what should get installed :) | 16:13 | |
16:13
SamuraiJack left
|
|||
moritz | jnthn: there's none yet | 16:13 | |
jnthn | Ah. OK | ||
'cus if there was you could write | |||
moritz | basically EXPORT subs were a quick hack to get 'use lib ...;' working :-) | ||
jnthn | use ADT (...some expression to specify it here); | ||
timotimo | jnthn: oh, that's a good point! | 16:14 | |
jnthn | And it would build the requires things in the module's EXPORT and hand them back :) | ||
where "hand them back" means "specify them for installation" :) | |||
moritz | maybe EXPORT should just return a hash | ||
or list of Pairs or so | |||
jnthn | Something that works like a hash feels fine to me | 16:15 | |
Particularly 'cus then you could instead return a Stash :) | |||
FROGGS | what is :s in '<sym> :s <xblock>' ? | ||
moritz | that was in the back of my mind too | ||
timotimo | how does the EXPORT thing work? do i put a sub EXPORT into my package and it'll be called by the use statement? | ||
moritz | FROGGS: it enables sigspace | ||
16:15
cogno left
|
|||
jnthn | sub EXPORT() { $*OS ~~ /Win32/ ?? WindowsThings !! OtherThings } | 16:15 | |
moritz | (ie whitespace implicitly calls the <.ws> routine) | ||
kresike | bye folks | 16:16 | |
FROGGS | moritz: thanks | ||
moritz | timotimo: yes. Take a look at lib/lib.pm6 in rakudo | ||
16:16
kresike left
|
|||
moritz | currently you have to put EXPORT after the module though | 16:16 | |
timotimo | and that's just a barely working hack at the moment? | ||
moritz | so file A.pm: module A { ... }; our sub EXPORT(*@args) { } | ||
timotimo | barely working == just enough to make this code work? | ||
moritz | timotimo: correct | ||
16:17
cogno joined
|
|||
timotimo | right. | 16:17 | |
moritz | that would be an interesting thing to expand though | ||
and not too much black magic required | |||
timotimo | interesting ... how complex is this issue? | ||
are the specs clear yet, except for the return thing mentioned above? | |||
moritz | no, there's not much specs | 16:18 | |
but just implementing the "EXPORT returns a hash, and the caller installs the pairs into the lexpad" would be very useful | |||
16:19
gdey joined
|
|||
moritz | src/Perl6/Grammar.pm line 1244 | 16:19 | |
timotimo | i would have to work on EXPORTHOW? | ||
oh, in the grammar | 16:20 | ||
all right then | |||
jnthn | No EXPORTHOW seems unrelated to this. | ||
16:20
roland_ joined
|
|||
timotimo | i suppose everything i'll have to know to make the installation of symbols work is in this do_import method already? | 16:20 | |
moritz | timotimo: not quite (more) | 16:21 | |
timotimo: Perl6::World has a 'method import', which does all the hard work | |||
method import($/, $package, $source_package_name) { | |||
timotimo | ah, right, i see that now. | ||
16:21
cogno left
|
|||
moritz | you'd just have to modify it to accept a hash of things to import, rather than $package | 16:21 | |
timotimo | i suppose do_import is the only caller of the import method? | 16:22 | |
moritz | method import also does my %stash := $package.WHO; and then works on %stash | ||
timotimo: correct | |||
timotimo | seems like a doable thing | ||
moritz | so you to change the caller locations to do $*W.import($/, $package.WHO, ...) instead of $*W.import($/, $package) | ||
timotimo | so i'll pretty much just have to move the .WHO out of import and into do_import for most cases | ||
moritz | yes, plus one other bit | 16:23 | |
you have to make sure that Perl 6 types and NQP types aren't conflated | |||
ie sub EXPORT will return a Perl 6 hash | |||
timotimo | nqp::decont will do it for me, right? | ||
moritz | but ig might be that $*W.import wants an NQP hash (I'm not quite sure here) | ||
no | |||
you'll need to access the $!storage attribute from EnumMap (which is a parten class of Hash) | 16:24 | ||
*parent | |||
timotimo | OK, i'll investigate that later. first i'll have to errands. perhaps i'll commute to my hackspace to work, too :) | ||
16:36
PacoAir left
|
|||
dalek | kudo/tmp_highfive: 2db8483 | (Tobias Leich)++ | src/Perl6/ (3 files): if/unless-conditions ok |
16:37 | |
kudo/tmp_highfive: 0633b5a | (Tobias Leich)++ | src/Perl6/P5Grammar.pm: changed last accourance of pblock to sblock, so that else-blocks are fine now |
16:43 | ||
masak sent a reply to Philippe on p6l | 16:46 | ||
16:47
SunilJoshi joined
|
|||
dalek | kudo/tmp_highfive: 8956de4 | (Tobias Leich)++ | src/Perl6/P5Grammar.pm: remove required whitespace to allow proper elsif-blocks |
16:50 | |
census | My deepest apologies if this post is improper. Does anybody know any alternatives to TOR? | 16:55 | |
16:58
dwoldrich joined
|
|||
TimToady | PENGUIN? | 16:58 | |
BAIN? | 16:59 | ||
masak | census: you might get fuller answers if you ask where they actually do such stuff. :) | ||
census | and which IRC channel would that be? I did not know there is a TOR channel. I tried /msg alis list *TOR* | ||
masak | census: freenode tells me there's a #tor channel at irc.oftc.net | 17:00 | |
census | is that the same thing as /join #tor here? I just did that and wound up at ##nortor. Or is that the xchat -> #perl-help. I tried #tor in x-chat and did not find a room | 17:01 | |
17:02
sftp_ left,
sftp_ joined
17:05
SmokeMachine left,
rindolf left
17:06
SmokeMachine joined
|
|||
masak | census: you need to /join #tor on the correct server, which is irc.oftc.net | 17:08 | |
census: each server has its own set of channels. | |||
17:11
FROGGS left
|
|||
census | masak: can i do that in xchat? should I Pm you? I don't want to upset anybody here. | 17:13 | |
masak | I'm pretty sure you can do that in xchat. but I don't know more, sorry. you can probably find xchat documentation easily if you look. | 17:14 | |
17:22
cogno joined
|
|||
census | masak: thanks! I figured out the xchat thing | 17:24 | |
17:24
SunilJoshi left,
SunilJoshi joined
17:25
cognominal joined
17:26
domidumont left
|
|||
masak | census++ | 17:29 | |
17:31
daxim left
|
|||
masak | the other day I stumbled over these nice slides by GvR: www.dropbox.com/s/xknbe58zcvjhzhv/...n2013.pptx | 17:32 | |
I think people interested in async and threading and event loops will want to read that one. | |||
17:43
cog_ joined
|
|||
jnthn | beer, dinner & | 17:44 | |
timotimo | hm, i meant to commute, but instead i watched jnthns talk "exploring perl6 through its modules", which i enjoyed quite a bit | 17:45 | |
so i don't really regret procrastinating :P | 17:46 | ||
17:47
PacoAir joined
17:48
domidumont joined
17:50
Chillance joined
17:51
cog_ left
17:53
FROGGS[mobile] joined
|
|||
masak | beer, dinner & | 18:01 | |
18:02
SunilJoshi left
|
|||
timotimo | .o(is beer the key to successful perl6 development? or maybe dinner?) | 18:05 | |
moritz | both, I thikn | ||
timotimo: are you still planning to look into the &EXPORT stuff? | 18:06 | ||
if not, I might take a look now | |||
timotimo | yes, i would like to do it | ||
FROGGS[mobile] | I wish I had beer | 18:12 | |
timotimo | i don't actually like beer very much :| | 18:13 | |
moritz neither | |||
FROGGS[mobile] | I drink beer like ten times a year | ||
moritz | but I've seen it as an essential ingredient in jnthn's hacking habits :-) | ||
FROGGS[mobile] | it is like chocolate for me... there are days when you need it | 18:14 | |
raiph | moritz: do you have any of the web log part of your p6 ilbot working? | 18:15 | |
moritz | raiph: I have a script working that records all the data that _ilbot collects, but it doesn't yet write them into a database | ||
sorear | food is a necessary component in the operation of the masak. | 18:16 | |
raiph | food is kinda necessary for me too | ||
18:18
SunilJoshi joined
18:19
SunilJoshi left
|
|||
moritz | oh, one part of the data acquisition is missing | 18:20 | |
I need today's date, but in UTC, not localtime | |||
FROGGS[mobile] | what about UGT? *g* | 18:21 | |
18:21
cog_ joined
|
|||
FROGGS[mobile] | everytime somebody says morning, the time get set to 8 o'clock | 18:22 | |
moritz | ... in every time zone | 18:23 | |
timotimo | universal good time? | 18:24 | |
geekosaur | "greeting" | 18:25 | |
timotimo | ah, right | 18:26 | |
FROGGS[mobile] | timotimo: since when is 8 o'clock good?? | 18:27 | |
timotimo | i was wondering that same thing! | ||
18:28
spider-mario joined
|
|||
timotimo | moritz: is {if return_value_of_export_sub { do imports }} sensible? or should i check that it's actually a hash and discard every other kind of value? | 18:28 | |
because use lib 'foo/bar' returns the @*INC 'accidentally' :) | 18:29 | ||
18:32
SamuraiJack_ left
18:33
SmokeMachine left
18:41
SmokeMachine joined
|
|||
moritz | timotimo: just fix lib/lib.pm6 to return an empty list or hash | 18:41 | |
pmichaud | or Nil | 18:42 | |
timotimo | i added "return;", so i suppose that returns Nil? | ||
moritz | and if it's not ~~ Hash, coerce to Hash maybe | ||
or maybe not | |||
moritz has no idea | 18:43 | ||
timotimo | i think i'm doing this wrong, i tried to nqp::getattr(%result, EnumMap, '$!storage'), was that wrong? | ||
pmichaud | depends on what you do with it. | ||
timotimo | Can not get attribute '$!storage' declared in class 'NQPMu' with this object - not sure where the NQPMu comes from | ||
pmichaud | sounds like %result isn't bound. | 18:44 | |
timotimo | interesting. i did that inside if %result { ... } | ||
timotimo recompiles just to be sure | |||
pmichaud | either that, or it needs to be decontainerized first. | ||
timotimo | that may actually be the case | ||
moritz | it likely needs to | ||
pmichaud | but probably not that, since hashes aren't yet held in containers. | ||
moritz | well, I'd store the result from EXPORT in a scalar container | 18:45 | |
because it's not a NQP hash | |||
so storing it in a hash at nqp level would be confusing, IMHO | |||
pmichaud | could be, yes. | ||
timotimo | good point | ||
pmichaud | I'm afk again, car repair :-( | 18:46 | |
moritz | github.com/moritz/ilbot6 | ||
timotimo | okay, saying the thing i have in there as the result before decontainerisation gives me a stringification of the hash i returned from the method, so that partially works | 18:49 | |
but i get the NQPMu error again, same as before | |||
oh, but this time i actually nqp::decont it before passing it to getattr | 18:51 | ||
perhaps i have to $*W.find_symbol(['EnumMap']) instead? | 18:52 | ||
that could make sense, because it comes from the core setting | |||
moritz | yes, you need to do that | 18:54 | |
18:57
colomon left
18:58
census left
18:59
roland_ left
|
|||
timotimo | hum. Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling op bind: Error while compiling op call: Null PMC access in find_method('handle') | 19:05 | |
i'm not sure how i can trace that to the location it originated from | 19:06 | ||
the traceback points to as_post from QAST.nqp from stage 2 :| | |||
19:07
cog_ left
19:08
cogno left
|
|||
moritz | it means something wrong was inserted into the QAST tree | 19:08 | |
it's hard to be more specific :( | 19:09 | ||
timotimo | tips on how to track it down? | ||
moritz | it seems to come from src/QAST/Compiler.nqp line 348 | 19:11 | |
19:11
cognominal left
|
|||
moritz | huh, weird | 19:11 | |
debug by coment out potentially offensive statements :( | |||
19:11
SmokeMac_ joined
19:14
cog_ joined
19:15
SmokeMachine left,
anocelot joined,
cogno joined
19:16
cognominal joined
|
|||
timotimo | hmm. | 19:17 | |
19:18
FROGGS joined
19:20
araujo left
|
|||
timotimo | oh, weeeird, i was looking at the completely wrong piece of code | 19:21 | |
so perhaps the thing i imported was on the wrong layer of ... stuff | 19:23 | ||
moritz: seems like it's time for you to take over :| | |||
github.com/timo/rakudo/tree/EXPORT_hash - have a look. here's also a test file for lib/ and a test file to run | 19:25 | ||
gist.github.com/timo/08d612edbe561366caf8 | |||
the code in the .t file causes that error. i suppose the yoink sub is somehow getting munged along the way | 19:26 | ||
19:28
kivutar left
|
|||
FROGGS | say { use v5; if( 0 ) { 42 } elsif( 21 ) { 7 } }() # gives '7' locally | 19:31 | |
sorear | you have a use v5? and it makes if( work ? | 19:32 | |
amazing. who do I ++ | |||
FROGGS | :o) | 19:33 | |
sorear: see github.com/rakudo/rakudo/tree/tmp_highfive | |||
timotimo | i am amused by the name of the branch | 19:34 | |
FROGGS | timotimo: well, after the 'categorically-better' branch I had to call it somehow cool | ||
sorear | FROGGS++ | 19:35 | |
FROGGS | it is tmp because it is just an experiment, but if it tends to go in the right direction I'll clean it up, and create proper commits | ||
sorear: thanks | |||
timotimo | seems pretty cool, although i don't have very interest in perl5. it's obviously nice to have! :) | 19:36 | |
more than nice | |||
twice as nice! | |||
moritz | timotimo: I'm taking a look now | 19:37 | |
19:37
grondilu left
19:38
sqirrel left
|
|||
moritz | r: say {}.WHAT | 19:38 | |
p6eval | rakudo 8fea53: OUTPUT«(Hash)» | ||
FROGGS | timotimo: I'm doing it so one is able to use pure perl 5 modules, and I hope the number of supported modules is big | 19:39 | |
pmurias | jnthn: can I move the parrot specific nqp test to t/parrot? | 19:40 | |
19:40
cognominal left,
cogno left,
cog_ left
19:42
cog_ joined
|
|||
moritz | timotimo: you don't even have an EXPORT sub in there, do you? | 19:43 | |
19:43
cogno joined,
cognominal joined
|
|||
timotimo | hold on, i don't? | 19:43 | |
i copypasted the wrong thing, sorry | 19:44 | ||
moritz | gist.github.com/timo/08d612edbe561366caf8 I don't see any sub EXPORT | ||
timotimo | gist updated | ||
19:45
fhelmberger left
|
|||
moritz | perlpunks.de/paste/show/514b6372.1a50.2f3 | 19:45 | |
is that consistent with your observations? | 19:46 | ||
timotimo | huh. hold on. | ||
indeed. this surprises me. | 19:47 | ||
if i write return ( Flurb => Frob ).hash instead, i get the other weirdness | 19:48 | ||
moritz | ok | 19:51 | |
the difference is a container | 19:52 | ||
so there's nqp::p6decont missing | |||
timotimo: want to give me commit access to your fork? | |||
timotimo | mhm. i had it in there at one point, but i got an error so i tried to shotgun-debug it away | ||
sure can | |||
there you go | 19:53 | ||
moritz | Error while compiling op p6decont: No registered operation handler for 'p6decont' | ||
ok, can't use nqp::p6decont in Grammar.pm | |||
timotimo | actually i wrote nqp::decont, so maybe *that* was the mistake? | 19:55 | |
moritz | maybe | ||
timotimo | it seems like both of those exist, though. interesting. | ||
moritz | I'm trying wth the pir equivalent | ||
that's a ugly, but it'll go away once jnthn++ unifies decont and p6decont | 19:56 | ||
timotimo | sounds okay | 19:57 | |
moritz | ... except that it doesn't work :( | ||
19:57
zby_home_ left
|
|||
timotimo | maybe our assumptions are wrong? | 19:57 | |
moritz | timotimo: I've managed to run it without errors now | 20:04 | |
I've mostly removed debugging statements :-) | |||
timotimo | did you push it yet? | 20:06 | |
i don't see it | |||
moritz | no | ||
I accidentally triggered a recompile while trying to test it again | |||
so, you need to have a bit more patience :-) | 20:07 | ||
timotimo | sure, no problem | ||
i'm thankful for your help. i wouldn't have been able to come up with PIR code by myself | |||
moritz | I'm not using PIR code right now | 20:09 | |
I've reverted that part, because it didn't work | |||
I guess the ops in questions aren't loaded yet, or I simply did something wrong | |||
timotimo | oh, ok | 20:10 | |
moritz | ok, this is what I get | ||
the import happens without error | 20:11 | ||
but when using the symbol, I get some trouble | |||
20:11
spider-mario left
|
|||
moritz | make -j4 && ./perl6 -I. -e 'use Frob <foo>; say ::.keys' | 20:11 | |
<debug output> | |||
!UNIT_MARKER GLOBALish EXPORT $?PACKAGE ::?PACKAGE $_ $/ $! Flurb $=pod | |||
it imported symbol Flurb | |||
timotimo | yes, that's what i had at the end, too | ||
moritz | and when I use ::<Flurb>, the symbol is intact | 20:12 | |
timotimo | oh, yes it is | 20:13 | |
moritz | so, partial success | 20:14 | |
20:14
domidumont left
|
|||
timotimo | so it's some internal error that's happening to show up here? something about import that i didn't understand properly? | 20:14 | |
moritz | well, somehow the symbol works fine in the runtime lexpad, but not in the copiler's symbol table | ||
20:17
abdullah joined
|
|||
abdullah | wow there's a lot of people here | 20:17 | |
timotimo | maybe something going wrong with the %to_install in world? | 20:18 | |
or perhaps the $_.key from the hash would have to be unboxed before putting it into the import method? | 20:19 | ||
moritz | no, $!storage is a parrot hash, and thus has parrot Strings in them | 20:20 | |
timotimo | OK | 20:22 | |
moritz | \o/ | 20:23 | |
$ cat Frob.pm6 | |||
my class Frob { method Str() { 'I am frobbed' } | |||
}; | |||
sub EXPORT(|) { ( Flurb => Frob, '&exportedsub' => sub () { say 42 } ).hash | |||
} | |||
./perl6 -I. -e 'use Frob <foo>; exportedsub()' | |||
42 | |||
so I've managed to export a sub and call it without any indirection | 20:24 | ||
moritz pushes | |||
timotimo | oh yay! | ||
20:26
census joined
|
|||
timotimo | i'll run spectests with that, i guess | 20:26 | |
do you think it's ready to be merged after that? or is there something important missing? | 20:27 | ||
(more removal of debug cruft) | |||
moritz | well, it shouldn't cause internal errors when exporting and referencing non-subs | 20:30 | |
20:30
thou joined
20:31
rindolf joined
|
|||
timotimo | oh, is that what caused the problem? | 20:31 | |
moritz | yes | ||
your example exported ints | |||
mine a type | |||
timotimo | right. okay that's not cool. | ||
moritz notices he doesn't know anymore how imports and exports work | 20:43 | ||
$ ./perl6 -e 'my module A { my class B is export { } }; import A; say B' | |||
(B) | |||
ok, that works | |||
but where did it find the symbol B to import? | 20:44 | ||
$ ./perl6 -e 'my module A { my class B is export { } }; say A.WHO.perl' | |||
("EXPORT" => EXPORT).hash | |||
20:44
ggoebel_ joined
|
|||
moritz | ah, I need to got to EXPORT.WHO | 20:45 | |
./perl6 -e 'my module A { my class B is export { } }; say A.WHO<EXPORT>.WHO<DEFAULT>.WHO.keys' | |||
B | |||
that's where I finally found it | |||
:-) | |||
ggoebel_ | is it possible to build rakudo on win64 with icu? | 20:47 | |
timotimo | moritz: i do not understand :D | ||
moritz | timotimo: I was trying to reconstruct how the export tags work | 20:48 | |
because importing by tags work | |||
so I want to know what the difference is | |||
r: my module A { my class B is export { } }; say A.WHO<EXPORT>.WHO<DEFAULT>.WHO.WHAT | 20:49 | ||
p6eval | rakudo 8fea53: OUTPUT«(Stash)» | ||
20:50
cog_ left
20:52
cog_ joined
|
|||
timotimo | oh, hm | 20:52 | |
moritz | r: say Stash ~~ Hash | ||
p6eval | rakudo 8fea53: OUTPUT«True» | ||
timotimo | hm. maybe the thing that gets installed has to be wrapped in some way? | 20:57 | |
i have no idea how to make this work :( | |||
20:57
rindolf left
|
|||
timotimo | i was looking forward to doing this when someone claimed it wasn't too complicated and i enjoy being mentioned in the release announcements, but this is quite a bit out of my reach :| | 20:57 | |
20:59
am0c left,
araujo joined,
araujo left,
araujo joined
21:02
skids left
|
|||
timotimo | i guess i'll divert my efforts to trying to figure out the best way to create those algebraic datatypes classes/roles/whatever it will end up being | 21:05 | |
21:06
gdey left
|
|||
arnsholt | I'm reading a Steve Yegge blog post, and came across this little gem: "And Perl 6 probably won't ever run on the JVM." =D | 21:06 | |
A post from 2007, mind | |||
21:06
baest_ joined
21:07
cognominal left
|
|||
_sri | haha | 21:07 | |
21:07
baest left
|
|||
timotimo | hah, it's amusing in hindsight | 21:09 | |
so, will one of us celebratorily hold the first version of rakudo on the jvm up to his nose, maybe burnt to one of those old timey cd-roms, or perhaps a floppy disk? | 21:10 | ||
_sri | a mountain of floppy disks | ||
timotimo | you don't have to pack the java vm along with it | 21:11 | |
21:11
cog_ left,
cogno left
|
|||
sorear | will still take more than one | 21:16 | |
diakopter | you're a mountain of floppies | 21:17 | |
ggoebel_ | any hints on compiling rakudo on windows 8 x64 with vc++ 11 (vs2012) and icu? | 21:20 | |
parrot doesn't seem to autodetect icu on windows. | 21:21 | ||
moritz | I think it just looks for an icu-config executable | ||
timotimo | okay, we could hold up a zipdisk to his nose, though | ||
moritz | is that in %PATH%? | ||
ggoebel_ | does rakudo pass along --icushared and --icuheaders to parrot if provided? | ||
and is there a specific version of icu I should be trying to use? | |||
when I try icu v51... I wind up with the error unresolved external symbols... _u_charFromName_51 | 21:24 | ||
etc | |||
I don't think icu on windows supplies an icu-config.exe | |||
nope | |||
masak is back | 21:25 | ||
FROGGS | ggoebel_: a batch file perhaps? | ||
timotimo | hello masak | ||
if you didn't read backlog yet, moritz and me tried making sub EXPORT return a hash and have that imported properly, but we failed ... except for classes it seems | 21:26 | ||
moritz | masak: how's the t2 review coming along? | ||
*nag* | |||
exporting routines works | |||
ggoebel_ | FROGGS: nope. if I use the binary distro or compile from source, I wind up with a bin64 directory... with a bunch of exe's and dll's but no icu-config.* | ||
moritz | exporting classes doesn't | ||
ggoebel_ | which is why I tried --icushared and --ichheaders (per parrot docs) | ||
timotimo | ah, routines and not classes, ok | 21:27 | |
ggoebel_ | anyone other than jnthn run rakudo on win? | ||
masak | moritz: it's coming along slower than I thought. and it's not the priority for tonight. | ||
timotimo | and also ... integers don't work and probably a host of other things won't work? | ||
masak | moritz: I just remembered that it's Rakudo release night. | ||
timotimo | oh! | ||
so no EXPORT hash returning in 2012.03 rakudo :( | |||
masak | so, I suggest... we cut a release of Rakudo, the compiler :) | 21:28 | |
ggoebel_ | moritz: yes, the .../icu/bin64 is in the %PATH% | ||
moritz hands masak a sledge scalpel | |||
masak | timotimo: don't worry, there's another release next month. | ||
moritz | ggoebel_: then I have no idea, sorry | 21:29 | |
ggoebel_ | s'ok | ||
masak | moritz: there's a weekend coming up. I hope to focus on t2 then. | 21:30 | |
21:30
kaare_ left
|
|||
masak | thanks for nagging. it helps. :) | 21:30 | |
21:36
imarcusthis joined
|
|||
moritz | .oO( nag nag nagging on heaven's doors ) |
21:38 | |
timotimo | is masak's apartment/house that amazing? :) | ||
moritz has never been there :( | 21:39 | ||
masak hands moritz unconditional rights to come crash at his place whenever :) | 21:41 | ||
I have the square metrage, that's for sure. | |||
moritz | masak: tusend takk. Now I just need to arrange the travel somehow :-) | 21:42 | |
masak | yeah, no international portal technology yet. | 21:43 | |
also, #perl6, what's up with not signing up for April release manager? | 21:44 | ||
don't make me scowl at you. you know neither of us would like that. ;) | |||
moritz | let's try that in a more positive way | 21:46 | |
21:46
noxgirl left
|
|||
moritz | hey, who wants to do tha Rakudo compiler release in April? | 21:46 | |
fame and glory awaits you. All you have to do is follow the rather simple instructions in the release guide | |||
and of course you need a machine on which can test and build rakudo. But you should already have that. | 21:47 | ||
masak .oO( preferably a computing machine ) | |||
moritz | if you have a coffee machine on which you can build rakudo, that's fine too | ||
21:48
sivoais left
|
|||
vaelxon | oh, oh, me! just one question though...what's a compiler and how does it relate to raccoons? | 21:48 | |
masak | they're basically the same. | ||
vaelxon | so by release...you mean back into the forest? | ||
21:48
sivoais joined,
autumn joined
|
|||
masak | yeah. we tag the raccoon, and then we release it in its natural habitat. | 21:49 | |
all tests pass here. najs. | |||
I've decided to call this month's compiler release 'Singapore'. | |||
because it's a nice place and I don't have a better idea. | |||
timotimo | so, any ideas how to make those algebraic datatypes useful at compiletime to give errors like "you didn't cover every case of this type!"? ;) | 21:52 | |
masak | that's the 1e6 USD question. | ||
moritz | 1) turn rakudo into a Haskell compiler 2) profit | 21:53 | |
masak | I for one think we can have our cake and not eat monads. | ||
moritz should really bake some monad cake | 21:54 | ||
timotimo | well, we don't have to go quite as far, though? | ||
moritz | but now: time for bed | ||
timotimo | good night, moritz! | ||
moritz | \~ | ||
sorear | masak: are you sure it's not 1e6 AUD or CAD? | 21:55 | |
masak | sleep well, moritz. dream of monad cakes. | ||
timotimo | .o(it can be done with a macro!) | ||
masak | timotimo: I have a feeling it can, yes. | ||
sorear: could also be en.wikipedia.org/wiki/Dollar_(disambiguation) | 21:56 | ||
sorear | masak: a basic 23 tree: date Tree t = Leaf t | Branch (Tree t) (Tree t) (Maybe (Tree t)) | ||
masak: type level integers: data Z; data S x | 21:57 | ||
masak: tree example in GADT syntax: data Tree t where Leaf :: t -> Tree t ; Branch :: Tree t -> Tree t -> Maybe (Tree t) -> Tree t | |||
21:58
bluescreen10 left
|
|||
sorear | masak: my favorite example of an actually somewhat useful GADT: data Tree level t where Leaf :: t -> Tree Z t ; Branch :: Tree l t -> Tree l t -> Maybe (Tree l t) -> Tree (S l) t | 21:58 | |
enforce balancedness at the type level. algorithms which break balancedness won't type check. | 21:59 | ||
masak | huh. | ||
FROGGS thinks he is in the wrong channel | 22:01 | ||
masak | FROGGS: no, this is today's topic :) | 22:02 | |
dalek | kudo/nom: 0dd091c | masak++ | docs/announce/2013.03.md: [docs/announce/2013.03.md] pick release name Release, I dub thee Singapore. |
||
kudo/nom: 1a96430 | masak++ | docs/announce/2013.03.md: [announce/2013.03.md] some formatting Indenting the text that way won't work. It means <pre> formatting in Markdown. Not what we want. |
|||
22:02
xilo left
|
|||
FROGGS | masak: ya, it is just that I dont understand a word | 22:03 | |
masak | FROGGS: did you see the discussion from earlier today? | ||
FROGGS: specifically, my two gists. | |||
FROGGS | no | ||
masak | wow, stuff sure happened this month. | 22:04 | |
pmurias | re GADT adding all those crazy types to a dynamicly typed language seems a bit strange ;) | ||
masak | pmurias: yeah. | ||
that was my thought as well. | |||
ADTs I can see, but not GADTs. | |||
FROGGS: irclog.perlgeek.de/perl6/2013-03-21#i_6613207 irclog.perlgeek.de/perl6/2013-03-21#i_6613334 | 22:05 | ||
sorear | perl 6 is not a dynamically typed language, though | ||
GADTs might be compatible with gradual typing | |||
pmichaud | well, TMTOWTDI means that you should be able to create a B&D language too. :-) | 22:06 | |
sorear | if gradual typing can be made to work at all | ||
have we figured out yet how to make gradual typing and multiple inheritance coexist? | |||
pmichaud | masak: eta to release, ooc? | 22:07 | |
masak | sorear: what's the problem there? | ||
pmichaud: I'm in release mode now. we're talking ~1 h. | |||
pmichaud | I was thinking of applying moritz's sink patch | ||
sorear | masak: gradual typing in general assumes that a Str can never also be an Int | ||
masak | pmichaud: go right ahead. | ||
sorear | my Str $x; my Int $y = $x | ||
pmichaud | I just need to spectest it also. | ||
sorear | gradual typing wants to fail that at compile time | 22:08 | |
masak | sorear: I see the problem. | ||
pmichaud: take your time. I'll get us ready in the meantime. | 22:09 | ||
pmichaud | compiling and spectesting it now. | ||
pmurias | is the gradual typing part of Perl 6 specced or is the approach "add type constraints and maybe the compiler will find some errors at compile type" | 22:10 | |
? | |||
pmichaud | actually.... never mind, I think I won't apply the patch yet. | 22:11 | |
masak | pmichaud: ok, so release first and patch later? | 22:12 | |
pmichaud | yeah. IMO, $list.sink should still be eager. | ||
it's only the implicit sinks that shouldn't sink a scalar. | |||
masak | oh well. it's in RT. | 22:13 | |
pmichaud | right. | 22:14 | |
and the bug has already existed for a couple of months. | |||
jnthn back | 22:15 | ||
pmichaud | jnthn: o/ | ||
22:16
FROGGS[mobile] left
|
|||
pmichaud spectests the patch anyway, just to see what happens. | 22:17 | ||
jnthn views Perl 6 as gradually typed rather than dynamically typed these days, fwiw. | 22:18 | ||
The MI issue is ugly. | 22:19 | ||
22:19
xilo joined
|
|||
jnthn waves hands and happily lets people get on with writing type constraints and getting the errors they hoped for at compile time. :) | 22:19 | ||
ggoebel_ | jnthn: is it possible to compile rakudo on parrot on win64 with icu? | 22:20 | |
jnthn | ggoebel_: In theory. In practice, I haven't tried it in a long time. Last time I tried I failed to figure out the required Configure options. | ||
ggoebel_ | okay... thx | 22:21 | |
jnthn | ggoebel_: Once upon a time I spent a lot of time getting Parrot/ICU working together on Windows. Then they kicked ICU out of the reop and lost all that. I don't ahve the motivation to figure it out again. | ||
dalek | kudo/nom: 48a2c26 | masak++ | docs/announce/2013.03.md: [announce/2013.03.md] exerpt of changelog added |
||
22:22
census left
|
|||
masak | Couldn't replace leap-second-dates at tools/update-tai-utc.pl line 29. | 22:22 | |
ISTR tadzik got this error last month, too. | 22:23 | ||
22:23
PacoAir left
|
|||
timotimo | masak: feel like changing q{Helpful error if you write "else if" instead of "elsif"} into q{Helpful error if you write "else if" or "elif" instead of "elsif"}? | 22:25 | |
pmichaud | In github.com/rakudo/rakudo/commit/c4083c42f2e63, why do we have checks with both :op<defined> and :op<isconcrete> ? | 22:26 | |
i.e., why check both? (I've slightly forgotten how :op<defined> differs from :op<isconcrete>, I think) | 22:27 | ||
masak | timotimo: ok. | ||
jnthn | pmichaud: isconcrete is always the low level "is this a type object" thing | 22:28 | |
pmichaud | yeah, got that one. :) | ||
masak | why does this replacement fail? github.com/rakudo/rakudo/blob/nom/...utc.pl#L29 | ||
jnthn | pmichaud: defined relates to the Parrot v-table defined, and maps to the HLL idea of defined. | ||
timotimo | the pythonist in me is pleased :P | ||
pmichaud | jnthn: so, the isconcrete is just intended as a hotpath shortcut? | ||
masak | I'm curious to know why update-tai-utc.pl fails nowadays. | ||
jnthn | pmichaud: Well, they're different questions | 22:29 | |
pmichaud: Wait, are we talking about sink here? | |||
pmichaud | yes. | ||
jnthn | Ah. Then in that case yes, checking isconcrete is *very* cheap | ||
pmichaud | and we assume we'll never have a defined type object :) | ||
jnthn | dihwidt :P | 22:30 | |
dalek | kudo/nom: e2ce160 | masak++ | docs/ (2 files): [docs] should be "elsif" or "elif" We handle both. timotimo++ |
||
jnthn | I hope that meant "else if" or "elif" | 22:31 | |
elsif is the valid one :P | |||
masak | oh dang. | 22:32 | |
'git commit --amen...' oh dang :) | |||
jnthn | PUSH --FORCE! | ||
:P | |||
masak | but yes, the patch does the right thing. | 22:33 | |
jnthn | :) | ||
Yes, I noticed that. :) | |||
huf | ah, just enough to confuse any wandering nuns | ||
arnsholt | Nuns? | 22:34 | |
huf | yes, for hysterical raisins, things like this are done to mislead wandering nuns. | ||
masak | I'm not a wandering nun, and even I'm confused. | 22:35 | |
huf | maybe you are, and just *very* confused. | ||
vaelxon | I thought that was how #perl6 was supposed to make you feel... | ||
dalek | kudo/nom: 7ed6a50 | masak++ | docs/announce/2013.03.md: [announce/2013.03.md] these are the contributors A fine bunch. |
||
huf | (btw, no idea about the origin of the phrase with the nuns, i've tried to find it multiple times but always failed) | ||
masak | vaelxon: no, confusion is strictly a secondary effect. | 22:36 | |
huf: the original source has probably been lost due to wandering nuns. | |||
huf | masak: most likely. | ||
it's stored in a nun-indexable location | |||
masak | *groan* | 22:37 | |
pmichaud | actually, the moritz patch in the RT ticket doesn't seem to resolve the original problem. | ||
masak | huh. | ||
I hold moritz patches to a higher standard than that... :) | |||
pmichaud | :) | ||
> my $c = [[1], [2], [3]].map({$_}); $c.unshift(47); say $c; | |||
47 | |||
masak | :( | ||
pmichaud | the reason is that currently $c.unshift(47) returns the bare list, not $c | 22:38 | |
timotimo | "git commit --amen" is an amusing thing in its own right, i find | ||
it's like --sign-off | |||
git can-i-get-an-amen? | |||
pmichaud | so the result is the same as $c.unshift(47).sink() and the invocant passed to .sink is the C<self> (de-containerized) coming back from unshift. | 22:39 | |
dalek | kudo/nom: 337f9e9 | masak++ | docs/release_guide.pod: [docs/release_guide.pod] move current release north |
||
pmichaud | so, we can update .unshift and friends to keep the container, or we can figure out a different approach. | ||
dalek | ast: b43c99f | pmichaud++ | S04-statements/sink.t: Add S04-statements/sink.t as a place to hold sink tests, starting with RT #117235. |
22:40 | |
p: bbe55b4 | masak++ | docs/release_guide.pod: [docs/release_guide.pod] formatting fix |
22:42 | ||
masak | the Parrot release, by the rules of nqp's release guide, does not need to be bumped from 4.10 | ||
pmichaud | yeah, no bump this month. | 22:43 | |
and there's not a 5.2 out yet anyway, afaik | |||
masak | right. | ||
dalek | p: 48de0ee | masak++ | VERSION: bump VERSION to 2013.03 |
22:44 | |
masak | github.com/perl6/nqp/blob/master/d..._guide.pod still contains instructions about "Github's download area". that's wrong now and needs to change. | 22:45 | |
pmichaud: how is uploading done these days? | |||
pmichaud | scp to [email@hidden.address] | 22:46 | |
see item #15 in the release guide. :) | |||
er, in the *rakudo* release guide. | 22:47 | ||
masak | yeah, it's correct in the Rakudo release guide. | ||
not in the NQP one. | |||
pmichaud | that detail might be missing from the nqp release guide :/ | ||
masak | (which temporally happens before the Rakudo one) | ||
pmichaud | you patch or me? | ||
masak | I can do it. | ||
pmichaud | masak++ | 22:48 | |
masak | but first I need to figure out how to log in to rakudo.org... :) | ||
was it with an ssh key? | |||
pmichaud | it's normally by ssh key, yes. | ||
masak | yeah, found it. | ||
...and I'm in. nice :) | |||
pmichaud | dinnertime here -- bbl | 22:50 | |
dalek | p: 434dfc3 | masak++ | docs/release_guide.pod: [docs/release_guide.pod] fix upload instructions |
22:51 | |
vaelxon | is there any kind of socket support in any current perl 6 implementation? | ||
22:51
Liz joined
|
|||
pmichaud | vaelxon: Rakudo has some socket support -- IO::Socket and IO::Socket::INET | 22:52 | |
22:52
Liz is now known as Guest41869
|
|||
vaelxon | pmichaud: thanks, I'll go check it out | 22:52 | |
timotimo | rakudo is getting zeromq support, too! | 22:53 | |
it's in the early stages and currently on a tiny bit of a hiatus, though | |||
but it's not terribly hard to contribute i've found out | |||
vaelxon | haven't heard of it, but the wikipedia article suggests I should learn more about it | 22:54 | |
22:55
kurahaupo joined
|
|||
timotimo | it may be interesting or absolutely wrong for your use case | 22:55 | |
it can only connect to other zeromq sockets, for instance, but it makes rather complicated network topologies more comfortable to handle | 22:56 | ||
vaelxon | use case is a server streaming bidirectionally to and from any number of javascript clients over websockets | 22:57 | |
sorear | then you're in trouble, because there's no select() IIRC | ||
(is this still right?) | |||
timotimo | sorear: why is it hard to just plop select in there? | ||
sorear | some combination of portability and tuits | 22:58 | |
timotimo | i should feel bad for only caring about linux, i think. | 22:59 | |
pmichaud | I wonder if (1) Sockets should be added to the features page | ||
(2) if the features page should have links to the relevant p6doc pages | |||
vaelxon | yes, yes, please! I have a dozen questions about specifics just like this..."does rakudo do X usably yet?" | 23:01 | |
arnsholt | Sounds like a good idea to me | ||
dalek | kudo/nom: e5349c0 | masak++ | tools/build/NQP_REVISION: [release] bump VERSION |
||
kudo/nom: 0ca6e54 | masak++ | docs/release_guide.pod: [docs/release_guide.pod] fix small thinko |
|||
vaelxon | does this work?: github.com/tadzik/IO-Select/ | 23:07 | |
23:08
census joined
|
|||
timotimo | the parrot version mentioned there is from Wed Aug 24 22:23:15 2011 | 23:09 | |
vaelxon | that's a "no", then? | ||
timotimo | so ... either this still works because it just introduced something that never needed to be touched again or it bitrotted | ||
i say: try it and see, i suppose | |||
it comes with tests | |||
23:10
LlamaRider joined,
preflex left,
Util_ left,
preflex_ joined,
Util joined
|
|||
pmichaud | I don't think that IO-Select was ever merged into the parrot master. | 23:10 | |
I could be wrong about that, though. | |||
23:11
preflex_ is now known as preflex
|
|||
timotimo | hm. which git command will let me check that? cherry? | 23:11 | |
pmichaud | masak: 0ca6e5444e looks wrong to me | 23:12 | |
you may have over thinkoed your thinko | |||
masak takes a second look | 23:14 | ||
pmichaud | step 9 is committing VERSION, not NQP_REVISION | ||
dalek | kudo/nom: 6d7c9cc | masak++ | docs/release_guide.pod: Revert "[docs/release_guide.pod] fix small thinko" This reverts commit 0ca6e5444e732c7c3ba458bf396859d907b01bff. |
23:15 | |
masak | yeah. was probably just reading it bleary-eyed :) | ||
pmichaud++ | |||
23:18
DarthGandalf joined
23:19
colomon joined
23:28
Guest41869 is now known as lizmat
23:32
cognominal joined
|
|||
timotimo | binary-eyed :) | 23:33 | |
masak 's eyes are using two's complement binary | 23:34 | ||
23:35
cogno joined,
cog joined
23:37
cog left
|
|||
masak | ladies and gentlebots. | 23:37 | |
we have a release. | |||
tarballs uploaded. tags pushed. p6c email sent. Wikipedia article updated. | 23:38 | ||
masak celebrates with a glass of water o/ | |||
colomon | \o/ | ||
lizmat | hear hear! | 23:40 | |
jnthn | \o/ | 23:41 | |
masak++ | |||
pmichaud | masak++ | 23:43 | |
btw, I claim the march star release | |||
pmichaud makes it so in the actual file. | |||
oh, I guess we don't put planned releases into that file. | 23:44 | ||
masak | no, don't think so | 23:45 | |
pmichaud | anyway, I intend to work on the march release early next week | ||
(weekend is a little crowded) | |||
afk again, walk | 23:46 | ||
23:47
arlinius left
23:59
census left
|