»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:05
mtk left
|
|||
dalek | ecza: 977ee15 | sorear++ | docs/DIRECTIONS: Remove outdated statements from DIRECTIONS |
00:12 | |
ecza: 58e6749 | sorear++ | / (3 files): Add S03-operators/overflow.t |
|||
ecza: efa9b51 | sorear++ | tools/unrun_tests: Add a little script to find unrun test files |
|||
ast: e7d9d8f | sorear++ | S03-operators/overflow.t: Fudge S03-operators/overflow.t for niecza |
|||
00:13
cdarroch left
|
|||
sorear | TimToady: Is it legal for niecza's $?FILE to return an absolute path? | 00:13 | |
A spectest doesn't like it, I'm wondering if I can fix the test :) | 00:14 | ||
00:15
icwiener left
|
|||
TimToady | I suppose. maybe that means we need to make it easier to distinguish the original argv[0] from 1) a calculated absolute path or 2) the last component | 00:17 | |
then an error message can choose how specific it wants to be | 00:18 | ||
that particular area has always been a source of non-portability though | |||
certainly there's a sense in which an abs path is safer, though no file name is perfectly safe | 00:20 | ||
an abs path can become wrong if the directories change; a rel path goes wrong when you chdir, and a short name is always wrong outside of its directory | |||
I tend to think the original argv[0] name is best for error messages, neither too much information nor too little, usually | 00:22 | ||
I'm always a bit amused when niecza emits a completely mundane error message and then sends it off my screen with an unnecessary stack trace... | 00:24 | ||
sorear | not helping is the ~5 lines of useless (above {YOU_ARE_HERE}) lines, and the fact that absolute file names make most of them wrap... | 00:26 | |
TimToady | 'course, if $?FILE is going to be the original source file of a program compiled long ago in a galaxy far away, we probably need even more info than the abs path... | ||
sorear | I think niecza used note;exit for errors once, but that broke eval | ||
I've been tempted to add $?SHA1 | 00:27 | ||
TimToady | I coulda used $?ORIG for rosettacode.org/wiki/Narcissist :) | 00:29 | |
00:29
Limbic_Region joined
|
|||
sorear | is $?ORIG generally useful? | 00:30 | |
TimToady | well, if you need to translate positions to line numbers, you can get it from there :) | 00:31 | |
and it makes it easier to do &foo.perl :) | |||
sorear | seems a bit extravagant | ||
TimToady | I think the average size of programs with respect to memories is shrinking rapidly | ||
it also gives you ready access to any $=POD vars | 00:32 | ||
the pod vars could all be synthetic, based on $?ORIG, in fact | |||
and you can always give error messages by pointing to the source code :) | 00:33 | ||
so I think it's a Good Default | |||
even if people want 'use cloak;' | |||
Limbic_Region | . o O ( we don't need no stinkin Romulans ) | 00:34 | |
TimToady | it might be particularly important for errors coming from eval | ||
Limbic_Region may have imbibed voracious amounts of potent potables and should be summarily ignored | |||
TimToady | you'd think it was a Friday night or sump'n... | 00:35 | |
sorear | I've lost all contact with the calendar lately | 00:36 | |
TimToady | btw, To Whom It May Concern, rosettacode.org/wiki/Natural_sorting is a pretty good start for a natural sorting spec | ||
sorear | gee, that looks a lot like the Unicode Collation Algorithm | 00:40 | |
TimToady | we just need to suck in all the Unicode algoritms, translate them to P6, and then given them all simple APIs...oh wait... | 00:42 | |
01:01
noganex_ joined
|
|||
thou | hmmm, i'm seeing chinese ideographs on the rosetta code new account page's captcha | 01:01 | |
lichtkind | good night | ||
thou | hmmm, actually might be japanese | 01:03 | |
01:04
noganex left,
lichtkind left
|
|||
thou | reloading the captcha got me by -- i started looking a lists of kanji and so forth, but ... pretty challenging for me when i don't have any context for it | 01:06 | |
01:20
jaldhar joined
|
|||
TimToady | cool! pity I already have an account.... | 01:26 | |
I can't do the Romanian granny, but I could do the California grampa if you send me a photo :) | 01:29 | ||
probably times out though... | |||
Limbic_Region | @TimToady - have you ever used Rosetta Stone? | ||
TimToady | yes | 01:30 | |
Limbic_Region | Thoughts? | ||
TimToady | it seemed pretty fine, though I got sidetracked somewhere in the middle | ||
it seemed good for my weakness, which is actually understanding what was said | 01:31 | ||
Limbic_Region | as an employee of *mumble*, I have unlimited access and have been spending an hour a night learning Tagalog but despite score 96 or above on every lesson don't feel like I am getting any closer to speaking the language | 01:32 | |
Having a great memory allows me to isolate and associate without comprehension | |||
was just wondering if it was me or the program | 01:33 | ||
TimToady | I don't have much trouble speaking, but then I'm a phoneticist/phonologist by training :) | ||
thou | TimToady: postimage.org/image/49qp6938/ # Screenshot of the captcha if you're curious | 01:34 | |
TimToady | you probably need to live in .ph for six months or so | ||
just like I need to live in .jp for a while | |||
Limbic_Region finds the phonetics like ng and mga of Tagalog a little difficult but for the most part it is a simple language | 01:35 | ||
but I am used to learning foreign languages the classical way - this is a verb, this is how you conjugate it, this is a noun, this is how you modify it, etc | |||
Rosetta Stone takes the approach of teaching as though you were an infant - total immersion with no instruction which I find frustrating because if I knew the rules without having to reverse engineer them - I would be much further along | 01:36 | ||
*shrug* | |||
TimToady | thou: 度初探 | 01:37 | |
degree first probe | 01:38 | ||
thou | ;-) | ||
TimToady | or times begin search | ||
but they're also valid Chinese | 01:39 | ||
and mean much the same there | |||
thou | the third one is pretty neat, like a Whatever hanging out under an umbrella | ||
TimToady | the whatever is a tree, and the umbrella is really a variant of net | 01:40 | |
if it had a tick on top it'd be "hole" | |||
to the left of that is "hand" | |||
the first one is Roof.o Ubar.it dex.ib | |||
the second is clothes.l Sword.r | |||
I can pretty easily look up any character by knowing all the radicals and pseudo-radicals | 01:41 | ||
including many of the simpler ones in Extension B | |||
thou | and i'm sure that's how the brain organizes them, too, for reading comprehension | ||
well, no, i'm not sure | 01:42 | ||
it'd be my first guess :-) | |||
TimToady | I suspect most people do "whole word" pattern matching | ||
and don't really think about the bits, anymore than we think about the letters | |||
thou | does rakudo or niecza handle Q :to('HERE')? I can't seem to find a here-doc syntax that they'll swallow. | 01:43 | |
TimToady | I did one earlier in niecza | ||
niecza: say q :to "EOF"aliveEOF | |||
p6eval | niecza v6-191-gefa9b51: OUTPUT«alive» | ||
TimToady | niecza: say Q :to "EOF"aliveEOF | 01:44 | |
p6eval | niecza v6-191-gefa9b51: OUTPUT«alive» | ||
TimToady | niecza: say Q :to "EOF"$aliveEOF | 01:45 | |
p6eval | niecza v6-191-gefa9b51: OUTPUT«$alive» | ||
TimToady | niecza: say qq :to "EOF"$aliveEOF | ||
p6eval | niecza v6-191-gefa9b51: OUTPUT«===SORRY!===Variable $alive is not predeclared at /tmp/JXFUqrOTT8 line 2:------> <BOL>⏏$aliveUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2)  at /home/p6e… | ||
TimToady | looks pretty functional to me | ||
thou | yeah. i was misled by a mistake elsewhere in my program, sorry | 01:46 | |
TimToady | called to 夕食 | 01:47 | |
that's evening and food | |||
& | |||
thou | niecza: say qq :to('EOF')aliveEOF | ||
p6eval | niecza v6-191-gefa9b51: OUTPUT«===SORRY!===Any()Alphanumeric character is not allowed as delimiter at /tmp/RhZyDrqswb line 2:------> <BOL>⏏aliveParse failed» | ||
thou | ok, good night | 01:49 | |
01:55
JimmyZ joined
02:19
whiteknight left
02:26
JimmyZ left
02:52
jaldhar left
02:53
jaldhar joined
02:56
Limbic_Region left
03:09
jdhore1 left
03:16
cotto joined
03:17
jdhore1 joined
03:23
Su-Shee_ joined
03:27
Su-Shee left
03:35
woosley joined
03:36
woosley left,
Bzek joined
03:44
lue left
03:51
cooper left
|
|||
sorear | Where is the spec for the stuff S02-magicals/submain.t tests? | 04:02 | |
04:03
s1n left
|
|||
dalek | ecza: 1466178 | sorear++ | src/niecza: constant $?FOO must be my-scoped, not our |
04:08 | |
ecza: ddfc6a3 | sorear++ | src/niecza: Fix &?BLOCK et al |
|||
ecza: b835604 | sorear++ | t/spectest.data: 3 new passing test files |
|||
04:15
bkolera joined
04:30
cognominal joined
04:51
Chillance left
05:00
cooper joined
05:04
s1n joined
05:08
benabik left
05:12
kaare_ joined
05:32
thou left
05:45
frew left
05:48
wamba joined
06:01
bkolera left,
bkolera joined
06:13
wamba left
06:15
wamba joined
06:26
cooper left
06:42
molaf joined
|
|||
pmichaud | rakudo: my Num $a; $a = 1; | 06:47 | |
p6eval | rakudo b2bc99: OUTPUT«Type check failed for assignment Container type: Num Got: Int in '&infix:<=>' at line 1:src/metamodel/RoleToInstanceApplier.nqp in main program body at line 22:/tmp/bLJLIhbeMh» | ||
pmichaud | rakudo: my Num $a; $a++; | 06:49 | |
p6eval | rakudo b2bc99: OUTPUT«Type check failed for assignment Container type: Num Got: Int in '&infix:<=>' at line 1:src/metamodel/RoleToInstanceApplier.nqp in main program body at line 1:src/gen/core.pm» | ||
dalek | ecza: bdfdf1c | sorear++ | lib/Kernel.cs: After discussion with pmichaud++, allow rw parameters to bind to variables with looser type constraints |
07:06 | |
07:13
bakedb joined,
bkolera1 joined,
bkolera left
|
|||
moritz | pmichaud: what's the correct fix? change src/core/Num.pm line 114 to Num:D ? | 07:19 | |
pmichaud | master doesn't understand :D yet | ||
moritz | oh, that's master | 07:20 | |
pmichaud | if you're asking about nom, I have an unpushed fix already committed | ||
pmichaud pushes. | |||
moritz | nom: my Num $x; $x++; say $x | ||
p6eval | nom: OUTPUT«1» | ||
moritz | fix for what? :-) | ||
pmichaud | yeah, the previous nom has the undefined handling in the wrong place, I think | ||
pushed. | |||
github.com/rakudo/rakudo/commit/1d...2c4514a489 | 07:21 | ||
handling of undefined increment is part of ++/--, not succ/pred, I think. | |||
rakudo: say Any.succ | |||
p6eval | rakudo b2bc99: OUTPUT«Method 'succ' not found for invocant of class '' in main program body at line 22:/tmp/y0uD0LDwpI» | ||
pmichaud | that's correct. | ||
moritz | niecza: say Any.succ | 07:22 | |
p6eval | niecza v6-194-gb835604: OUTPUT«1» | ||
pmichaud | I believe that's wrong. | ||
moritz | wouldn't surprise me if the spec was silent on that nuance | ||
pmichaud | it's not. | ||
it's pretty clear that it's the increment/decrement that has the magic, at least to my reading. | |||
because it says "increment of an undefined bare value" | 07:23 | ||
as opposed to .succ | |||
niecza: say List.succ | |||
p6eval | niecza v6-194-gb835604: OUTPUT«1» | ||
pmichaud | I'm pretty sure that's wrong. :) | 07:24 | |
dalek | kudo/nom: 1d685b7 | pmichaud++ | src/core/ (3 files): Update ++/-- handling for undefined values. |
07:26 | |
07:28
geekosaur joined
|
|||
moritz | should $filehandle.print use .gist too= | 07:30 | |
s/\=/?/ | |||
pmichaud | not .print | ||
.say, maybe. | 07:31 | ||
07:31
daniel-s joined
|
|||
pmichaud | .gist is for .say | 07:31 | |
moritz | huh | ||
pmichaud | say does gisting, print doesn't. | ||
daniel-s | hi | ||
pmichaud | (unless the spec changed again :-) | ||
although the spec doesn't actually mention that :) | 07:32 | ||
07:32
buubot_backup left
|
|||
pmichaud | say() is basically defined as sub say(|$args) { print gist(|$args), "\n" } | 07:33 | |
moritz | pmichaud: is there a reason why print() doesn't unbox_s its arguments? | 07:34 | |
pmichaud | the one that is there now is basically a "get it working" print | ||
jdhore1 | Can I ask a possibly loaded question? | ||
07:34
daniel-s left,
daniel-s joined
|
|||
moritz | pmichaud: asked differently, should it unbox_s(@list.shift.Stringy) ? | 07:35 | |
or is that .Str? | |||
jdhore1 | Is nom going to be the last rakudo "start over from scratch"? | ||
pmichaud | jdhore1: how would we know? ;-) | ||
moritz: not sure which it will end up being, either .String or .Str should work fine for now. I'd go with .Str, I think. | 07:36 | ||
*.Stringy | |||
jdhore1 | pmichaud, Which question was that an answer to? | ||
pmichaud | jdhore1: either or both (but primarily the second) :-P | ||
jdhore1: do we have another rakudo rewrite planned? definitely not. | |||
jdhore1 | Though I suppose, after/during the former rewrites, was nom "planned"? It'd surprise me. | 07:37 | |
pmichaud | jdhore1: but I don't know to what extent we expected nom to be a rewrite. we expected it to be a much less of a rewrite than alpha->ng was (and that's turned out to be correct thus far) | ||
jdhore1 | ah | 07:38 | |
pmichaud | ng was really a total rewrite. nom has a lot of rewriting of the p6libs, but the actual compiler itself didn't get a do-over. We're still using the same grammar and actions as master, for the most part. | ||
jdhore1 | ah | 07:39 | |
nom also seems to be moving significantly faster than most project rewrites which is a good sign :) | 07:40 | ||
pmichaud | yeah | ||
it's not a total rewrite. mostly the setting is getting a thorough review/rewrite, and it needed it | |||
also, we're doing a lot of "rewriting" of the parts that were previously written in PIR | |||
and we're paying a lot more attention to efficiency issues, in some pain points (like lists/iterators) | 07:41 | ||
moritz | nom: sub f(:$x) { say $x }; f :x | ||
p6eval | nom: OUTPUT«Bool::True» | ||
moritz | jnthn++ | ||
jdhore1 | ah, nice | 07:42 | |
pmichaud | yes, jnthn++. after I saw the patch for that one I said "oh, I should've seen that one". | ||
moritz | if we had :nqpop along with :pirop in PAST, we could make the actions much more portable | 07:45 | |
pmichaud | that's the plan. | ||
just haven't gotten there yet. | |||
ETOOMUCHLHF | |||
07:47
Mowah joined
|
|||
pmichaud | I keep typing ?? || instead of ?? !! for some reason. | 07:49 | |
TiMBuS | ive done that so many times | 07:55 | |
:/ | |||
pmichaud | I think it's because I often start thinking of an or-test, and then switch to using ?? when I decide it's really an if-else | 07:59 | |
sorear | pmichaud: the spec also talks about magical increment of strings | 08:03 | |
however, strings are magical on .succ | |||
so I took "increment" to mean ".succ" rather than "++" | |||
pmichaud | sorear: that's reasonable | ||
sorear | I agree that the increment spec is badly worded | 08:04 | |
if you think there's a good argument for Any.succ dying, I'll go along with that | |||
but now...sleep | |||
pmichaud | List.succ is the one I can think of | 08:05 | |
actually, any type derived from Any that isn't numeric feels like it shouldn't have a magical .succ | |||
08:08
bakedb left,
JimmyZ joined
08:19
x19290 joined
|
|||
x19290 | hello. | 08:19 | |
I know this is not the right place, but please let me continue. | 08:20 | ||
tadzik | hello | ||
x19290 | hello | ||
I want to know about good old days (~v3) of Perl. | |||
Where should I go? | 08:21 | ||
moritz | the perl5 git repo has the old versions | 08:23 | |
x19290 | perl3? | ||
moritz | 1, 2, 3, 4 | 08:24 | |
x19290 | oh! | ||
But what I know is that: | |||
In old days Perl was a package of GNU. Yes or No? | 08:25 | ||
moritz | what does "a package of GNU" mean? | ||
x19290 | perl was downloadable from prep.ai.mit.edu. | 08:26 | |
moritz | that's merely a mirror location | ||
08:26
buubot_backup joined
|
|||
x19290 | Oh, I misunderstood. | 08:27 | |
some Linux people say, | |||
because "definition of free software" is so strict that perl cannot be packaged in GNU. | 08:28 | ||
pmichaud | www.gnu.org/software/perl/perl.html # fwiw | ||
dalek | kudo/nom: a1b813c | pmichaud++ | NOMMAP.markdown: Some NOMMAP updates. |
||
kudo/nom: a7fa958 | pmichaud++ | src/ (9 files): Change the argument ordering for perl6_list_from_rpa so that the rpa is always the first argument/operand. Otherwise I keep forgetting the order in which the arguments need to appear (rpa-first means it matches perl6_iter_from_rpa). Also update most of src/core to use nqp::p6list instead of the much longer opcode name. |
|||
x19290 | freedom0 ~ freedom3 | 08:29 | |
I thought the definition is so simple that it is loose. | 08:30 | ||
but some linux persons say it's not right. | |||
I'm a very bad English speaker, sorry. | 08:31 | ||
huf | x19290: perl license is listed as a gpl compatible free software license on gnu.org | 08:32 | |
x19290: www.gnu.org/licenses/license-list.h...leLicenses | |||
i'd say that settles it | |||
x19290 | rms says, for example, X is not a GNU software but it is part of GNU. | 08:33 | |
right? | |||
moritz doesn't understand what "GNU software" means | 08:34 | ||
if it means "part of the linux userland", I agree | |||
tadzik | it's GNU/Linux! :) | ||
x19290 | yes. | 08:35 | |
GNU software means, | |||
it is a product of GNU project. | |||
pmichaud | I think fsf uses "GNU package" for that. | ||
x19290 | Yes. | 08:36 | |
I will use the word "GNU package" from now. | |||
Krunch | Perl has been distributed within GNU/Linux distributions for a long time but AFAIK it has never been a GNU project | ||
08:36
drbean joined
|
|||
x19290 | abount X, same thing can be said. | 08:37 | |
Again, rms says, X is not GNU package but X is part of GNU | 08:38 | ||
GNU operating system, his ideal OS. | |||
Abount TeX, same thing can be said. | 08:39 | ||
Why not Perl? | 08:40 | ||
moritz thinks the discussion is kinda pointless | |||
you can say whatever you want about any software | |||
and if you want to discuss GNU naming conventions, the FSF would be better than the perl people | |||
x19290 | I'm very sorry. | 08:41 | |
I was not in the right place. | 08:42 | ||
I have not been in the right place. | 08:43 | ||
bye. | |||
moritz | nom: say gist("foo", "bar") | ||
p6eval | nom: OUTPUT«foo bar» | ||
moritz | pmichaud: I'm trying to IO.say, and I don't know what exactly to .gist | 08:44 | |
08:44
sjn left
|
|||
moritz | method say(*@list) { self.print(@list.map({ .gist}).join) } | 08:44 | |
08:44
sjn joined
|
|||
pmichaud | can't be *@list because that will flatten. | 08:44 | |
say needs to accept a Parcel/Capture and .gist that | 08:45 | ||
moritz | trouble is, I can't use the |$ thing easily that the say() sub uses | 08:46 | |
because that includes the invocant | |||
pmichaud | shift the invocant | ||
method say(|$) { | |||
my Mu $args := pir::perl6_current_args_rpa__P(); | |||
nqp::shift($args); | |||
# now you can use $args | |||
jnthn++ and I agreed that this would be the canonical way to handle it for now :) | 08:47 | ||
daniel-s | does IO::Socket::INET work in perl6 the same way as it does in perl 5? | 08:50 | |
tadzik | I don't think so | ||
daniel-s | pastebin.com/fhbTh0RU | 08:51 | |
line 7 doesn't seem to be working correctly | |||
no sever responds to whatever I send it | |||
huf | that's not a proper http request at all | 08:52 | |
daniel-s | if I telnet to google.com on port 80, it seems to be enough to get it to spit heaps of HTML back | ||
huf | dont you also press enter twice? | ||
or at least once | 08:53 | ||
daniel-s | :( | 08:54 | |
thanks huf | |||
tadzik | daniel-s: $socket.send("GET /\r\n\r\n"); works fine here | ||
huf | daniel-s: read up on http | ||
daniel-s | yea, no \r\n fixed it | ||
I mean, putting \r\n fixed it | 08:56 | ||
08:59
Katibe joined
|
|||
dalek | kudo/nom: 4923896 | pmichaud++ | / (2 files): Re-enable list (Parcel) assignment, although my() declarations still have a bug. |
09:04 | |
kudo/nom: 29d34b5 | pmichaud++ | NOMMAP.markdown: Add "my ($a, $b)" to NOMMAP todo list. |
|||
09:06
x19290 left
09:11
Su-Shee_ is now known as Su-Shee
09:14
araujo left
09:29
daniel-s left
09:31
nymacro joined
09:38
Tedd1 left
09:47
bakedb joined
|
|||
dalek | kudo/nom: e99c15d | moritz++ | src/core/IO.pm: IO.say and .print |
09:51 | |
kudo/nom: e91f49f | moritz++ | src/core/IO.pm: open("-", :w) opens STDOUT |
|||
kudo/nom: ffb46dc | pmichaud++ | src/core/Str.pm: Add Str.pred and Str.succ (the magical forms). |
|||
kudo/nom: 6fd1046 | pmichaud++ | src/core/IO.pm: Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
moritz | nom: my $*IN; | 09:53 | |
p6eval | nom: OUTPUT«Rebuild in progress» | ||
pmichaud | I don't think we have dynamic vars yet | 09:54 | |
moritz | that's right | ||
pmichaud | I can put that on my lhf for today :) | ||
moritz | my plans for $*IN/$*OUT world domination are srsly blocked :-) | ||
pmichaud | can we assign to namespaces yet? | 09:55 | |
moritz has no idea | |||
pmichaud | "our scoped variables not yet implemented..." | 09:56 | |
dalek | kudo/nom: bd5e60e | moritz++ | NOMMAP.markdown: add dynamic variable to NOMMAP |
||
moritz | pmichaud: when you added IO to the LHF file, what did you have in mind? | 09:58 | |
pmichaud | ummmmm | ||
moritz | I've done IO.{open,print,say,close} now | ||
pmichaud | I didn't put IO in LHF | 09:59 | |
looks like jnthn++ did that | |||
moritz | oh :-) | ||
pmichaud | I'd think IO open/print/say/close/get/lines would be a good start | ||
maybe the file test operators could be worked on... not sure how LHF that would be | |||
moritz | ah yes, lines() is also done (though not yet $limit yet) | 10:00 | |
10:01
MayDaniel joined
|
|||
pmichaud | even if 'our' declarations don't work -- just being able to get to packages via the package or hash interface would be useful | 10:03 | |
e.g. $PROCESS::IN = or PROCES::<$IN> = ... | |||
don't know what jnthn has in mind for package namespaces there yet. | |||
pmichaud pokes around source code a bit. | 10:04 | ||
10:08
MayDaniel left
|
|||
moritz | nom: say $Inf | 10:08 | |
p6eval | nom: OUTPUT«Inf» | ||
moritz | nom: say 1 < $Inf | 10:09 | |
p6eval | nom: OUTPUT«Bool::True» | ||
pmichaud | nom: say 1e0 < $Inf | 10:10 | |
p6eval | nom: OUTPUT«Bool::True» | ||
pmichaud | weird. | ||
nom: say $Inf.WHAT | |||
p6eval | nom: OUTPUT«Num()» | ||
pmichaud | nom: pir::say(nqp::unbox_n($Inf)) | ||
p6eval | nom: OUTPUT«Inf» | ||
pmichaud | nom: pir::say(nqp::islt_n(1, nqp::unbox_n($Inf))) | 10:11 | |
p6eval | nom: OUTPUT«1» | ||
pmichaud | oh, I guess that's all right. I definitely need sleep. | ||
moritz | nom: say $Inf.Int | 10:12 | |
p6eval | nom: OUTPUT«-9223372036854775808» | ||
pmichaud | rakudo: say Inf.Int # checking | ||
p6eval | rakudo b2bc99: OUTPUT«-9223372036854775808» | ||
pmichaud | I don't mind it doing that too much... but I wish it was at least positive. | 10:13 | |
for 32-bits I think that Inf.Int used to give MAXINT | 10:14 | ||
10:14
daniel-s joined
|
|||
dalek | kudo/nom: 77be43f | moritz++ | src/core/IO.pm: add $limit to IO.lines |
10:17 | |
10:20
bkolera1 left
10:23
Trashlord left
10:24
nymacro left
|
|||
gfldex | nom: say $Inf.WHAT; | 10:28 | |
p6eval | nom: OUTPUT«Num()» | ||
gfldex | nom: say Inf.WHAT; | 10:30 | |
p6eval | nom: OUTPUT«Num()» | ||
gfldex | nom: say $Inf === Inf; | ||
p6eval | nom: OUTPUT«Could not find sub &infix:<===>current instr.: '_block1002' pc 82 ((file unknown):70) (:1)» | ||
felher | morning folks. Can one instantiate class B if B does role A but A has stub-method m() { ... } and B does not override that method? Does that fail by instantiation or only if one calls $b.m() and executes the stub? | 10:31 | |
pmichaud | afk # nap | 10:39 | |
gfldex | felher: since one could define m at runtime the compiler can only warn and even that is questionable | 10:41 | |
unless you use :final or :closed | |||
moritz: re: github.com/rakudo/rakudo/commit/77be43fcb8 are you sure you want $Inf and not Inf? | 10:42 | ||
felher | gfldex: I see. Big thnx. :) | 10:43 | |
dalek | kudo/nom: 703dd98 | pmichaud++ | / (3 files): Dynamic vars -- stub in dynamic variable lookups. This only handles the lookup portion of dynvars; as yet dynamic variable declarations (my $*abc) don't work and afaik there's not a way to create package-scoped variables (e.g. in PROCESS). But the stub code is here anyway. (Use pir::say($*AUTOPRINTPOS) in interactive mode to see that dynvars are actually searching the dynamic context. :-) |
||
kudo/nom: 8703efe | pmichaud++ | src/core/IO.pm: Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
moritz | gfldex: Inf doesn't work in the setting (yet?) | 10:49 | |
10:49
woosley joined
|
|||
gfldex | i c | 10:50 | |
10:58
cognominal left
|
|||
daniel-s | in the perl book, is there something I can put so that two lines don't seperate across page? | 11:00 | |
moritz | no, don't worry about typography for now | 11:03 | |
11:04
karupanerura joined
11:05
Trashlord joined
11:08
mberends joined
11:12
cognominal joined,
cognominal left
11:13
Moukeddar joined
11:20
Holy_Cow joined,
Holy_Cow left
11:33
awoodland left
11:49
donri joined
11:53
mikehh joined
11:58
buubot_backup left
12:01
kfo_ joined
12:04
kfo left
12:11
orafu left
12:13
orafu joined
12:16
araujo joined
|
|||
jnthn | afternoon, #perl6 | 12:18 | |
jnthn sees pmichaud++ and moritz++ have been a-patchin'. | |||
nom: my $*abc | 12:21 | ||
p6eval | nom: OUTPUT«Method 'scope' not found for invocant of class 'PAST;Op'current instr.: 'nqp;Perl6;Actions;_block1142' pc 11817 (src/gen/perl6-actions.pir:3411)» | ||
12:23
envi joined
|
|||
jnthn | nom: my ($a, $b, $c) | 12:23 | |
p6eval | nom: OUTPUT«Method 'get_declarations' not found for invocant of class 'ResizablePMCArray'current instr.: 'nqp;Perl6;Actions;_block2357' pc 42045 (src/gen/perl6-actions.pir:14457)» | ||
jnthn | aha | ||
12:35
buubot_backup joined
|
|||
daniel-s | if somebody wouldn't mind answering for me: | 12:41 | |
pastebin.com/HazLn1tf | |||
why is line 29 not say anything? | |||
*does | |||
I expected it to have caught 'http' 'foo' and 'bar' | 12:42 | ||
12:44
jt_ joined
12:47
woosley left
|
|||
daniel-s | I think I got it, the round brackets! | 12:47 | |
perl6: say hex(0xff); | 13:02 | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&hex" at /tmp/f0dGHbkyp8 line 1, column 5-14» | ||
..rakudo b2bc99: OUTPUT«Could not find sub &hex in main program body at line 22:/tmp/mGQtDj9Tro» | |||
..niecza v6-195-gbdfdf1c: OUTPUT«===SORRY!===Undeclared routine: 'hex' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2)  at /home/p6eval/niecza/src/STD.pm6 line 1133 (STD P6.comp_unit @ 30)  … | |||
daniel-s | perl6: say hex("0xff"); | ||
p6eval | rakudo b2bc99: OUTPUT«Could not find sub &hex in main program body at line 22:/tmp/D6GJoZuZ_b» | ||
..pugs: OUTPUT«*** No such subroutine: "&hex" at /tmp/ikvjjYoWSx line 1, column 5-16» | |||
..niecza v6-195-gbdfdf1c: OUTPUT«===SORRY!===Undeclared routine: 'hex' used at line 1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2)  at /home/p6eval/niecza/src/STD.pm6 line 1133 (STD P6.comp_unit @ 30)  … | |||
daniel-s | perl 5 has a hex function | 13:04 | |
is there an equivalent in perl6? | |||
flussence | rakudo: say :16('1fc') | 13:05 | |
p6eval | rakudo b2bc99: OUTPUT«508» | ||
daniel-s | flussence++ :) | 13:08 | |
flussence | also works for 2, 8 and 10 IIRC | ||
daniel-s | rakudo: say :10('100'); | ||
p6eval | rakudo b2bc99: OUTPUT«100» | ||
daniel-s | rakudo: say :10('0xff'); | 13:09 | |
p6eval | rakudo b2bc99: OUTPUT«255» | ||
daniel-s | rakudo: say :16('ff'); | ||
p6eval | rakudo b2bc99: OUTPUT«255» | ||
daniel-s | rakudo: say :10('ff'); | ||
JimmyZ | rakudo: say :2('100'); | ||
p6eval | rakudo b2bc99: OUTPUT«Invalid character (F)! Please try again :)  in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp» | ||
rakudo b2bc99: OUTPUT«4» | |||
flussence | rakudo: say '0xFF'.Int | 13:10 | |
p6eval | rakudo b2bc99: OUTPUT«255» | ||
flussence | :\d+ is just an alternative to having a radix prefix in the string itself | ||
jnthn | ooh, masak++ live at FPW! cite-sciences.ubicast.eu/lives/thd-live/ | 13:23 | |
13:36
karupas joined,
karupanerura left
13:37
nebuchadnezzar joined,
jt_ left
13:44
fhelmberger joined
13:53
MayDaniel joined
|
|||
sjn | rakudo: sub foo(Int :$n = 1) { say $n }; foo() | 14:01 | |
p6eval | rakudo b2bc99: OUTPUT«1» | ||
sjn | rakudo: sub foo(Int :$n = 1) { say $n }; foo(23) | ||
p6eval | rakudo b2bc99: OUTPUT«Too many positional parameters passed; got 1 but expected 0 in 'foo' at line 1:/tmp/04D3ScUIjo in main program body at line 22:/tmp/04D3ScUIjo» | ||
jnthn | sjn: Did you really want the colon there? | 14:05 | |
sjn doesn't know | |||
jnthn | :) | ||
rakudo: sub foo(Int $n = 1) { say $n }; foo(23) | 14:06 | ||
p6eval | rakudo b2bc99: OUTPUT«23» | ||
jnthn | rakudo: sub foo(Int $n = 1) { say $n }; foo() | ||
p6eval | rakudo b2bc99: OUTPUT«1» | ||
jnthn | : makes it a named param | ||
sjn | mm | ||
this is what I have: sub MAIN(Str $prefix, Str $suffix, Int $maxchars=12) { ... } | 14:07 | ||
mikemol | I'll cast a vote in favor of divmod. At least a couple times a month, I find myself needing to do / and % in my day-job stuff (which, sadly, involves no Perl6). Most recent cast: "Ok, with a chunk size of X, how many chunks will I get out of this many bytes, and how many bytes will I have left over? | 14:08 | |
sjn | I want $maxchars to show up in the usage text as [--maxchars=something] | ||
well, I expected it to :-P | |||
that's how I put in the : | |||
pmichaud | good morning, #perl6 | 14:09 | |
sjn | o/ | ||
daniel-s | rakudo: my %stuff = (one => "1", two => "2"); for %stuff {say .key; say .values}; | 14:12 | |
p6eval | rakudo b2bc99: OUTPUT«one1two2» | ||
daniel-s | rakudo: my %stuff = (one => "1", two => "2"); for %stuff {say .keys; say .value}; | 14:13 | |
p6eval | rakudo b2bc99: OUTPUT«one1two2» | ||
daniel-s | is there no difference between singular .key and plural .keys | ||
pmichaud | for Pair objects, no | 14:14 | |
daniel-s | is there a way to confirm what the key is | ||
jnthn | o/ pmichaud | ||
daniel-s | if .key == "one" doesn't work | ||
pmichaud | well, that's a numeric comparison | ||
I think you meant if .key eq 'one' | 14:15 | ||
jnthn++ # very nice work yesterday | |||
daniel-s | oh yea, thanks | ||
pmichaud | oh, the other difference is likely that .key is an item while .keys is a list | 14:16 | |
jnthn | pmichaud: :) | ||
pmichaud: Looking over your latest nommap additions. | |||
pmichaud | rakudo: my %stuff = <one 1 two 2 >; for %stuff { say .key.WHAT; say .keys.WHAT } | ||
p6eval | rakudo b2bc99: OUTPUT«Str()Array()Str()Array()» | ||
pmichaud | jnthn: I suspected (and hoped) that you would :) | 14:17 | |
14:28
jimmy1980 left
14:34
jimmy1980 joined
14:36
Moukeddar_ joined,
Moukeddar left
14:38
Moukeddar_ left,
Chillance joined
|
|||
TimToady | ooh, maybe divmod should be a listop: my ($sec, $min, $hr, $days) = divmod $num, 60, 60, 24 | 14:42 | |
thought maybe that should be called moddiv :) | 14:43 | ||
or modmod | |||
flussence | div-and-show-your-working would still make that line shorter than how I'm used to doing it :) | 14:44 | |
TimToady | I suppose people would recognize the divmod concept, though returning the results in the "other" order is a problem | 14:45 | |
flussence | Rdivmod? | ||
oh wait, that's for *input* bits | 14:46 | ||
TimToady | the problem is if someone writes ($quo,$rem) = divmod $big, $little | ||
when you're really wanting to pulling a series of mods out, followed by the final quotient | 14:47 | ||
the right side has to be that order so you can write divmod $n, 60 xx * | |||
or divmod $n, 1000 xx * | 14:48 | ||
but it's the result that will surprise people used to traditional divmod | 14:49 | ||
so we should probably call it something else, modmod or some such | 14:50 | ||
14:50
Mowah left
|
|||
TimToady | there's probably some higher-order functional pattern I'm missing here in my pre-caf state, but it seems more complicated the the usual op vs [op] | 14:53 | |
since primitive divmod returns two results | |||
JimmyZ | contiguous div ? | 14:54 | |
pmichaud | nom: say '⚀' ...^ { $_.chars > 2 } # I never tire of this :-) | 14:57 | |
p6eval | nom: OUTPUT«⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ⚀⚀ ⚀⚁ ⚀⚂ ⚀⚃ ⚀⚄ ⚀⚅ ⚁⚀ ⚁⚁ ⚁⚂ ⚁⚃ ⚁⚄ ⚁⚅ ⚂⚀ ⚂⚁ ⚂⚂ ⚂⚃ ⚂⚄ ⚂⚅ ⚃⚀ ⚃⚁ ⚃⚂ ⚃⚃ ⚃⚄ ⚃⚅ ⚄⚀ ⚄⚁ ⚄⚂ ⚄⚃ ⚄⚄ ⚄⚅ ⚅⚀ ⚅⚁ ⚅⚂ ⚅⚃ ⚅⚄ ⚅⚅»… | ||
TimToady | well, in this case '⚀' ... '⚅⚅' would be rather more readable, methinks | 15:00 | |
nom: say '⚀'...'⚅⚅' | 15:01 | ||
p6eval | nom: OUTPUT«⚀ ⚁ ⚂ ⚃ ⚄ ⚅ ⚀⚀ ⚀⚁ ⚀⚂ ⚀⚃ ⚀⚄ ⚀⚅ ⚁⚀ ⚁⚁ ⚁⚂ ⚁⚃ ⚁⚄ ⚁⚅ ⚂⚀ ⚂⚁ ⚂⚂ ⚂⚃ ⚂⚄ ⚂⚅ ⚃⚀ ⚃⚁ ⚃⚂ ⚃⚃ ⚃⚄ ⚃⚅ ⚄⚀ ⚄⚁ ⚄⚂ ⚄⚃ ⚄⚄ ⚄⚅ ⚅⚀ ⚅⚁ ⚅⚂ ⚅⚃ ⚅⚄ ⚅⚅»… | ||
15:01
MayDaniel left
|
|||
pmichaud | sure, but then I'd have to type '⚅⚅' (or copy/paste it from somewhere like I just did here :) | 15:01 | |
TimToady | nom: say 1..3 | ||
p6eval | nom: OUTPUT«1..3» | ||
TimToady | nom: say 1...3 | ||
p6eval | nom: OUTPUT«1 2 3» | ||
TimToady | nom: say (1,2,3) | 15:02 | |
p6eval | nom: OUTPUT«123» | ||
TimToady | ^^ buglet? | ||
pmichaud | I don't know | ||
1...3 produces a list... (1,2,3) is a Parcel | |||
currently gist treats them differently | |||
should they be the same? should parcels join with spaces? | |||
TimToady | probably, since it's not a list context really | 15:03 | |
pmichaud | that would mean that say 1,2,3 would also have spaces | ||
well, it doesn't have to mean it in that case | |||
I guess we could distinguish between Parcel and arglist | |||
TimToady | you don't .gist the whole parcel | ||
say's whole parcel | 15:04 | ||
pmichaud | .gist each element of the capture, then? | ||
TimToady | just its bits | ||
pmichaud | okay. the spec is a little weak on say + gist atm :) | ||
fixing | |||
what about gist 1,2,3 ? | 15:06 | ||
spaces or no? | |||
pmichaud guesses no. | |||
TimToady | I'd been thinking of that as say without the "\n" | 15:07 | |
pmichaud | right... and "gist" simply returns the string, as opposed to doing any sort of output? | ||
TimToady | yeah, though one could argue it the other way I suppose | 15:08 | |
but this is how I thought of it first, so it must be right :) | |||
pmichaud | I've been working from the hypothesis that say is defined as sub say(|$args) { print gist(|$args), "\n" } or something close to that. This would fit that. | 15:09 | |
TimToady | It's a bit of a disconnect form (1,2,3).gist I guess | 15:10 | |
*from | |||
but we always have that disconnect | |||
well, sometimes | |||
I guess we've flattened the diconnect on map etc. | 15:11 | ||
*dis | |||
pmichaud | yes, now that map is .flat a lot of disconnects seem to have gone away | ||
it definitely feels cleaner than before from an implementation perspective | |||
15:12
masak joined
|
|||
TimToady | well, what if we said that gist listop is like .gist, then we could use gist 1,2,3 to put spaces, arguably a feature | 15:12 | |
masak | oh lol hai talks done | ||
(and went well, I think) | |||
TimToady | and say would then iterate its args and .gist each one | ||
masak | also, I've cracked BooK's recursion problem :) gist.github.com/1045125 | ||
and written slides for a lightning talk about it. | 15:13 | ||
pmichaud | TimToady: I can certainly do it that way as well. | ||
TimToady | and then gist and .gist would work similarly | ||
jnthn | masak: yay :) | ||
pmichaud | say and print would have more of a disconnect... but that's probably okay. | ||
masak | jnthn: check it out; the mutual recursion is quite nice. | ||
pmichaud | say 1,2,3; not same as print gist 1,2,3; | ||
masak: o/ | 15:14 | ||
jnthn | masak: najs! | ||
masak | jnthn: I can easily sympathise with gregyoung who said he didn't want to debug his eight mutually recursive methods. debugging two was mind-bending enough :P | ||
it was all "wait... so the actual thing happens where exactly?" :) | 15:15 | ||
(turns out the actual thing happened in the base case) | |||
pmichaud: you did get a few mentions in my first talk ;) | 15:16 | ||
pmichaud | masak: should I be worried? ;-) ;-) | 15:17 | |
masak | pmichaud: I quoted the IRC logs where you said that I usually embarrass you in some way or other :P | ||
pmichaud | (no, I'm not, even if you say I should be) | ||
lol | |||
I can handle that. :) | |||
masak | thought you might like that :P | ||
pmichaud | I can't wait to see the video of the talk | ||
masak | the corner of that slide says "(how meta)" | ||
pmichaud | are slides online? | 15:18 | |
masak | no, but at first opportunity. | ||
might even do that now, in fact. | |||
masak does it | |||
nope, it appears I don't have FTP on this wifi net. | 15:19 | ||
TimToady | lets make gist work like .gist, and say is print $args».gist, "\n" # note the hyper | 15:22 | |
pmichaud | that's what I just did :) | ||
testing | |||
TimToady | otoh, if we used map *.gist we could output say's args lazily, which might be an advantage if they are infinitudinous | 15:23 | |
or maybe it doesn't matter | 15:24 | ||
pmichaud | ..except map flattens. | ||
TimToady | right | ||
we need an infix "call" operator :) | 15:25 | ||
masak | jnthn: I'm happy to report that your talk still works very well. I still think it's the most effective talk ever made for making people interested in Perl 6. | ||
jnthn++ | |||
15:25
zby_home__ joined
|
|||
masak | a good example of "keep to the specifics, and let people generalize". | 15:26 | |
15:26
zby_home_ left
|
|||
jnthn | masak: Yeah, I think it's all too easy to get lost in awesome abstract possibilities, and leave people awed but equally unable to see where to start. | 15:26 | |
masak | aye. | 15:27 | |
TimToady | that's one of the nice things about RC too | ||
masak | I did a talk here last year -- in the same room, in fact -- which fell into exactly that trap. | ||
jnthn wonders what masak said about *him* in his first talk :) | |||
masak | jnthn: in the first talk? just that you have been working on 6model and are now driving the nom branch to completion. | 15:28 | |
jnthn: in the second talk I pointed out that many of your examples were about alcohol... :P | |||
pmichaud | TimToady: gist.github.com/1046587 | ||
(hey look! a gist about gist!) | 15:29 | ||
jnthn | masak: They are? :P | 15:31 | |
masak: I...wonder how that coulda happened :P | |||
TimToady | I'd tell you that's cool but it says that comments aren't allowed on anonymous gists... | ||
15:31
wamba left
|
|||
pmichaud | nom: say (1,2,3).gist ~~ Cool; # nom thinks .gist is Cool also :-) | 15:31 | |
p6eval | nom: OUTPUT«Bool::True» | ||
masak | jnthn: yes. the class is called "Product", but the attribute values make it very clear what kind of product we're talking about :P | ||
TimToady | nom: say gist Cool | 15:32 | |
p6eval | nom: OUTPUT«Cool()» | ||
masak .oO( "klockan Product" ) | |||
pmichaud | evalbot rebuild nom | ||
p6eval | OK (started asyncronously) | ||
pmichaud | oops, forgot to push | ||
masak | p6eval++ | ||
pmichaud | oh, wait, I pushed. should rebuild shortly. | ||
nom: say (1,2,3).gist ~~ Cool; # nom thinks .gist is Cool also :-) | 15:33 | ||
p6eval | nom: OUTPUT«Rebuild in progress» | ||
pmichaud | sorear++ | ||
moritz | pmichaud: you could configure the rakudo repo to use push mode for dalek | ||
TimToady | you should borrow the 'make snap' semantics from some other makefile | ||
masak | nom: what's in progress? | ||
p6eval | nom: OUTPUT«Rebuild in progress» | ||
moritz | pmichaud: see misc/dalek-push.txt in mu repo | ||
TimToady | then you can keep running while it's in progress | ||
pmichaud | looking | ||
moritz | TimToady: nom isn't installable yet, I fear | 15:34 | |
15:34
whiteknight joined
|
|||
TimToady | nor was STD, but it used 'make snap' I believe | 15:34 | |
pmichaud | nom *can* be installable, though. that shouldn't be all that hard. | ||
dalek | kudo/nom: 0cde9b8 | pmichaud++ | src/core/ (2 files): Update gist/.gist/say with latest specifics from TimToady++. |
||
15:35
tokuhirom joined
|
|||
tadzik | pmichaud: I tried that, it has some tricky bits | 15:35 | |
one of the files depends on ./Something.pbc. When you remove the ./ part, it works when installed, but stops working when not installed | |||
TimToady | anyway, point is you can build in a subdir and then do a dir rename to "commit" the transaction | 15:36 | |
15:36
rhr joined
|
|||
pmichaud | is 'make install' sufficient to "build in a subdir and dir rename'? | 15:36 | |
(for snap semantics) | |||
the subsequent make shouldn't affect install until the next make install takes place | |||
TimToady | well, make install doesn't usually do a dir rename, but copies several files into the install dir | 15:37 | |
moritz | pmichaud: 'make install' was sufficient for rakudo master | ||
TimToady | but might be close enough | ||
pmichaud | 'make install' just puts a copy of the latest rakudo (and all of its runtime files) into another dir :-) | ||
TimToady | it's a very small race condition | ||
pmichaud | yes, it is. | ||
TimToady | and the stakes are low here :) | ||
if this were mission critical I'd insist on a directory rename :) | 15:38 | ||
pmichaud | anyway, I'll fix up "make install" | ||
moritz | pmichaud: in fact I could even use the same trick that I use for rakudo master: have two separate directories, and when the rebuild in one is finished, switch over to the other by changing a symlink | ||
rakudo: say get | |||
p6eval | rakudo b2bc99: OUTPUT«Land der Berge, Land am Strome,» | ||
TimToady | a symlink redirect is also pretty snappy | ||
pmichaud | moritz: that works for me also, if you prefer to do that | ||
TimToady still thinks like an old Unix guy, pre symlink... | 15:39 | ||
moritz | pmichaud: I prefer a working 'make install' over no working 'make install' any time :-) | ||
masak | it's nice to see you reimplementing transactions. :) | ||
pmichaud | I'm still going to update 'make install' | ||
masak: why not, we're reimplementing everything else. | |||
now all we need is a good wheel to reimplement :) | |||
masak | a killer app wheel. | 15:40 | |
15:42
daniel-s left
|
|||
dalek | kudo/nom: d2095a0 | jnthn++ | src/Perl6/ (2 files): Get my ($a, $b) style declarations to work. |
15:45 | |
kudo/nom: 8579dcc | jnthn++ | src/Perl6/Actions.pm: Unbust declaration of dynamics. |
|||
kudo/nom: 1e1fab5 | jnthn++ | NOMMAP.markdown: Update nommap. |
|||
ecs: 0a75c8b | larry++ | S29-functions.pod: document gist better |
15:54 | ||
moritz | what's the correct way to pass one functions argument on to another in nom? | ||
pmichaud | argument? or argument list? | ||
moritz | ie I want to make say() a shortcut for $*OUT.say | ||
argument list | |||
pmichaud | the standard would be to use |$args -- I don't think that works quite yet. | ||
moritz | or capture, for that matter :-) | ||
pmichaud | easier for now is simply copy the code for say() into method say() | 15:56 | |
it's only 3-4 lines long, so live with the duplicate until we have captures in place | |||
jnthn | |@pos and |%nameds | ||
both now work | |||
tadzik | oh, so .gist is the new .pretty | ||
masak | and .pretty is dead? | 15:57 | |
jnthn | So you can always do it that way for now too. | ||
tadzik | masak: there is no .pretty I know of | ||
pmichaud | jnthn: yes, but does sub xyz(|$args) { ... } work to put a capture into $args ? | ||
S02 talks about ".pretty" | |||
tadzik | ah, pun ruined | ||
TimToady | there can be a .pretty too, since I don't think .gist worries much about indentation | ||
moritz | pmichaud: it's not about code reuse, it's about making say() act on $*OUT, so that you can redefine it | 15:58 | |
pmichaud | moritz: ah | ||
moritz: just a sec | |||
(writing code snippet) | 15:59 | ||
jnthn | pmichaud: Not yet. | 16:00 | |
pmichaud | moritz: gist.github.com/1046615 # maybe this | ||
16:00
rokoteko left
|
|||
pmichaud | I'll have to think about 'make install' a bit more -- it involves getting @INC to work right. | 16:01 | |
moritz | pmichaud: thanks, will try | 16:02 | |
pmichaud | and/or getting a proper factoring for module loading between nom/nqp | ||
jnthn: PROCESS fallback is already implemented -- we just need to be able to store things into the PROCESS package :) | 16:04 | ||
jnthn | pmichaud: Yeah, I knowz :) | ||
pmichaud | okay, the nommap makes it sound like there's more to be done there | ||
jnthn | pmichaud: Just need to implement our-scoped variables and stuff. :) | ||
pmichaud | even being able to do PROCESS::{...} would be helpful :-) | 16:05 | |
(and shouldn't require "our") | |||
TimToady | Real Globals™ | ||
16:06
estrabd left
|
|||
TimToady | actually, http:// and friends are the only real globals | 16:06 | |
pmichaud | surprisingly, realglobals.com is available :) | 16:07 | |
moritz | on my machine, 127.0.0.1/ shows a different page than on yours | ||
TimToady | ooh, sounds like a .com business plan | ||
moritz | so much for "Real Globals" :-) | 16:08 | |
TimToady | none of this mushy cloud stuff for us | ||
jnthn | pmichaud: Just making Stash subclass Hash at the moment | ||
pmichaud: ah, yay | |||
> module Foo { our sub bar { say 100 } }; Foo.WHO<&bar>() | |||
100 | |||
pmichaud | yes. everyone remember this time to get out of the tech bubble before it bursts :-) | ||
TimToady | one could argue that github is a Real Globals site | ||
jnthn | and | 16:09 | |
> module Foo { }; Foo.WHO<$OUT> = 42; say $Foo::OUT | |||
42 | |||
pmichaud | \o/ | ||
now we can start to put back $*IN, $*OUT, %*ENV, @*INC, etc. | 16:10 | ||
jnthn | Feels good that Stash isa Hash :) | 16:11 | |
pmichaud | that's the way it should be :) | ||
jnthn | Though we've well and truely tied ourselves up with circularity sticky tape now :) | ||
dalek | kudo/nom: 2301d8c | jnthn++ | src/Perl6/Metamodel/ (2 files): Make it so Stash ~~ Hash, so we can introspect and install stuff into it from Perl 6 land. |
||
pmichaud | jnthn: well, we couldn't delay those bindings too much longer :) | ||
16:11
karupanerura joined
|
|||
TimToady | Ducts are often circular... | 16:11 | |
jnthn | :P | ||
TimToady | Ducks are sorta oval... | ||
pmichaud | Ducks lay oval-shaped eggs (or is that egg-shaped ovals?) | 16:12 | |
jnthn | I suspect that we'll always need something at the start of the setting that pieces things together. I just hope that we can shove it in a BEGIN at some point and have it all get serialized. | ||
TimToady | isn't that what they make Ovaltine out of? | ||
we could rename BEGIN to BREAKFAST and you could have a BREAKFAST serial | 16:13 | ||
jnthn | *groan* | ||
pmichaud: Remember that dynamic should look in GLOBAL before PROCESS. | |||
16:14
karupas left
|
|||
pmichaud | okay, no problem. for some reason master doesn't seem to have it that way. | 16:14 | |
TimToady wonders if we should rename GLOBAL to INTERP or some such | 16:15 | ||
nah... | |||
should rename it to DUCKPOND or some such | |||
16:21
Mowah joined
16:24
zby_home__ is now known as zby_home_
|
|||
masak | time for a lightning talk. see y'all later. | 16:26 | |
16:26
masak left
16:28
jaldhar left
16:29
jaldhar joined
|
|||
dalek | kudo/nom: d024ee6 | pmichaud++ | src/core/Str.pm: Assignment to my ($a, $b) declarations now works -- let's use it. |
16:32 | |
kudo/nom: 561a88b | pmichaud++ | src/Perl6/Metamodel/ (2 files): Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
jnthn | pmichaud: Done the fix so you should be able to implement GLOBAL now. :) | 16:34 | |
pmichaud | jnthn: yes, I'm getting there. ETOOMUCHLHF here :) | ||
jnthn | :) | ||
pmichaud: ooc, do you conciously avoid --rebase when pulling? | 16:37 | ||
pmichaud | no | ||
dalek | kudo/nom: 451e80b | jnthn++ | src/Perl6/SymbolTable.pm: Make mentions of GLOBAL.WHO work out (so DYNAMIC will be able to look in there). |
||
kudo/nom: 089cb09 | pmichaud++ | src/core/operators.pm: Argument list interpolation now works (jnthn++) -- eliminate some Q:PIR by using it! |
|||
kudo/nom: f26a237 | pmichaud++ | src/Perl6/SymbolTable.pm: Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
jnthn | OK :) | ||
pmichaud | I just think that if --rebase is desirable it ought to be the default :) | ||
TimToady | that's why I have a gp alias :) | ||
jnthn | Well, it does avoid the merge messages | ||
They don't really bother me though :) | 16:38 | ||
pmichaud | yeah, same here | ||
I figure they're going to happen, so okay. | |||
I wonder when someone would *not* want to --rebase, though. | |||
jnthn | heh, I love how the above commit lost the comment "# TODO: Why?" :) | ||
pmichaud | since I no longer need to worry about it, yes :) | 16:39 | |
you might want to figure it out someday, though :) | |||
jnthn | yeah, I'm a little curious about it | ||
pmichaud | there's still a similar Q:PIR in MapIter if you want to look at it. I briefly tried removing the Q:PIR in MapIter also but performance went way down and it failed besides, so that one isn't LHF and I'll deal with it a bit later | 16:40 | |
also need to figure out how to make Parcel interpolation a bit more efficient | |||
jnthn | |@foo isn't going to be as efficient for now as the Q:PIR | ||
It's kinda a mess to handle that stuff at the moment. :/ | 16:41 | ||
16:41
wamba joined
|
|||
jnthn | Parrot is too helpful on the caller side. | 16:41 | |
pmichaud | interesting how "too helpful" translates to "not helpful" :) | ||
I'll leave the Q:PIR in place, then -- map iteration speed is hugely important still. | 16:42 | ||
I'm a little less concerned about the speed of generating sequences at this point -- code clarity is probably better there. | |||
jnthn | *nod* | 16:43 | |
pmichaud | where is GLOBAL:: defined? | ||
(maybe I should look at the commits.) | |||
jnthn | pmichaud: We just shove GLOBAL into the Parrot ns, because those actually *are* global, which we actually want for once. ;) | 16:44 | |
pmichaud: Elsewhere there's code to make sure the current view of GLOBAL is put there. | |||
All I fixed was making sure GLOBAL was recognized as a type name. | |||
GLOBAL::foo already worked | |||
pmichaud | I'm wondering where PROCESS:: should go, then. | 16:45 | |
jnthn | Yeah, that one is kinda magical too... | ||
sorear | good * #perl6 | 16:46 | |
jnthn | Right now we don't have a case where GLOBAL and PROCESS would be different. | ||
pmichaud | oh, I'm certain they're different, though. Can we just set up PROCESS to be side-by-side with GLOBAL? | ||
jnthn | pmichaud: Oh, they're different. I just mean that we don't currently have any cases where they'd not want to be installed in the same kinda place. | 16:47 | |
pmichaud | right | ||
so, side-by-side then? | |||
jnthn | Yeah | ||
wfm | |||
Probably wants to be factored a bit different from GLOBAL | 16:48 | ||
Oh | |||
Actually I can construct a case where they'd be different today. | |||
pmichaud: Want me to set up the PROCESS bits? | |||
pmichaud | jnthn: yes please. I could figure out how to do it, but I'll learn more by seeing the patch from you I think. | 16:49 | |
16:49
tokuhirom left
|
|||
pmichaud | I'll get &DYNAMIC working for PROCESS and GLOBAL in the meantime | 16:49 | |
16:50
jaldhar left
16:51
jaldhar joined
16:52
Pathin left
|
|||
dalek | kudo/nom: 0bd5420 | jnthn++ | src/Perl6/Actions.pm: Apply routine and method traits. |
16:53 | |
16:53
Pathin joined
16:54
Pathin_ joined
16:58
fhelmberger left
|
|||
dalek | kudo/nom: 1383361 | pmichaud++ | src/core/stubs.pm: Update dynamic variables to look in GLOBAL.WHO and PROCESS.WHO namespaces (jnthn++). |
17:03 | |
jnthn | pmichaud: I'm guessing the PROCESS bit doesn't actually work yet? | 17:04 | |
17:04
Pathin left
17:05
Pathin joined
|
|||
pmichaud | jnthn: it should work as soon as you do your PROCESS magic :-) | 17:07 | |
17:07
tokuhirom joined
|
|||
pmichaud | but since the result of not finding the var in PROCESS is a fail anyway, I'm not too worried about catching ENOPROCESS | 17:07 | |
afk for a short while -- lunch | 17:08 | ||
jnthn | > PROCESS.WHO<$IN> = 42; say PROCESS.WHO<$IN> | 17:09 | |
42 | |||
JimmyZ | \o | ||
17:12
Pathin left
17:13
Pathin joined
|
|||
jnthn | hi JimmyZ :) | 17:13 | |
17:14
Pathin left,
Pathin_ left
|
|||
JimmyZ | hello jnthn | 17:14 | |
17:14
Pathin joined,
Pathin_ joined
|
|||
sorear | hello JimmyZ | 17:15 | |
JimmyZ | hello sorear | ||
sorear wonders how much longer niecza will be able to get away with having typeglobs | |||
JimmyZ | will go to sleep soon, it's 1:15am here ;) | ||
jnthn | JimmyZ: :) | 17:17 | |
sorear | nom: my %foo; %foo<bar> := 5; %foo<bar>++ | ||
p6eval | nom: OUTPUT«Cannot use bind operator with this LHS at line 1, near " 5; %foo<b"current instr.: 'nqp;HLL;Grammar;panic' pc 23569 (src/stage2/gen/NQPHLL.pir:6311)» | ||
JimmyZ knows that sorear is working hard on niecza on his own. | |||
jnthn | JimmyZ: Only a few days until I'll be in your timezone too ;) | 17:18 | |
JimmyZ | good, welcome to china again(or beijing again) | 17:19 | |
17:20
fhelmberger joined,
fhelmberger left
17:23
Pathin_ left
17:24
pochi left,
pochi joined,
Moukeddar joined
17:25
Pathin_ joined
|
|||
jnthn | JimmyZ: Yes, will be nice to be back. Even if the weather will be very hot for me. :) | 17:26 | |
17:29
jaldhar left
|
|||
pmichaud | moritz: want me to go ahead and add the dalek post-receive hook? | 17:30 | |
17:30
jaldhar joined
|
|||
moritz | pmichaud: yes please | 17:31 | |
pmichaud | when it says "remove the entry from dalek-conf.json -- what do I do there exactly? just remove the "url" entry? | ||
no, that doesn't seem right | 17:32 | ||
moritz | the hash that contains the url | ||
pmichaud | dalek will still be aware of the branches? | ||
oh yes, I guess it will | |||
moritz | yes, of all | 17:33 | |
pmichaud | okay, working. | ||
17:34
Pathin_ left
|
|||
dalek | : d9cc647 | pmichaud++ | misc/dalek-conf.json: [dalek]: Update rakudo in dalek-conf.json to use the github post-receive hook. |
17:35 | |
17:35
Pathin_ joined
|
|||
dalek | kudo: 4f47105 | (JD Horelick)++ | docs/announce/2011.06: Update 2011.06 announcement with the releasename and another Douglas Adams reference. |
17:35 | |
kudo: 70c5ca4 | (JD Horelick)++ | docs/release_guide.pod: Update release_guide.pod for 2011.06 release. |
|||
kudo: b2bc994 | (JD Horelick)++ | VERSION: [release] bump VERSION |
|||
pmichaud | should be done. I used host04.appflux.net:5000/dalek?t=fre...net,parrot as the url -- think that's correct. | 17:36 | |
moritz++ # thanks for pointers | |||
afk, lunch again | |||
jnthn | In Texas, lunch is so big they have it twice. :P | ||
JimmyZ | \o, rakudo commit reports are in #parrot again | 17:37 | |
dalek | kudo/nom: 7bfc64f | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Get PROCESS in place. Should only ever have one of these. |
||
kudo/nom: baf7677 | jonathan++ | src/Perl6/ (2 files): Make things like $PROCESS:IN = ... work. |
|||
jnthn | oops, we compile GLOBAL.WHO a load too statically... | 17:38 | |
JimmyZ must sleep | 17:40 | ||
17:40
JimmyZ left
17:44
Pathin_ left
17:46
Pathin_ joined
17:53
cbk joined
17:55
Pathin_ left
17:56
Pathin_ joined
|
|||
dalek | kudo/nom: 2c533ea | jonathan++ | src/Perl6/Actions.pm: Fix GLOBAL lookups. |
17:57 | |
kudo/nom: de38225 | jonathan++ | src/Perl6/SymbolTable.pm: Was a little to eager in lexical => lexical_6model; still need to look for lexical in the odd place. Unbusts some lookups. |
|||
jnthn | pmichaud: Can now do: | ||
> $PROCESS::IN = 42; say $*IN | |||
42 | |||
moritz looks into setting up $*IN etc. | |||
17:59
Moukeddar left
|
|||
jnthn | Time for a break. | 18:03 | |
sorear | jnthn: nice | 18:04 | |
18:06
Pathin_ left
18:07
Pathin_ joined
|
|||
sorear | I wonder how to represent "Mu, but initialize to Any" as a type constraint. | 18:07 | |
Perhaps I should separate "type constraint" and "initial value" on variable metaobjects | 18:08 | ||
pmichaud | jnthn: ping | 18:10 | |
18:16
Pathin_ left
|
|||
jnthn | pmichaud: pong | 18:17 | |
18:17
Pathin_ joined
18:20
karupanerura left
|
|||
moritz | $*IN and $*OUT work now | 18:21 | |
locally | |||
sorear | jnthn: I'm having a crazy idea to make all Packages use the same STable | 18:23 | |
dalek | kudo/nom: c66a42a | moritz++ | src/core/IO.pm: update IO.say |
18:25 | |
kudo/nom: a67ebc3 | moritz++ | src/core/IO.pm: set up $*IN and $*OUT |
|||
pmichaud | jnthn: where's a good (canonical?) place to put initializations that need to occur asap at startup. for example, PROCESS::IN and PROCESS::ENV ? | 18:26 | |
18:27
Pathin_ left
|
|||
jnthn | pmichaud: Well, think with PROCESS::IN is that you can't do it until IO is defined | 18:27 | |
*thing | |||
pmichaud | okay, ENV then :-) | 18:28 | |
jnthn | pmichaud: So "somewhere in the setting" is as good a bet as anything | ||
18:28
Pathin_ joined
|
|||
pmichaud | that seems workable. | 18:28 | |
jnthn | Well, same story for ENV apart from s/IO/Hash/ :) | ||
pmichaud | I'll start with that then. | ||
we'll try it there and see if it's "soon enough" :-) | |||
jnthn | If you like, feel free to create a special place in the setting where we collect these things. | ||
Well, I suspect it is. | |||
Even BEGIN block comes after loading of the setting. | 18:29 | ||
pmichaud | for now I'll go with setting them in the file where the needed type is defined. for example, where moritz++ currently has $*IN and $*OUT | ||
if we decide to centralize it, it'll be globals.pm or process.pm or something like that | |||
jnthn | Loading the setting (unless --setting=NULL) is close to the first thing we do when compiling something. | ||
pmichaud | wfm | 18:30 | |
jnthn | sorear: I'm mostly confused by that. | ||
sorear: OTOH, you did say it was crazy... :) | |||
18:30
Mowah left
18:38
karupanerura joined,
Pathin_ left
18:39
Pathin_ joined
|
|||
sorear | jnthn: I'm thinking that since packages are never instantiatable, we could give them storage without causing too much confusion | 18:46 | |
jnthn: then store WHO and HOW in the type object, and avoid allocating a STable | |||
jnthn | sorear: eww. | 18:47 | |
sorear: Not worth the mess and extra checks whenever doing get_who, etc. | 18:48 | ||
It's hardly like an STable is big. | |||
18:48
Pathin_ left
|
|||
sorear | How big is a 6model STable? | 18:48 | |
18:49
Pathin_ joined
|
|||
jnthn | sorear: Not sure off hand. 16ish pointers. | 18:50 | |
sorear: With room for shrinkage. | |||
Could probably quite easily slash it to 10. | 18:51 | ||
So, 40 bytes or so. | |||
TimToady | on a 32 bit machine... | 18:52 | |
jnthn | Sure | ||
18:56
karupas joined,
karupanerura left
18:58
Moukeddar_ joined
18:59
Pathin_ left
19:00
Pathin_ joined
19:09
Pathin_ left
19:10
Pathin_ joined
19:18
karupanerura joined
19:20
Pathin_ left,
karupas left
19:21
Pathin_ joined
19:25
whiteknight left,
whiteknight joined
|
|||
moritz | $PROCESS::ERR = IO.new; | 19:26 | |
nqp::bindattr($PROCESS::ERR, IO, '$!PIO', pir::getstderr__P()); | |||
what's wrong with that? | |||
I get | |||
P6opaque attributes NYFI 4 (attribute '$!PIO' not found) | |||
19:27
Moukeddar_ left
|
|||
jnthn | moritz: bindattr needs explicit decontainerization of the target object. | 19:28 | |
moritz | jnthn: ah | ||
TimToady | I hope that F stands for "fully" :) | 19:29 | |
jnthn | TimToady: Yes! | ||
moritz | what else could it stand for? :-) | ||
19:29
envi left
|
|||
jnthn | TimToady: I...shoulda seen the other interpretation. :) | 19:29 | |
TimToady | to the pure, all things are pure... :) | 19:30 | |
moritz | jnthn: that you didn't honors you | ||
19:30
Pathin_ left
|
|||
jnthn | I need to clear that up at some point, but happily nobody tried to do MI with attributes yet. ;) | 19:30 | |
moritz | jnthn: well, I knew about that liimtation :-) | 19:31 | |
19:31
Pathin_ joined
|
|||
jnthn | moritz: At the moment that error really means "I don't have that attribute" and/or "no MI yet" | 19:32 | |
It's not that it's especially hard to implement. It just never hit the critical path of tasks yet. :) | |||
moritz | nom: sub f(|$) { say |pir::perl6_current_args_rpa__P() }; f 3, 4 | 19:34 | |
p6eval | nom: OUTPUT«Method 'ARGLIST_FLATTENABLE' not found for invocant of class 'ResizablePMCArray'current instr.: 'f' pc 278 ((file unknown):52219245) (:1)» | ||
dalek | kudo/nom: 4f8a6d9 | moritz++ | src/core/IO.pm: set up $*ERR, jnthn++ |
||
moritz | nom: sub f(|$) { say |pir__perl6_box_rpa__P(pir::perl6_current_args_rpa__P()) }; f 3, 4 | 19:35 | |
p6eval | nom: OUTPUT«Could not find sub &pir__perl6_box_rpa__Pcurrent instr.: 'f' pc 278 ((file unknown):76216813) (:1)» | ||
jnthn | pir:: | ||
moritz | src/core/Parcel.pm | 19:36 | |
100:sub pir__perl6_box_rpa__PP(|$) { | |||
jnthn | Also PP | ||
er, huh | |||
O.O | |||
jnthn looks at pmichaud++ :) | |||
moritz | I just don't see why it's not available to userland | 19:37 | |
jnthn | nom: pir__perl6_box_rpa__P | ||
p6eval | nom: OUTPUT«Could not find symbol '&pir__perl6_box_rpa__P'current instr.: 'fail' pc 190872 (src/gen/CORE.setting.pir:0) (:138)» | ||
jnthn | nom: pir__perl6_box_rpa__PP | ||
p6eval | nom: OUTPUT«ResizablePMCArray: Can't shift from an empty array!current instr.: 'pir__perl6_box_rpa__PP' pc 192016 (src/gen/CORE.setting.pir:48073) (:459)» | ||
jnthn | moritz: You did P, not PP | ||
moritz | nom: sub f(|$) { say |pir__perl6_box_rpa__P(pir::perl6_current_args_rpa__PP()) }; f 3, 4 | ||
p6eval | nom: OUTPUT«Could not find sub &pir__perl6_box_rpa__Pcurrent instr.: 'f' pc 278 ((file unknown):73951725) (:1)» | ||
moritz | jnthn: ah, thanks | 19:38 | |
still no luck | |||
jnthn | ? | ||
moritz | oh | ||
jnthn | oh, no | ||
moritz | my bad | ||
jnthn | heh :) | ||
moritz | nom: sub f(|$) { say |pir__perl6_box_rpa__PP(pir::perl6_current_args_rpa__P()) }; f 3, 4 | ||
p6eval | nom: OUTPUT«Method 'ARGLIST_FLATTENABLE' not found for invocant of class 'Parcel'current instr.: 'f' pc 289 ((file unknown):51612144) (:1)» | ||
jnthn | OK, that one is fixable :) | ||
moritz: In Parcel.pm | 19:39 | ||
method ARGLIST_FLATTENABLE() { $!storage } | |||
19:40
Pathin_ left
19:41
[particle]1 joined
19:42
Bzek left,
Pathin_ joined
|
|||
moritz | jnthn: thanks, will try | 19:43 | |
19:43
[particle] left
19:45
whiteknight left,
whiteknight joined
|
|||
pmichaud | 19:39 <jnthn> method ARGLIST_FLATTENABLE() { $!storage } | 19:46 | |
probably not right, since $!storage is an RPA | |||
oh, it might work | 19:47 | ||
hmmm | |||
oh, the problem is that it won't flatten | |||
moritz | with that, calling with the same argument as |pir__perl6_box_rpa__PP(pir::perl6_current_args_rpa__P()) "works" | ||
ie seems to work, after an initial test :-) | 19:48 | ||
pmichaud | how should: foo(|(2,3,(4,5),6)) end up in the argument list? | ||
is it four arguments or five ? | |||
jnthn | pmichaud: That's the point | 19:49 | |
pmichaud: We need an RAP or Parrot doesn't know what to do with it. | |||
pmichaud | same for foo(|(2,3,@a,5)) | ||
jnthn | *RPA | ||
pmichaud | getting an RPA is easy -- I just am not sure it's should be Parcel's RPA :) | ||
*it | |||
jnthn | pmichaud: Ah, OK | ||
pmichaud | what happens with foo(|(2,3,(4,5),6)) ? Is that four arguments to foo, or five? | 19:50 | |
19:50
whiteknight left
|
|||
pmichaud | rakudo: sub foo($a, $b, $c) { say "$a $b $c"; }; foo(|(1,2,(3,4))) | 19:51 | |
p6eval | rakudo b2bc99: OUTPUT«1 2 3 4» | ||
pmichaud | rakudo thinks it's three. | ||
19:51
Pathin_ left
|
|||
pmichaud | (or in my example above, it'd be four arguments) | 19:51 | |
TimToady | I'd think it would depend on what the (4,5) is bound to | 19:52 | |
it's an embedded parcel | |||
pmichaud | I'm excluding slurpies for the moment | ||
TimToady | so it's 2 args in to list binding but 1 to an item binding | ||
19:52
Pathin_ joined
|
|||
TimToady | | only does one level | 19:52 | |
pmichaud | okay | ||
then RPA's $!storage is fine | |||
sorry, Parcel's $!storage RPA is fine | 19:53 | ||
jnthn | pmichaud: The other option is we try to teach Parrot how to cope with more stuff with its :flat | 19:54 | |
pmichaud: Though I think we may need to anyway. | |||
pmichaud: Unless we want to have a big mess around with |$capture again. | |||
pmichaud | I'm fine with the way it is now, at least for a while. | ||
jnthn | I'm not happy with how |$cap is handled in master. :/ | ||
pmichaud | even |$capture shouldn't be too hard -- just put ARGLIST_FLATTENABLE method onto Capture | ||
jnthn | pmichaud: Which returns what? | 19:55 | |
pmichaud | an rpa.... or are you worried about named captures? | ||
jnthn | named | ||
oh, darn | |||
nom: sub foo(:$a) { say $a }; my %h = a => 42; foo(|%h) | |||
p6eval | nom: OUTPUT«42» | ||
jnthn | huh | 19:56 | |
OK, it works, I dunno how ;) | |||
moritz | magic[tm] | ||
jnthn | I thought you had to :flat :named things | ||
But seems Parrot figures it out...somehow. :) | |||
pmichaud | I thought you were doing that. | ||
moritz | :-) | ||
pmichaud re-checks the patch. | |||
jnthn | I...don't think so. | ||
If I am, the beer last night was stronger than I remember... | 19:57 | ||
tadzik | yay, I has the flight tickets to yapceu :) | ||
moritz | \o/ | ||
moritz jealous | |||
jnthn | nom: sub foo(:$a) { say $a }; foo(|{ a => 42 }) | ||
p6eval | nom: OUTPUT«42» | ||
jnthn | tadzik: yay, see you there! | ||
tadzik | I'll be there on 11th too, the flight ticket for 11th was >50% cheaper than for 12th | 19:58 | |
moritz | I guess Riga is well worth it :-) | ||
tadzik | jnthn: yeah, looking forward to it :) | ||
yes, that opens some opportunities | |||
moritz | tadzik: you can see if soembody wants hackathon or so :-) | 19:59 | |
pmichaud | jnthn: I'm not sure how/why that's working... but it's not something that worries me atm for some reason. | 20:00 | |
jnthn | pmichaud: I'm mostly scared about what Parrot is doing that means it works :) | ||
tadzik | moritz: there's even a scheduled hackathon on 12th, so that'd be a heck-athon :P | 20:01 | |
pmichaud | find_lex $P101, "%h" | ||
$P102 = $P101."ARGLIST_FLATTENABLE"() | |||
$P103 = "&foo"($P102 :flat) | |||
you're right... no :named flag. I have no idea what Parrot is up to there, then. :) | |||
jnthn | Some questions are better left unasked. :) | 20:02 | |
20:02
Pathin_ left
|
|||
pmichaud | maybe parrot isn't doing anything with it, and its the binder code that is seeing it correctly (because of the :flat flag?) | 20:02 | |
jnthn | No, the flattening is caller side | ||
Which is why you can't |@foo is @foo is infinite. | |||
pmichaud tests. | |||
20:03
Pathin_ joined
|
|||
dalek | kudo/nom: 348b506 | moritz++ | src/core/ (2 files): make say() and print() redispatch to the methods on $*OUT |
20:03 | |
moritz would like to mention that not all IO was very LHF-ish | 20:04 | ||
tadzik | moritz++ # non-trivial patches ) | ||
:) | |||
pmichaud | jnthn: parrot automatically puts a flattening hash into the slurpy hash: gist.github.com/1046845 | 20:05 | |
jnthn | pmichaud: ah :) | ||
pmichaud | bet they don't even realize that :) | ||
jnthn | Yes, that's my worry. | ||
20:07
wooden joined
20:12
Pathin_ left
20:13
cbk left,
Pathin_ joined
|
|||
pmichaud starts taking an axe to obsolete parts of HLL::Compiler | 20:14 | ||
20:15
karupas joined
20:17
karupanerura left
20:19
cbk joined
|
|||
dalek | ecza: 4d8c2a8 | sorear++ | lib/ (5 files): Attributes and aggregate elements default to Any with a Mu constaint |
20:20 | |
TimToady wonders why people keep spelling it axe when ax is perfectly acceptable | 20:22 | ||
20:22
Pathin_ left
20:23
Pathin_ joined
|
|||
pmichaud | It's a "Texas ax" | 20:23 | |
TimToady | I thought that was a chainsaw | 20:24 | |
pmichaud | Kind of like an Idaho potatoe | ||
TimToady keeps thinking "axe" should be pronounced like "aches" | |||
pmichaud | at least I'm not using "axe" in place of "ask", as in "Don't axe me that again!" | 20:25 | |
TimToady | no, you're not an ax murderer :) | ||
or would that be an ask murderer? | 20:26 | ||
phenny: tell daniel-s "http%3A%2F%2Ffoo%20bar%2F".subst(/'%' (<[0..9A..F]> ** 2)/, -> $/ { chr(:16($0)) }, :g).say | 20:27 | ||
phenny | TimToady: I'll pass that on when daniel-s is around. | ||
20:28
bakedb left,
pochi_ joined,
pochi left,
tyatpi joined
20:29
pochi_ left,
pochi joined
20:32
Pathin_ left
20:34
Pathin_ joined
20:37
pernatiy left
|
|||
sorear | subst's second argument takes a parameter? | 20:39 | |
moritz | sorear: that's a rakudo hack. $/ should be automagically available in it | 20:40 | |
20:40
kaare_ left
20:43
Pathin_ left
20:44
bitpart joined,
Pathin_ joined
|
|||
jnthn gets curious what pmichaud is going to axe :) | 20:47 | ||
20:48
wooden left
|
|||
jnthn | std: our Int $x; our Int $x; | 20:51 | |
p6eval | std 37a0cdd: OUTPUT«ok 00:01 119m» | ||
jnthn | std: our Int $x; our Str $x; | ||
p6eval | std 37a0cdd: OUTPUT«ok 00:01 119m» | ||
jnthn | What do type constraints on an "our" variable actually mean? | ||
Of note, what if: | 20:52 | ||
$Foo::x = 42; module Foo { our Str $x; } | |||
20:52
karupanerura joined
|
|||
jnthn | Should we have set the variable in Foo's stash up at BEGINish time? | 20:53 | |
20:53
karupas left
|
|||
jnthn | If so, what do multiple our's refering to it mean? | 20:54 | |
:) | |||
20:57
Pathin_ left
|
|||
sorear | niecza: our Int $x | 20:57 | |
p6eval | niecza v6-196-g4d8c2a8: OUTPUT«===SORRY!===Common variables are not unique definitions and may not have types at /tmp/yUopoyDe_L line 1 (EOF):------> our Int $x⏏<EOL>Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setti… | ||
20:57
Pathin_ joined
|
|||
sorear | consider that my vote | 20:58 | |
20:58
fhelmberger joined
21:02
bitpart left
|
|||
dalek | ecza: 9fa31a8 | sorear++ | / (3 files): my-variables default to Any but with Mu constraint |
21:04 | |
mikemol | TimToady: I like 'moddiv' ... sounds like "Muad'dib" | 21:05 | |
21:06
Pathin_ left
21:07
Pathin_ joined
21:09
dual left
21:10
masak joined
|
|||
masak | \o/ | 21:10 | |
jnthn | lolitsmasak! | 21:11 | |
tadzik | lawlitsCarl! | ||
masak resumes uploading today's slides | |||
jnthn | Vive le masak! | ||
21:11
whiteknight joined
|
|||
masak | today has been a satisfying day. | 21:12 | |
jnthn | :) | ||
masak | I did my second lightning talk, ever. | 21:13 | |
jnthn | How'dit go? | ||
masak | well, for such a dry topic. | ||
jnthn | Mutually recursive triangle making thingies is dry? :) | ||
masak | "How to mutually recurse yourself to a sierpinski DAG using Perl 6." :) | ||
sorear | masak! | 21:14 | |
masak | sorear! | ||
21:15
dual joined
21:16
Pathin_ left
21:17
Pathin_ joined
|
|||
dalek | kudo/nom: b9b7f54 | jonathan++ | NOMMAP.markdown: Remove a completed entry from nommap. |
21:19 | |
kudo/nom: f83b81d | jonathan++ | / (2 files): First simple cut at our-scoped variables. |
|||
21:25
Pathin_ left
21:26
Pathin_ joined
|
|||
dalek | p: 2f91679 | pmichaud++ | src/HLL/Compiler.pm: Remove long Q:PIR section from HLL::Compiler.command_line(). |
21:29 | |
p: 21aa0e4 | pmichaud++ | / (4 files): Merge branch 'master' of github.com:perl6/nqp |
|||
masak | my first and last talk from today: masak.org/carl/fpw-2011-excited/talk.pdf masak.org/carl/fpw-2011-sierpinski/talk.pdf | 21:32 | |
21:35
Pathin_ left
|
|||
pmichaud | oops, that commit broke something | 21:35 | |
(odd because it worked earlier) | |||
fixing. | |||
jnthn | masak: is "merci bcp" the french "kthxbai"? :) | ||
masak++ # slides | 21:36 | ||
pmichaud | ... "have to put food on the family"? | ||
21:36
Pathin_ joined
|
|||
pmichaud dumps a load of baguettes on his kids | 21:36 | ||
jnthn | .oO( that'll give them a breadache... ) |
21:37 | |
mikemol | jnthn: You run a site? (I somehow missed it) | 21:38 | |
Granted the appropriate response to a question like that in a crowd like this is "which one do you mean?" | 21:39 | ||
It was mentioned earlier in the context of masak's second talk, or something like that. | |||
pmichaud | looks like the problem was that I needed to rebuild Parrot. I need to add mberends++ super-useful "you need to update Parrot" script to NQP | 21:40 | |
jnthn | mikemol: You may be looking for my slides at www.jnthn.net/articles.shtml or my Perl 6 blog at 6guts.wordpress.com/ | ||
masak | pmichaud: it's a Bushism. | ||
jnthn: yes. :) | |||
jnthn: well, not really. but I like it for its brevity. it feels French. | |||
pmichaud | masak: wow, so it is! (Bushism) | ||
mikemol | Something about aweing people, but not leaving them without a clue where to go. :) | ||
tadzik | as in George Bush? | ||
mikemol | I think I've seen the blog in the p6 planet. *reads the slides* | 21:41 | |
Ok, there are a lot of slides. Heh. | |||
pmichaud | I hadn't heard that particular one before. | ||
masak | :) | 21:42 | |
silly old George. | |||
pmichaud | Hard to believe he lives only 18 miles away from me. :-) | ||
tadzik | that's like 1 ranch? :) | 21:43 | |
pmichaud | it can be, yes. Although there aren't many ranches that size in this part of Texas (that I know of) | 21:44 | |
21:45
Pathin_ left,
Patterner left
21:46
Pathin_ joined
|
|||
masak | my talk generated questions after. jnthn's talk generated questions during. interesting how that worked. | 21:46 | |
jnthn | "WTF was the author of these slides thinking?!" | 21:47 | |
21:47
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
dalek | p: faf34e9 | pmichaud++ | src/HLL/Compiler.pm: Eliminate obsolete "astgrammar" stuff from HLL::Compiler, |
21:47 | |
21:55
Pathin_ left
21:56
Pathin_ joined
|
|||
pmichaud | afk for a bit, errands | 21:57 | |
22:04
Pathin_ left
22:05
lue joined
22:06
Pathin_ joined
22:14
pochi left
22:15
Pathin_ left
22:16
Pathin_ joined
|
|||
sorear | masak: Do you know who started the "Perl 6 has not yet been released" meme? | 22:22 | |
22:22
masak left
22:23
phluks_ joined
22:25
Pathin_ left
22:26
phluks_ left,
Pathin_ joined
|
|||
dalek | kudo/nom: 706682b | jonathan++ | src/ (3 files): Fix roles in pre-compiled situation, so they work as well as in immediate-run mode. |
22:32 | |
kudo/nom: dbdb675 | jonathan++ | / (6 files): Add empty Associative and Positional roles; make List/Parcel/EnumMap do them appropriately. |
|||
kudo/nom: cc24038 | jonathan++ | NOMMAP.markdown: Remove done items from nommap. |
|||
22:35
Pathin_ left
|
|||
sorear | jnthn: Why is it STORE_AT_KEY and not bind_key? | 22:35 | |
22:36
Pathin_ joined
|
|||
jnthn | sorear: Where? :) | 22:36 | |
sorear: Also, probably wrong person to ask. :) | |||
pmichaud++ is working on the details of those things | 22:37 | ||
store and bind sound like different operations though | |||
nom: try { die 'omgz' }; say 'ok' | 22:38 | ||
p6eval | nom: OUTPUT«Method 'blocktype' not found for invocant of class 'PAST;Op'current instr.: 'nqp;Perl6;Actions;statement_prefix:sym<try>' pc 37226 (src/gen/perl6-actions.pir:0)» | 22:39 | |
jnthn | *sigh* guess exceptiony stuff needs sorting out soon | 22:40 | |
pmichaud | in the case of Arrays, we're storing a value into a container, not binding a value. | 22:41 | |
same for Hashes | |||
22:43
pjcj_ left
|
|||
jnthn | pmichaud: It looks like Parrot only lets us throw a Parrot exception PMC :/ | 22:44 | |
pmichaud | jnthn: yes, we'll have to wrap it up. | ||
jnthn | ffs | ||
pmichaud | but it's not so bad -- we have to do similar things with hashes and arrays | ||
jnthn | Well, it's more the inverse this time | ||
pmichaud | I was going to work on that a bit later tonight/tomorrow | ||
jnthn | Wrap the 6model Exception object up in a Parrot Exception just to throw it. | ||
And unwrap it again later. | |||
Talk about wasteful. | |||
22:44
Pathin_ left
|
|||
pmichaud | hmmmm | 22:45 | |
I'm not sure I follow | |||
jnthn | pmichaud: We can't have Parrot Exception objects leaking into Perl 6 land. | ||
pmichaud | I understand that part | ||
jnthn | pmichaud: But throw needs a Parrot exception. | ||
pmichaud | why would we be throwing a 6model object, though? | 22:46 | |
jnthn | pmichaud: So if we actually want to communicate the real Perl 6 exception object, we need to bundle it inside the Parrot one. | ||
pmichaud | just put the Perl6 exception object as the payload of a Parrot exception | ||
jnthn | Yeah | ||
22:46
Pathin_ joined
|
|||
pmichaud | or just attach the 6model object to the parrot exception's property hash :) | 22:47 | |
jnthn | Just a waste of a PMC every time we need to throw an exception... | ||
Parrot's entire exceptions implementation seems optimized to be as slow and unhelpful as possible. | |||
22:48
masak joined
|
|||
pmichaud | ugh, HLL::Compiler needs a big refactor of its names. | 22:49 | |
people have confused "interactive mode" and "commandline" | |||
"commandline_banner" is really "interactive_banner" | 22:50 | ||
s/is/should be/ | |||
jnthn | OK, I cba to fight the exception stuff tonight. I either leave it for pmichaud++ or I look tomorrow :) | 22:51 | |
pmichaud | yes, I want to work on fail() also, so I can look at exceptions too. | ||
also I want to fix up ll-backtrace in HLL::Compiler a bit | |||
so tonight may just be an exceptional night for me :) | |||
jnthn | \o/ | ||
sorear | how does fail work? | 22:52 | |
masak | it just returns a Failure object, no? | ||
sorear | masak: it also twiddles CALLER::CALLER so that it will die on return if the failure isn't handled | 22:53 | |
pmichaud | and if the Failure is used, it throws an exception | ||
sorear | masak: S04:1277 | 22:54 | |
pmichaud | sorear: I think that's somethign different than what I'm describing. | ||
sorear | I'm also confused by the "can be stored in any container whose type allows the Failure role to be mixed in" language | ||
22:55
Pathin_ left
22:56
Pathin_ joined,
masak left
22:58
sivoais joined
23:01
mattp_ joined
23:04
Pathin_ left
23:06
Pathin_ joined
23:14
Pathin_ left,
colomon left
23:15
pjcj joined,
Pathin_ joined
23:17
wamba left
23:24
Pathin_ left
23:25
Pathin_ joined
23:28
daniel-s joined
|
|||
daniel-s | good morning | 23:29 | |
phenny | daniel-s: 20:27Z <TimToady> tell daniel-s "http%3A%2F%2Ffoo%20bar%2F".subst(/'%' (<[0..9A..F]> ** 2)/, -> $/ { chr(:16($0)) }, :g).say | ||
daniel-s | wow | 23:32 | |
23:34
Pathin_ left
23:35
Pathin_ joined
|
|||
TiMBuS | decoding urls huh | 23:36 | |
daniel-s | rakudo: "http%3A%2F%2Ffoo%20bar%2F".subst(/'%' (<[0..9A..F]> ** 2)/, -> $/ { chr(:16($0)) }, :g).say | 23:38 | |
p6eval | rakudo b2bc99: OUTPUT«foo bar/» | ||
daniel-s | rosettacode.org/wiki/URL_decoding | ||
I was trying to solve that last night | |||
I want to put his solution up there next to mine | 23:39 | ||
33 lines, vs 1 line | 23:40 | ||
TiMBuS | cpansearch.perl.org/src/GAAS/URI-1..../Escape.pm scroll to bottom | 23:43 | |
23:44
Pathin_ left
23:45
Pathin_ joined
23:52
molaf_ joined
23:54
Pathin_ left
23:55
Pathin_ joined
|
|||
sorear | good morning daniel-s | 23:55 | |
23:55
molaf left
|