»ö« 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. |
|||
TimToady | sorear: here's a Set.pm that works (mostly) under niecza: gist.github.com/1654636 | 00:01 | |
TimToady is not sure about precedence levels yet... | 00:02 | ||
[Coke] | ooh, TimToady++ | 00:06 | |
TimToady | something to be said for making them list infixes | ||
so that they can coerce lists to sets automatically | 00:07 | ||
oops, forgot the Bool returns too | 00:08 | ||
dalek | (sorear) cool, TimToady. | 00:10 | |
(sorear) I guess object-keyed hashes would make a nice addition... | 00:11 | ||
(sorear) also, to keep masak++ happy, needs ASCII aliases. Preferably infix:<\in>, infix:<\subseteq>, etc :D | 00:12 | ||
00:13
cooper joined
|
|||
sorear | for some reason my connection to host02 just dropped out for about five minutes | 00:13 | |
it's been laggy all day | |||
how's host02 been treating you, TimToady? | |||
TimToady | dropping lots of packets | 00:14 | |
00:16
LlamaRider joined
|
|||
sorear | o/ LlamaRider | 00:16 | |
LlamaRider | o/ | ||
hi there | 00:17 | ||
00:17
donri left,
thou left
00:19
benabik_ joined,
benabik left,
benabik_ is now known as benabik
|
|||
jnthn | arrrghhh, finally I think I see $nasty-bug | 00:20 | |
jnthn feels stupid for not spotting it earlier | |||
LlamaRider | oh noes, I just started rebuilding rakudo :D I guess there will be need to do that again | 00:21 | |
jnthn | LlamaRider: Well, my patch didn't work yet, but also it's not something that impacts current Rakudo master built against the suggested NQP. | 00:23 | |
LlamaRider | *whew* | ||
good luck with it then :) | 00:24 | ||
jnthn | Thanks. | ||
If it is what I think it is, then it's one of those annoying situations where you spend an hour spotting the issue and then the patch is 1 line long. | |||
TimToady | revised to have return types, and set ops can now coerce to sets | 00:30 | |
(typing blind, so please forgive typos) | |||
and there are already Texas versions | 00:31 | ||
currently the list infixes all have the same precedence | |||
arguably (&) should be tighter than (|) for consistency... | 00:32 | ||
but I don't know what set theoreticians think about the precedence of ∪ vs ∩ | 00:33 | ||
jnthn | uuurah, patch is success \o/ | ||
dalek | p: bbd5639 | jnthn++ | src/QAST/Compiler.nqp: Helps to actually have the cstack pulled out of the cursor before we go trying to look at stuff in it. |
||
jnthn | phenny: tell moritz latest nqp master fixes pretty much all the failures. rx.t and comb.t I didn't verify as they need ICU; since it's just 3 tests I'm happy to todo those and win the many, many more we get - plus the important backtracking functionality. | 00:36 | |
phenny | jnthn: I'll pass that on when moritz is around. | ||
00:39
cognominal_ joined
00:43
cognominal left,
nwc10 joined
|
|||
nwc10 | To check, Rakudo isn't considered "production ready" yet, is it? | 00:44 | |
jnthn | nwc10: I don't think of it as such yet. You can do useful stuff with it, for sure, but I don't think any commonly used definition of "production ready" should be applied to it yet. | 00:46 | |
nwc10 | Good stuff. Otherwise I'd be asking for the non-public security bug reporting address :-) | 00:47 | |
Because I assume that all the fun with hash collisions applies to Rakudo too. www.ocert.org/advisories/ocert-2011-003.html | |||
(no-one has mentioned it in this context yet, to my knowledge, so I'm assuming that it will be, as one has to take action to avoid it) | |||
jnthn | nwc10: Think github.com/parrot/parrot/commit/cc...8f7d9a6d9a may be related | 00:50 | |
No idea *if* Parrot_platform_get_entropy() is sufficiently random | 00:51 | ||
nwc10 | yes, that looks plausible. If it's "working", then hashes should come back in a different order for each run | ||
jnthn | nwc10: Plausible, yeah. I ain't tried it. | ||
doy | i'd honestly be a bit surprised if it was an issue, considering perl 5 fixed it back in 2003 | ||
nwc10 | I'm pretty sure I don't have a build of Rakudo anywhere | ||
indeed. It was so strange watching the rest of the world blow up. | 00:52 | ||
The perl 5 games are here: perl5.git.perl.org/perl.git/blob/HE...il.c#l5802 | |||
it doesn't need much to be safe | 00:53 | ||
doy | also, it doesn't require hashes to come back in a different order for each run, necessarily - perl 5 only starts randomizing things if it detects degenerate behavior (unless you set a compile flag) | ||
nwc10 | yes, but that was sort of a fudge to get back to binary compatibility with modules which had pre-compiled hash values in them | ||
jnthn | Perl_croak(aTHX_ "Your random numbers are not that random"); | ||
:D | |||
nwc10 | it's sort of useful to always come back with different orders, to set programmer expectations | ||
doy | sure, just saying it's not required | 00:54 | |
(: | |||
nwc10 | but it was a bit too, um, politically awkward to retrofit that | ||
IIRC one of Dan's original stated policies for Parrot was that if something didn't need to be ordered, then that thing should be made to be returned in a non-predictable order | |||
to force people to code defensively, rather than having assumtions that then break | 00:55 | ||
no idea how well that stuck. | |||
00:55
LlamaRider left,
donri joined
|
|||
TimToady | I guess I don't have Texas versions of ∈ or ∋ yet... okay, new gist with (elem) and (cont) too | 00:57 | |
00:58
kboga joined
|
|||
kboga | nom: say 0x1000000000000000 <+ 1 | 00:59 | |
p6eval | nom fa821c: OUTPUT«Bool::False» | ||
kboga | nom: say 0x1000000000000000 +< 1 #oops | 01:00 | |
p6eval | nom fa821c: OUTPUT«2305843009213693952» | ||
japhb | *rez* | 01:06 | |
phenny | japhb: 21 Jan 23:53Z <sorear> tell japhb I have my doubts about $?USAGE as a true compile-time constant. say $?USAGE; multi MAIN ...; say $?USAGE # should the two says differ? | ||
TimToady | perl6: my %hash = 'a' .. 'z' X=> 1; say %hash.keys | 01:07 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«z y x w v u t s r a b c d e f g h i j k l m n o p q» | ||
..pugs b927740: OUTPUT«***  Unexpected "%hash" expecting "=", context, ":" or "(" at /tmp/KAT84gW118 line 1, column 4» | |||
..rakudo fa821c: OUTPUT«a b c d e f g h i j k l m n o p q r s t u v w x y z» | |||
japhb | sorear, Did you mean to have a BEGIN before the first 'say $?USAGE'? Because otherwise I don't think they would be different. Perhaps I am in violent agreement ... $?USAGE to me can only be set once the unit has been completely compiled, so no, it is not in that sense the same as other compile-time constants. | 01:09 | |
jnthn | o/ japhb | ||
japhb | Note that I am VERY backlogged because of $day-job craziness, so if there has been discussion of this in the last week, I don't know about it. | ||
01:10
nwc10 left
|
|||
japhb | o/ jnthn, long time since we've been on at the same time. :-) | 01:10 | |
jnthn | japhb: Yeah, I was pretty exhausted by Christmas and took some mostly-offline rest. | ||
japhb | Good for you! | 01:11 | |
Still feeling charged up, even after 3 weeks of January? | |||
jnthn | japhb: Reasonably. Was a bit tired from teaching last week - I had the misfortune of sleeping awfully the night before the course. But rested well today and feeling reasonably good again. :) | 01:12 | |
japhb | Oh yeah, I hate it when I get bad sleep right before something important. At least you're better now! | ||
I actually got massively bad sleep the night before my job interview for my current job. I babbled. A lot. :-) | 01:13 | ||
jnthn | Yeah. The course went fine, but I was done for after each day. | ||
01:14
nornagest left
|
|||
japhb | What was the subject last week? C# again? | 01:15 | |
01:17
LlamaRider joined
|
|||
jnthn | japhb: Yeah. I made this advanced C# course at $dayjob, which for some reason is selling *really* well. I've got bookings for giving it every month through to May or something crazy. | 01:17 | |
japhb | There are many worse problems to have. ;-) | ||
jnthn | Yes, I'm happy with this particular problem. :) | ||
kboga | nom: say nqp::p6box_i(pir::shl__III(2**64, 1)); say 2**64 +< 1; say nqp::bitshiftl_I(nqp::p6decont(2**64), nqp::unbox_i(1), Int) | 01:18 | |
jnthn | (As are my $dayjob :-)) | ||
p6eval | nom fa821c: OUTPUT«0036893488147419103232» | ||
japhb | I bet! | 01:19 | |
kboga | looks like nom still uses the pir::shl op for bigints? | 01:20 | |
jnthn | kboga: If so, that would be decidedly ungood. | ||
kboga: Looks like you're correct :( | 01:21 | ||
japhb | *sigh* From the sounds of the kids, I think I need to disappear again ... | ||
*derez* | |||
kboga | ehm, that last p6decont and unbox_i shouldn't be there... | ||
jnthn | kboga: Oddness. moritz++ even wrote ops for doing the bigint shl/shr by the looks of it. | 01:22 | |
kboga | oh, shr too | ||
01:23
shinobicl_ joined
|
|||
jnthn | Yeah | 01:23 | |
kboga: It looks like a really easy fix - just change the Int candidates for the ops in Int.pm from nqp::bitshiftl_i to nqp::bitshiftl_I | 01:24 | ||
kboga: Feel free to try it if you wish...it's 2:30AM here and I want to sleep. :) | |||
kboga: Or if not then please just file a ticket, and somebody will get to it soon no doubt :) | |||
kboga | this should fix that: pastebin.com/2KqtY64w | 01:26 | |
jnthn | kboga: Looks plausible. | ||
kboga: If it works, feel free to send pull request or lemme know and I can apply it tomorrow. Or maybe moritz++ beats me to it. | 01:27 | ||
jnthn -> sleep; 'night all | |||
LlamaRider | good night | 01:28 | |
01:30
kboga left
01:39
thou joined
01:40
shinobicl_ left
01:57
kboga joined
|
|||
kboga | pull request filed, good night jnthn & p6 | 01:57 | |
01:58
kboga left
02:01
Tenzen joined
02:05
icwiener left,
icwiener joined
|
|||
colomon | OMG! | 02:20 | |
==> Succesfully installed panda-niecza | |||
02:21
jferrero left
|
|||
colomon | sorear: ping? | 02:22 | |
02:26
jferrero joined
02:27
s1n left
02:30
kboga joined
02:32
thou left
02:34
donri left
|
|||
kboga | phenny: tell jnthn test summary report of latest nqp (including your patch) & rakudo (with icu) and the shl/shr patch applied: pastebin.com/VLV2Pezx . The only failing test looks a lot like the one that nqp accidently passed for the wrong reasons github.com/perl6/nqp/commit/078ea5...02eed982d2 | 02:35 | |
phenny | kboga: I'll pass that on when jnthn is around. | ||
02:38
LlamaRider left
02:39
kboga left
02:55
_twitch joined
|
|||
ggoebel | colomon++ | 02:58 | |
sorear | colomon: pong | 03:01 | |
colomon | sorear: o/ | ||
sorear | japhb: I was under the impression that $?FOO was reserved for constants, which can only be set at the moment they are defined | 03:02 | |
03:02
_twitch left,
_twitch joined
|
|||
colomon | at some point, we need to think about making ~/.perl6/lib part of the default path | 03:04 | |
though I'm still kind of thinking there should be separate .perl6s for rakudo and niecza. | |||
03:05
Chillance left
03:19
_twitch left
03:20
whiteknight left
03:26
_twitch joined
03:28
orafu left,
orafu joined
03:38
Psyche^ joined
03:42
Patterner left,
Psyche^ is now known as Patterner
03:50
leprevost left
|
|||
araujo | anybody knows if there exist some 'partial' bindings or initial effort for some Gui toolkit bindings already? | 04:14 | |
04:22
PacoAir left
04:25
icwiener left,
icwiener joined
|
|||
dalek | Heuristic branch merge: pushed 137 commits to rakudo/str-numeric by japhb | 04:26 | |
04:44
icwiener left,
icwiener joined
05:06
benabik_ joined,
benabik left,
benabik_ is now known as benabik
05:14
molaf joined
05:17
icwiener left,
icwiener joined
05:20
molaf left
05:22
molaf joined
|
|||
TimToady | araujo: colomon++ was playing with Gtk in December, but for some reason search on the ir clock doesn't find it | 05:23 | |
I found a ref by searching for "button" instead | |||
moritz | in the niecza repo there are some gtk examples | 05:25 | |
phenny | moritz: 21 Jan 23:37Z <jnthn> tell moritz thanks for doing the test run, that looks promising; I know a bunch of those that now explode are all doing so due to one underlying cause. | ||
moritz: 00:36Z <jnthn> tell moritz latest nqp master fixes pretty much all the failures. rx.t and comb.t I didn't verify as they need ICU; since it's just 3 tests I'm happy to todo those and win the many, many more we get - plus the important backtracking functionality. | |||
araujo | TimToady, ooh, I see, thanks, I might ask him later | 05:26 | |
moritz, they work? | 05:27 | ||
araujo will check | |||
moritz | araujo: I haven't tried them, but I have seen screenshots and blogposts about them | ||
perl6: say (-4) | 05:29 | ||
p6eval | pugs b927740, rakudo fa821c, niecza v13-327-g5a9c36f: OUTPUT«-4» | ||
moritz | perl6: say (-4) +< 2 | ||
p6eval | pugs b927740, rakudo fa821c, niecza v13-327-g5a9c36f: OUTPUT«-16» | ||
moritz | perl6: say 4 +< 2 | ||
p6eval | pugs b927740, rakudo fa821c, niecza v13-327-g5a9c36f: OUTPUT«16» | ||
TimToady | perl6: say -4 +< 2 | 05:30 | |
p6eval | pugs b927740, rakudo fa821c, niecza v13-327-g5a9c36f: OUTPUT«-16» | ||
dalek | kudo/nom: 2e84915 | kboga++ | src/core/Int.pm: Make the bitwise shift subs on Int:D's actually use the bigint arithmetic nqp ops that Moritz++ coded. |
||
kudo/nom: ba6e783 | moritz++ | src/core/Int.pm: Merge pull request #56 from kboga/fix_bigint_shl/shr Make the bitwise shift subs on Int:D's actually use the bigint arithmetic nqp ops that Moritz++ coded. |
|||
japhb | sorear, Looking at S28, I don't think $*USAGE would be appropriate twigil use; the USAGE does not change from run to run (or during a run, if MOP actions that would alter USAGE are disallowed), and is indeed fixed after compile is complete. However, unlike some of the other $? variables, its value is not fully determined at the instant of a reference to it in single-pass compilation. Thus if you want to constant-fold it, you cannot do so | 05:35 | |
on the fly -- you must constant-fold it after the unit has been compiled. Which sounds to me like it needs some special casing, somewhere from very low to medium on the hackishness scale, depending on how the rest of the compiler is architected. | |||
sorear | japhb: The most expedient approach would be to make $?USAGE an ordinary (LISimple) lexical | 05:36 | |
although this would mean that the user could do $?USAGE := ... and it wouldn't be rejected | |||
TimToady | &MAIN.usage is another possibility | 05:37 | |
japhb | TimToady, in fact, jnthn has suggested that $?USAGE be set at the right time by doing exactly &MAIN.usage . :-) | 05:39 | |
TimToady | if .usage can be calculated, why bother precalculating it? | ||
it's not like it needs heavy optimization... | |||
japhb | Taking the alternate branch in my comment above about having to disallow MOP actions that would change USAGE at runtime, we are then left with a variable that must be handled like a $*, but is more logically named $? | ||
TimToady | I'd be perfectly happy blowing $?USAGE away if &MAIN.usage works | 05:40 | |
japhb | TimToady, I think we may have a winner, then. | 05:41 | |
Because that's sure as heck the easiest implementation. | |||
(Though it does leave the tiny bleck that if &MAIN gets .usage() from Routine, then Routine will have a .usage() that only makes sense for one specific use case.) | 05:42 | ||
TimToady | or people should learn to read a more general description of what the routine wants that works either way | 05:43 | |
assuming one could finesse that... | |||
sorear | huh? | 05:44 | |
japhb | TimToady, we could make it output a couple of different syntaxen depending on an adverb. | ||
TimToady | that's also an option | 05:45 | |
japhb | --foo=bar v. :foo('bar') | ||
TimToady | or .usage vs .USAGE :) | ||
japhb | ooh | ||
.oO( If you're going to shout about the Routine's name, perhaps you want to shout about its usage as well? ) |
05:46 | ||
TimToady | it's an idea, anyway | ||
sorear | TimToady: Does the return value from the mainline code of a file mean anything in Perl 6 under any circumstance? | ||
TimToady | I think it'd be less POLA if it's in sink context | 05:47 | |
(the last statement) | |||
but allowing explicit return would allow explicit fail too | |||
japhb | TimToady, what if the last line of the file happens to be an assignment? | 05:48 | |
sorear | I don't understand what you're trying to say. | ||
What I'm asking - is there any difference whatsoever between -e 0 and -e 1 ? | |||
05:48
JimmyHoff left
|
|||
TimToady | japhb: assignments don't care if they're in sink context | 05:48 | |
I don't think so | |||
japhb | Which is to say, were you suggesting forcing sink context on the last line, or just changing from the Perl 5 default? | ||
TimToady | how is that different? | 05:49 | |
well, Perl 5 has the last line in sink context I believe | |||
japhb | Really? Never tried that. | 05:50 | |
sorear is still a sink contect unbeleiver, fwiw | |||
TimToady | buubot_backup: eval use warnings; 1 + 1 | 05:51 | |
buubot_backup | TimToady: 2 | ||
05:51
_twitch left
|
|||
TimToady | well, warns with -2 | 05:51 | |
-w | |||
Useless use of a constant (2) in void context at - line 1. | |||
buubot is obviously screwing around with the context | 05:52 | ||
japhb | eval use 5.10; sub context { my $c = wantarray; say $c ? "list" : defined $c ? "scalar" : "void"; } context; | 05:53 | |
buubot_backup | japhb: ERROR: Perl v5.100.0 required (did you mean v5.10.0?)--this is only v5.14.2, stopped at (eval 20) line 1. BEGIN failed--compilation aborted at (eval 20) line 1. | ||
TimToady | "useless use of" are some of the most useful warning that Perl 5 gives | ||
japhb | eval use 5.10.0; sub context { my $c = wantarray; say $c ? "list" : defined $c ? "scalar" : "void"; } context; | ||
buubot_backup | japhb: scalar 1 | ||
japhb | Interesting! Using -E locally, that's void. | 05:54 | |
TimToady | it's obvsiously in scalar context if it reports the result | ||
japhb | Oh, duh. | ||
*sigh* | |||
japhb is clearly not thinking with all oars in water tonight | |||
dalek | p: 0b6d2f1 | moritz++ | VERSION: bump VERSION to 2012.01 |
05:55 | |
japhb | Sadly, I think that means I should not code. | ||
TimToady | sorear: sink context has *only* the use of triggering side effects; if the last operation has no side effects, it makes no sense in a sink context | 05:58 | |
and very nearly always indicates a misunderstanding of something like precedence | 05:59 | ||
so sink context is very important for figuring out awesome error messages | |||
buubot_backup: eval use warnings; 2 + rand; 3 | 06:01 | ||
buubot_backup | TimToady: Useless use of addition (+) in void context at (eval 20) line 1. 3 | ||
TimToady | perl6: 2; 3; | 06:02 | |
p6eval | pugs b927740, rakudo ba6e78, niecza v13-327-g5a9c36f: ( no output ) | ||
TimToady | we have a ways to go there | ||
dalek | kudo/nom: 66c4b84 | moritz++ | tools/build/NQP_REVISION: bump NQP revision |
06:03 | |
kudo/nom: 17ae87e | moritz++ | docs/ChangeLog: update ChangeLog |
|||
japhb | TimToady, is that Perl 5 warning altered by an overload of '+'? | 06:04 | |
TimToady | I doubt it; and if you overload '+' with something with side effects, you deserve whatever you get | ||
japhb | Heh. | ||
TimToady | knowing which functions are really functions might be important enough to distinguish a 'fun' keyword from the 'sub' keyword | 06:09 | |
I don't want to see 90% of the functions marked 'is pure' | |||
alternately, we say that any subs that default to returning something are by default functions unless declared otherwise | 06:10 | ||
japhb | Hmmm. And the consequences of lying about purity? | ||
TimToady | sometimes you get caught sooner, sometimes later | 06:11 | |
it's pretty easy to spot whether you're changing something outside the function most of the time | |||
at least in the immediately available code | 06:12 | ||
dalek | kudo/nom: 70b2ce7 | moritz++ | docs/ (3 files): 2012.01 release announcement |
06:13 | |
TimToady | it would be interesting to go through our current settings and see how much is pure already | ||
japhb | .oO( "Cannot call impure routine from code declared to be a pure function." ) |
||
moritz | phenny: tell jnthn I mostly prepared the January release; is there anything in your TODO worth waiting for? | 06:14 | |
phenny | moritz: I'll pass that on when jnthn is around. | ||
TimToady | for an immutable type like Set, every method is pure | ||
dalek | ast: 6556f08 | moritz++ | / (4 files): fudge a rakudo regression (which we bogusly passed before), and several unfudges |
06:16 | |
TimToady | otoh, something like ff is pure only if both sides of it are pure | ||
moritz | we really need a better immutability marker than WHICH | ||
infix:<does> also need to check if an object is immutable | |||
TimToady thinks that immutable is really the default, and mutators should check if an object is mutable | 06:17 | ||
more capabilities based than prohibition based | 06:18 | ||
moritz | any objects wihch have no rw accessors and simply don't assign to attributes are immutable | ||
TimToady | effectively immutable, but maybe hard to determine | 06:19 | |
moritz | right | 06:20 | |
which is why I'd like some kind of declaration | |||
TimToady | let's not call it 'data' like Haskell calls things that aren't data | 06:21 | |
sorear | I also need an immutability check for constant folding | 06:23 | |
TimToady | sure; note how Perl 5 complains about 1+1 as constant 2 rather than infix '+' :) | 06:24 | |
buubot_backup: eval 2+2; 3 | 06:25 | ||
buubot_backup | TimToady: 3 | ||
TimToady | buubot_backup: eval use warnings; 2+2; 3 | ||
buubot_backup | TimToady: Useless use of a constant (4) in void context at (eval 20) line 1. 3 | ||
TimToady | like that | ||
sorear | eval use warnings; 2+2; 3 | ||
buubot_backup | sorear: Useless use of a constant (4) in void context at (eval 20) line 1. 3 | ||
sorear | you don't even need the nick | ||
TimToady | ah | ||
eval is one of my favorite functions :P | |||
buubot_backup | TimToady: ERROR: No such class favorite at (eval 20) line 1, near "of my favorite" syntax error at (eval 20) line 1, near "of my favorite" | ||
sorear | blech, p5 indirect object syntax | 06:26 | |
TimToady | I don't suppose we can make it recognize p5eval instead... | ||
sorear | japhb: now starting to try to port your MAIN_HELPER | 06:28 | |
japhb | sorear, sorry to hear it. ;-) | 06:32 | |
sorear | wait, seriously, Perl 6 MAIN doesn't suppport permutation? | 06:37 | |
japhb | ? | 06:38 | |
sorear | ls /var -l | ||
japhb | Right, that is not supported. | ||
Thus, you can't do an interface like ImageMagick. | 06:39 | ||
But nothing stops you from parsing @*ARGS yourself ... | |||
TimToady | for offbeat argument processors, one can either preprocess @*ARGS or avoid MAIN entirely | ||
sorear | meh, I'm just spoiled by GNU getopt | 06:40 | |
TimToady | it's not an important enough feature to make it do everything | ||
though if we required use of MAIN, there'd be more pressure in that direction | 06:41 | ||
japhb | Why would we require that? | ||
TimToady | to be prescriptionist like other language designers :) | ||
japhb | Heh. | ||
TimToady | Sorry, "Heh." does not contain a verb. | 06:42 | |
japhb | It contains a weakened interjection. | ||
TimToady | .oO(a weekend interjection) |
06:43 | |
japhb | .oO( Interjections! Show excitement, or emotion! They're set apart from a sentence by an exclamation point, or by a comma when the feeling's not as strong. ) |
||
TimToady | Oh--are those the only two ways? | 06:44 | |
japhb | School House Rock had entirely too much influence on my English lessons as a child. | ||
TimToady | conjunction junction... | ||
japhb | Exactly. I loved that one. Heck, I loved almost all of the grammar and science ones. | 06:45 | |
I didn't find out until I had children of my own that I'd missed the entire season of multiplication ones. | |||
06:45
benabik left
|
|||
japhb | My favorite of all of them though is still The Tale of Mr. Morton, I think. | 06:46 | |
TimToady | sorear: you have to realize I'm a bit irrational when it comes to getopt routines; I've never ever used one in C. | ||
I've also never used lex/flex, probably for similar reasons | 06:48 | ||
06:48
icwiener left
|
|||
TimToady | (not necessarily good reasons...) | 06:48 | |
I guess it's not surprising that Perl 6 tries to make all those at least somewhat obsolete | 06:49 | ||
sorear | perl6: my $?FOO | 06:56 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«===SORRY!===Variables with the ? twigil cannot be declared using my; they are created using 'constant'. at /tmp/W8ChKzy5Qg line 1 (EOF):------> my $?FOO⏏<EOL>Unhandled exception: Check failed at /home/p6eval/ni… | ||
..pugs b927740, rakudo 70b2ce: ( no output ) | |||
TimToady | speaking of obsolete, I'd better go to bed... | 06:58 | |
zzz & | |||
sorear | good night | ||
japhb | o/ | ||
sorear | japhb's MAIN_HELPER does some funny things with constraint_list ... | 07:03 | |
japhb | lemme go pull up my ancient code | 07:04 | |
07:04
icwiener joined
|
|||
japhb | sorear, yeah, some of that is Rakudo-isms. It tries to DWIM when the original constraint was a constant, for instance. | 07:06 | |
IIRC, that is. | |||
sorear | japhb: 'ancient' code? | ||
japhb | In nom years. | ||
;-) | |||
sorear | I see | 07:07 | |
japhb | It's been too long since I've done anything but bug fix in here, because my supply of readily available tuits dried up before Failure and val() were ironed out. | ||
Which is why my comment about being sorry you had to port the current version was only half joking. | 07:08 | ||
07:11
icwiener left
|
|||
sorear | nom: sub MAIN() { }; @*ARGS = '--help' | 07:35 | |
p6eval | nom 70b2ce: OUTPUT«Unexpected named parameter 'help' passed in sub MAIN at /tmp/VtShIBsnEA:1 in sub MAIN_HELPER at src/gen/CORE.setting:7709 in block <anon> at /tmp/VtShIBsnEA:1 in <anon> at /tmp/VtShIBsnEA:1» | ||
sorear | nom: say Code.^methods(:local); | ||
p6eval | nom 70b2ce: OUTPUT«Method 'gist' not found for invocant of class 'Sub' in method gist at src/gen/CORE.setting:4056 in sub say at src/gen/CORE.setting:5931 in block <anon> at /tmp/Yv4v3fXyXP:1 in <anon> at /tmp/Yv4v3fXyXP:1» | ||
08:06
drbean joined
08:19
Patterner left
08:21
Psyche^ joined,
Psyche^ is now known as Patterner,
Trashlord left
08:33
Patterner left
08:36
kaare_ joined
08:38
Psyche^ joined,
Psyche^ is now known as Patterner
08:50
Trashlord joined
08:51
GlitchMr joined
|
|||
tadzik | good morning | 08:52 | |
sorear | o/ tadzik | 08:53 | |
GlitchMr | hi | ||
sorear | o/ GlitchMr | ||
08:54
kaare__ joined,
kaare_ left
|
|||
sorear | Why isn't Signature.perl just a call to map and join? | 08:57 | |
...And why does this code read so much like NQP? | 09:06 | ||
dalek | ecza: 41df027 | sorear++ | main.pl: Start drafting port of Sub introspection, MAIN_HELPER |
09:10 | |
sorear -> sleep | |||
tadzik | g'night | 09:15 | |
09:24
kaare_ joined,
kaare__ left
09:49
kaare_ left
09:53
dbr joined
|
|||
fsergot | good morning :) | 10:06 | |
10:10
mj41 joined
10:18
birdwindupbird joined
10:26
kaare_ joined
10:49
donri joined
11:02
cognominal_ left
11:03
cognominal joined
11:12
bbkr1 joined
11:13
fsergot left,
sftp_ joined
11:14
sftp left
11:20
bbkr1 left
11:35
fsergot joined
11:39
fsergot left
11:45
mauror joined
11:48
MayDaniel joined
11:54
mauror left
11:57
fsergot joined,
fsergot left
11:58
fsergot joined,
am0c joined
11:59
mauror joined
12:01
birdwindupbird left,
birdwindupbird joined
12:05
MayDaniel left
|
|||
moritz | hmmmmmmmmmmr cf7…....... | 12:09 | |
12:10
whiteknight joined,
fsergot left
12:14
mauror left
|
|||
jnthn | afternoon | 12:15 | |
phenny | jnthn: 02:35Z <kboga> tell jnthn test summary report of latest nqp (including your patch) & rakudo (with icu) and the shl/shr patch applied: pastebin.com/VLV2Pezx . The only failing test looks a lot like the one that nqp accidently passed for the wrong reasons github.com/perl6/nqp/commit/078ea5...02eed982d2 | ||
jnthn: 06:14Z <moritz> tell jnthn I mostly prepared the January release; is there anything in your TODO worth waiting for? | |||
tadzik | moritz: oh, hello Ronja :) | 12:16 | |
12:16
mauror joined
|
|||
moritz | wow, she even managed to produce a character I don't know how to write on that keyboard | 12:18 | |
jnthn | moritz: Thanks for that! The only thing I wanted to do was make sure MiniDBI can work under nom. In the worst (though hopefully unlikely) case it'd need fixes in the dyncall handling code. I will check that out within the next few hours. So, we can put out that release today :) | ||
tadzik | moritz: try alt+comma, or alt+dot | 12:19 | |
moritz | tadzik: neither does it | ||
and I haven't even configured a compose key :-) | |||
masak | g'day, #perl6. | 12:20 | |
jnthn | o/ masak | 12:21 | |
tadzik | :) | ||
hey masak | |||
masak | hey hey hey -- from a train! | ||
:D | |||
I don't know why I find that so fascinating every time. | 12:22 | ||
tadzik | :P | ||
jnthn | masak: I did it on a plane in December! | ||
masak | whoa. | ||
jnthn | masak: How fascinating would that be? :) | ||
12:22
bbkr1 joined
|
|||
masak | that's Internet without even touching the ground! | 12:22 | |
I bet that requires some sort of wire-less technology. | 12:23 | ||
tadzik | as if the internet was in the air! | ||
nah, I doubt it. I think the plane has this roll of cable, and it's plugged in somewhere on the airport | |||
that'd be SO MUCH FASTER | 12:24 | ||
jnthn | Oh...and that's why they only do this on shorthaul flights? The cable isn't long enough to do longhaul flights yet? Now I see it... | ||
moritz | it's very thin glas fiber, that's why you normally don't see it | ||
tadzik | or maybe it's using a wireless fiberoptics | ||
like, you know, a flashlight and a receiver | |||
jnthn | OK so...MiniDBI is so old it mentions proto. | ||
Also | |||
I don't have a commit bit on it :( | |||
masak | in fact, contrails are just glass fiber glittering in the air. | 12:25 | |
jnthn | Ah, but moritz++ does :) | ||
tadzik | hah, git-proxy :P | ||
moritz | jnthn: and I think I can even give you a commit bit | 12:26 | |
jnthn | moritz: ah, ok | ||
12:26
hugme joined
|
|||
moritz | provided I get that stupid bot running :-) | 12:26 | |
12:26
ChanServ sets mode: +v hugme
|
|||
moritz | hugme: add jnthn to MiniDBI | 12:26 | |
jnthn | I just did a fork but if you can give me a bit on the real thing... :) | ||
hugme | moritz: You need to register with freenode first | ||
moritz | uhm, can somebody else please try that? | 12:27 | |
tadzik | hugme: add jnthn to MiniDBI | ||
hugme | tadzik: You need to register with freenode first | ||
tadzik | I _am_ registered! | ||
moritz | seems the bot is b0rked | ||
I'll work around it | |||
12:27
hugme left
|
|||
jnthn | hugme: add jnthn to MiniDBI | 12:27 | |
tadzik | :) | ||
moritz | jnthn: please re-check if you now have access | 12:31 | |
jnthn | Seems so! :) | ||
moritz++ | |||
moritz | jnthn, masak: do you already have travel plans for DPW2012 (like, which flights you take)? | 12:40 | |
12:40
fsergot joined
12:41
PacoAir joined
|
|||
masak | moritz: no, not yet. | 12:45 | |
jnthn | masak: I looked up the train, fwiw. 10 hours! | 12:51 | |
masak | about what I'd expect. | 12:52 | |
tadzik | heh, my bus ride will take about 14 :P | ||
jnthn | yeah | ||
12:53
hugme joined,
ChanServ sets mode: +v hugme
|
|||
moritz | hugme: add jnthn to MiniDBI | 12:54 | |
hugme hugs jnthn. Welcome to MiniDBI! | |||
moritz | \o/ | ||
masak | \o/ | 12:55 | |
jnthn | Just successfully pushed there too :) | 12:56 | |
moritz | long story short, the freenode responses had changed | ||
has anybody seen or heard from mberends lately? | 13:00 | ||
jnthn | No :( | 13:01 | |
13:01
am0c left
|
|||
masak misses mberends | 13:01 | ||
moritz too | |||
masak | he's probably very busy, as he was in the latter half of 2011. | 13:02 | |
jnthn | Last I saw him was the Perl 6 workshop. | ||
er | |||
London Perl Workshop | |||
:) | |||
tadzik | (: | ||
masak .oO( Freudian Slip Perl Workshop ) | 13:03 | ||
jnthn | :P | 13:04 | |
Hm. Well, now MiniDBI loads the mysql driver and gets to the point of trying to connect. :) | |||
colomon | araujo: see github.com/colomon/mandelbrot/blob...delbrot.pl for example | 13:05 | |
moritz now sent an email to mberends++ | 13:12 | ||
moritz adds a META.info to MiniDBI | 13:17 | ||
dalek | p: 9c20151 | jnthn++ | src/pmc/sixmodelobject.pmc: Revert a commit I thought I'd already reverted, but musta only done in a branch. |
13:30 | |
13:32
tokuhirom joined
13:33
Alias left
13:35
tokuhir__ joined
13:38
bbkr1 left
13:39
tokuhirom left
|
|||
moritz | nom: role A { has $!foo }; class B does A { method x() { $!foo = 'bar' } }; B.new.x | 13:40 | |
p6eval | nom 70b2ce: OUTPUT«===SORRY!===Attribute $!foo not declared in class Bat /tmp/lPtQ_Qrpe8:1» | ||
moritz | that one is stopping MiniDBD::Pg | ||
jnthn | moritz: I just updated MiniDBD::mysql for the nom semantics in that regard. | 13:41 | |
masak | yeah; nom is right there. | ||
jnthn | I get it to connect to mysql and prepare a statement, but it's blowing up on executing it. | ||
masak | moritz++ jnthn++ # working on MiniDBD | 13:44 | |
moritz | jnthn: I've copied your fix over to MiniDBD::Pg | 13:45 | |
Ronja is having fun with the water she was supposed to drink, sucking it out of the bottle and spreading it all over the table | 13:48 | ||
jnthn | :) | ||
moritz: OK. Just pushed another few fixes (mostly for .new semantics having changed) | |||
just visiting the shop, bbi10 | 13:49 | ||
13:57
fsergot left
|
|||
jnthn | back | 14:02 | |
14:05
am0c joined
|
|||
dalek | kudo/nom: 2e26f35 | moritz++ | tools/build/NQP_REVISION: undo bump to nqp 2012.01 until we decide to actually cut the release |
14:07 | |
14:25
MayDaniel joined
14:29
hundskatt left
14:33
MayDaniel left
14:34
fsergot joined
|
|||
fsergot | nom: %hash<ABC> = 1,2,3; | 14:34 | |
p6eval | nom 2e26f3: OUTPUT«===SORRY!===Variable %hash is not predeclared at line 1, near "<ABC> = 1,"» | ||
fsergot | nom: my%hash; %hash<ABC> = 1,2,3; | ||
p6eval | nom 2e26f3: ( no output ) | 14:35 | |
fsergot | nom: my %hash; %hash<ABC> = 1,2,3; | ||
p6eval | nom 2e26f3: ( no output ) | ||
14:35
Jay_S joined
14:38
shinobicl___ joined
14:40
Jay_S left
|
|||
fsergot | nom: if 1 ~~ any( 1,2,3 ){ say 1; } | 14:42 | |
p6eval | nom 2e26f3: OUTPUT«===SORRY!===Missing block at line 1, near ""» | ||
fsergot | nom: if 1 ~~ any( 1,2,3 ) { say 1; } | ||
p6eval | nom 2e26f3: OUTPUT«1» | ||
fsergot | rakudobug? | ||
Why there have to be a space between ) and { ? :) | 14:43 | ||
moritz | because otherwise it is parsed as a postcircumfix | 14:44 | |
just like the {'foo'} in %hash{'foo'} | |||
not a bug | |||
std: if 1 ~~ any( 1,2,3 ){ say 1; } | |||
p6eval | std 40d10f7: OUTPUT«===SORRY!===Missing block at /tmp/zge26wo5ai line 1 (EOF):------> if 1 ~~ any( 1,2,3 ){ say 1; }⏏<EOL>Parse failedFAILED 00:01 111m» | ||
14:49
tokuhir__ left
|
|||
shinobicl___ | perl6: role myrole {}; my sub infix:<¬>(myrole $s1, myrole $s2) { say "$s1 ¬ $s2" }; my Str $s1 = "s1" does myrole; my Str $s2 = "s2" does myrole; say $s1 ¬ $s2; | 14:51 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«s1 ¬ s2Bool::True» | ||
..rakudo 2e26f3: OUTPUT«===SORRY!===CHECK FAILED:Calling 'infix:<\xAC>' will never work with argument types (Str, Str) (line 1) Expected: :(myrole $s1, myrole $s2)» | |||
..pugs b927740: OUTPUT«decodeUTF8': bad data: '\172'decodeUTF8': bad data: '\172'decodeUTF8': bad data: '\172'*** Unknown syntactic construct: Syn "does" [Ann (Cxt (CxtItem (mkType "Str"))) (Val (VStr "s1")),Val (VType (mkType "myrole"))] at /tmp/9MRTn_zVWM line 1, column 87-108»… | |||
shinobicl___ | std: role myrole {}; my sub infix:<¬>(myrole $s1, myrole $s2) { say "$s1 ¬ $s2" }; my Str $s1 = "s1" does myrole; my Str $s2 = "s2" does myrole; say $s1 ¬ $s2; | 14:54 | |
p6eval | std 40d10f7: OUTPUT«ok 00:01 115m» | ||
14:56
donri left
|
|||
moritz | std doesn't do type checks | 14:57 | |
maybe it helps if you don't type-constrain your variables to Str | |||
does that mean we can't statically analyse role type checks? | 14:58 | ||
shinobicl___ | rakudo: role myrole {}; my sub infix:<¬>(myrole $s1, myrole $s2) { say "$s1 ¬ $s2" }; my $s1 = "s1" does myrole; my $s2 = "s2" does myrole; say $s1 ¬ $s2; | ||
p6eval | rakudo 2e26f3: OUTPUT«s1 ¬ s2Bool::True» | 14:59 | |
shinobicl___ | :D | ||
moritz | our type system isn't really designed for union types, but they sneak in through the backdoor through mixins | 15:07 | |
TimToady | we tend to use types as our discriminants, and polymorphic containers that allow the types in question | 15:12 | |
what we don't have is polymorphic containers that allow a list of types | |||
the old 'my Cat|Dog $catdog' | 15:13 | ||
can define a 'subset CatDog of Any where Cat | Dog' | 15:14 | ||
that's as close as we get right now | |||
subset Tree where Node | Leaf | 15:15 | ||
fsergot | moritz: it is burdensome, isn't it? :) | ||
15:17
dbr left
15:18
dbr joined,
birdwindupbird left
|
|||
TimToady | subset Union of Subset where *.constraint ~~ Any[Type]; # :) | 15:19 | |
15:28
bbkr1 joined
15:41
am0c left
15:44
LlamaRider joined,
LlamaRider left
15:45
LlamaRider joined
|
|||
LlamaRider | \o #perl6 | 15:45 | |
tadzik | hey LlamaRider | 15:48 | |
colomon | \o | 15:50 | |
jnthn back...long skype call :) | |||
15:50
cognominal left
|
|||
colomon | what's the difference between calling nextwith(blah) and self.my-method-name(blah)? | 15:50 | |
jnthn | shinobicl___: Think you've spotted a case where the compile time type analysis doesn't know what it doesn't know. Please do ticket it. | 15:51 | |
colomon | or is it self.Parent::my-method-name(blah)? | ||
15:52
cognominal joined
|
|||
jnthn | colomon: nextwith goes to the next candidate the current dispatcher knows about | 15:52 | |
colomon: What it means is context sensitive - it depends on what dispatcher you're in (wrap, multi-dispatch, method dispatch) | |||
15:54
dbr left,
dbr joined
|
|||
LlamaRider | ok, i have safely concluded that the most confusing feature of Perl6 are arrays :) I think 50% of my questions here were about arrays. | 15:56 | |
And as you can guess I have a new one "why doesn't this work" : | |||
rakudo: my @a = [0 xx 3] xx 4; say @a.perl; @a[1][2] = 5; say @a.perl; | |||
p6eval | rakudo 2e26f3: OUTPUT«Array.new([0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0])Array.new([0, 0, 5], [0, 0, 5], [0, 0, 5], [0, 0, 5])» | ||
LlamaRider | i'm trying to set the second row, third column element of a 2D array | 15:57 | |
not sure exactly what is wrong with the approach | |||
i guess i'm indexing it wrong | 15:58 | ||
colomon | that's a nom bug, isn't it? | 15:59 | |
niecza: my @a = [0 xx 3] xx 4; say @a.perl; @a[1][2] = 5; say @a.perl; | |||
p6eval | niecza v13-327-g5a9c36f: OUTPUT«[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]].list[[0, 0, 0], [0, 0, 5], [0, 0, 0], [0, 0, 0]].list» | ||
LlamaRider | oO... rakudo , you fail me again :( | 16:00 | |
ideas for workarounds are most welcome | 16:01 | ||
jnthn | colomon: It looks like Rakudo just implements the spec as it used to be, before the change to say that xx should thunk its left hand side. | 16:02 | |
16:02
am0c joined
|
|||
LlamaRider | accessing works as expected, but setting is somehow off | 16:03 | |
jnthn | LlamaRider: Well, all that's happening is that it's creating an array [0,0,0] and then repeating the same one 4 times | ||
LlamaRider | oh my | 16:04 | |
jnthn | LlamaRider: That used to be the way it was spec'd to work, until cases like your one showed it was a bad idea. Then the spec changed, somebody patched Niecza, and nobody patched Rakudo yet. | ||
geekosaur | congratulations, you can emulate python :) | ||
LlamaRider | no references in Perl6 huh? the advent calendar sure was hiding things from me :D | ||
jnthn | Ah, we have an RT ticket about it. | 16:05 | |
So it won't be forgotten. | |||
nom: my @a = ([0 xx 3] for ^4); say @a.perl; @a[1][2] = 5; say @a.perl; | 16:06 | ||
p6eval | nom 2e26f3: OUTPUT«Array.new([0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0])Array.new([0, 0, 0], [0, 0, 5], [0, 0, 0], [0, 0, 0])» | ||
16:06
mj41 left
|
|||
jnthn | Taht's the easy workaround. | 16:06 | |
*That | |||
LlamaRider | \o/ thanks | 16:08 | |
16:09
pomysl left
|
|||
LlamaRider | but this is interesting to dig into | 16:11 | |
16:11
pomysl joined
|
|||
LlamaRider | rakudo: my $a = [1,2]; my @b = $a xx 3; my @c = $a.clone xx 3; say @b.perl; say @c.perl; | 16:11 | |
p6eval | rakudo 2e26f3: OUTPUT«Array.new([1, 2], [1, 2], [1, 2])Array.new(1, 2, 1, 2, 1, 2)» | ||
LlamaRider | why is clone dereferencing? | ||
16:14
colomon left
|
|||
moritz | bug | 16:29 | |
LlamaRider | I need to stay away from arrays, they're dangerous | 16:32 | |
moritz | that's a bit like saying "I need to stay away from human language; it's ambiguous" | 16:34 | |
maybe you should rather stay away from .clone. There's no universal way to clone an arbitrary object | 16:35 | ||
jnthn wonders what clone on an array means with regard to the unevaluated parts | 16:36 | ||
moritz | jnthn: fwiw the mysql tests segfault after test 2 | ||
16:36
xinming left
|
|||
moritz | (MiniDBI, that is) | 16:36 | |
that's with your latest nqp patch | 16:37 | ||
LlamaRider | moritz: it's not my fault the arrays are buggy :) | 16:38 | |
or clone for that matter | |||
moritz | LlamaRider: neither is it your fault that human language is buggy :-) | ||
LlamaRider | well, I try to avoid using "this sentence is false" in casual discussions ;D | 16:39 | |
jnthn | moritz: Yeah, I've found running mysql_connect in a loop | ||
segfaults also | |||
Running with debug memory allocation libraries complains very quickly about heap corruption. | |||
16:40
xinming joined
16:45
benabik joined
16:47
am0c left
16:50
LlamaRider left
16:56
az5112 joined
|
|||
az5112 | Hello p6 -- how do I reverse a hash in p6 (i.e. exchange keys and values)? I tried %h.reverse but it does sth different. | 16:59 | |
16:59
MayDaniel joined
|
|||
flussence | nom: {a=>1, b=>2}.invert.perl.say | 16:59 | |
p6eval | nom 2e26f3: OUTPUT«(1 => "a", 2 => "b").list» | ||
az5112 | Thanks,that's better than reverse :) | 17:05 | |
jnthn | moritz: fwiw, I did manage to get MiniDBI to successfully do an insert into a table. So the issues mostly seem to revolve around tracking down the memory management issues. | 17:07 | |
az5112 | And how do I prevent flattening of a hash when pushing to an array? (i.e. I'd like to get an array of hashes, not a flat list) | ||
jnthn | az5112: Could try .item on the thing you're pushing. | 17:08 | |
az5112 | thanks | ||
moritz | or @array.push: [things here] | 17:19 | |
cognominal | jnthn, I have a fix for the problem with --target=parse : gist.github.com/1657774 | 17:34 | |
TimToady | or @array.push: $%hash where implemented | 17:43 | |
sorear: I suspect our connection problems are actually related to the solar storm that blew through last night | 17:46 | ||
probably some microwave link somewhere... | 17:47 | ||
17:47
bbkr1 left
|
|||
dalek | p: 20df103 | jnthn++ | src/ops/nqp_dyncall.ops: Don't try and calculate needed stack space - it ain't quite that simple. Just do what all the docs do and allow a decent amount. |
17:48 | |
17:50
MayDaniel left
18:02
Chillance joined
18:19
_dbr joined
18:21
dbr left
18:27
birdwindupbird joined
18:34
GlitchMr42 joined
18:35
icwiener joined
18:37
GlitchMr left
18:39
nebuchadnezzar left
|
|||
jnthn | moritz: I have latest DBD::mysql doing inserts, selects etc. It runs, but there's some instability. | 18:44 | |
moritz: Annoyingly, the cause of that is proving hard to track down. | |||
18:48
nebuchadnezzar joined
18:50
Tenzen left
18:51
icwiener left,
icwiener joined
18:58
should joined
|
|||
should | nom: my $str = "abcabcabc";my @x = $str ~~ m:g/abc/;say ~@x | 18:58 | |
p6eval | nom 2e26f3: OUTPUT«False» | ||
benabik | nom: my $str = 'abcabcabc'; my $x = $str ~~ m/abc/; say $x.perl | 18:59 | |
p6eval | nom 2e26f3: OUTPUT«Match.new(orig => "abcabcabc", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())» | ||
should | hi perl6,why it false | 19:00 | |
moritz | looks wrong to me | ||
but I don't know what m:g is supposed to return | |||
niecza: say ('abcabcabc' ~~ m:g/abc/).perl | |||
p6eval | niecza v13-327-g5a9c36f: OUTPUT«===SORRY!===Regex modifier g not yet implemented at /tmp/ytVUdzhvN4 line 1:------> say ('abcabcabc' ~~ m:g⏏/abc/).perlUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die… | 19:01 | |
jnthn | nom: my $str = "abcabcabc";my @x = $str.match(/abc/, :g); say ~@x | ||
p6eval | nom 2e26f3: OUTPUT«abc abc abc» | ||
should | oh!yhanks moritz | ||
jnthn | should: Using the .match method with :g would seem to work out rather better. | ||
should | thanks jnthn | ||
19:05
Trashlord left
|
|||
moritz | nom: my $str = "abcabcabc";my @x = $str ~~ m:g/abc/; say @x.perl | 19:06 | |
p6eval | nom 2e26f3: OUTPUT«Array.new(Bool::False)» | ||
moritz | wtbh | ||
should | hi moritz !how to translate the perl code to perl6 | 19:08 | |
my $s = "aaaa";my $i;while ($s =~/../g){pos($s) -=1;$i++};say $i | |||
moritz | nom: my $s = 'aaaa'; my $i = $s.chars - 1; say $i | 19:10 | |
p6eval | nom 2e26f3: OUTPUT«3» | ||
moritz | should: no need to do all that stuff just to count how many two-character matches fit into a string :-) | ||
should | i see ! thanks | ||
if I want count 'aaa' repeate how many times? | 19:14 | ||
my $s = "aaaacbaaaab";my $i;while ($s =~/aaa/g){pos($s) -=2;$i++};say $i | 19:15 | ||
moritz | nom: my $s = 'aaaacbaaaab'; say $s.match(:overlap, :g, /aaa/).elems | 19:16 | |
p6eval | nom 2e26f3: OUTPUT«4» | ||
should | oh ! thank you !moritz | ||
moritz | nom: my $s = 'aaaacbaaaab'; say $s.match(:overlap, /aaa/).elems | 19:17 | |
p6eval | nom 2e26f3: OUTPUT«4» | ||
sorear | good * #perl6 | ||
moritz | \o sorear | 19:19 | |
19:21
Trashlord joined
19:24
bkolera left
|
|||
mikemol | Interesting: enki2.tumblr.com/post/16299354659 | 19:25 | |
moritz | jnthn: t/10-mysql.t ......... 1/86 Method 'disconnect' not found for invocant of class 'Any' | 19:27 | |
mikemol | I'm still chewing, though. Trying to figure out how much if it is trading CPU for memory, and pondering parallelization as a way of handling the NFA. But neither regex nor hard CS are my areas of expertise... | ||
tadzik | more readable version: swtch.com/~rsc/regexp/regexp1.html | 19:30 | |
moritz | mikemol: one thing is that grep only needs to determine whether and where a match occurs, but there is no need to construct match variables like $0, $1 | 19:32 | |
which means that it's much easier for grep to transfrom the NFA to a DFA | |||
should | nom: my $s = "abcde"; say $0 if $s ~~ /(abc)/ | 19:35 | |
p6eval | nom 2e26f3: OUTPUT«=> <abc>» | ||
jnthn | moritz: Ah, looks like the test file needs a bunch of database setup to take place first :S | 19:37 | |
should | Hi moritz~ it's weird why not just output 'abc' ? is it a bug? | 19:38 | |
moritz | should: no. Use say ~$0 or say $0.Str if you want that | 19:39 | |
benabik | nom: my $s = 'abode'; say ~$0 if $s ~~ /(abc)/ | ||
p6eval | nom 2e26f3: ( no output ) | ||
benabik | nom: my $s = 'abcde'; say ~$0 if $s ~~ /(abc)/ | ||
p6eval | nom 2e26f3: OUTPUT«abc» | ||
should | yes !! thanks moritz. | 19:40 | |
benabik | By default $0 has more information... | 19:41 | |
nom: my $s = 'abcde'; say $0.perl if $s ~~ /(abc)/ | |||
p6eval | nom 2e26f3: OUTPUT«Match.new(orig => "abcde", from => 0, to => 3, ast => Any, list => ().list, hash => EnumMap.new())» | ||
should | thanks benabik ! | 19:42 | |
az5112 | Given the following: my @arr = [ 1, 2 ], [ 2, 3]; can I flatten the array using map? my @brr = @arr.map( { ........... } ); | 19:46 | |
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @>>.flat.perl | 19:47 | |
p6eval | nom 2e26f3: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at line 1, near "@>>.flat.p"» | ||
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr>>.flat.perl | ||
p6eval | nom 2e26f3: OUTPUT«([1, 2], [2, 3])» | ||
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr>>.list.perl | ||
az5112 | I tried |@_ but I guess the vertical bar is only for sub arguments. | ||
benabik | I don't think you need the » in there... | ||
p6eval | nom 2e26f3: OUTPUT«([1, 2], [2, 3])» | ||
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr.flat.perl | ||
benabik | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr.flat.perl | ||
p6eval | nom 2e26f3: OUTPUT«Array.new([1, 2], [2, 3])» | ||
moritz | ok, let's try it with map :-) | ||
benabik | Hm. | 19:48 | |
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr.map( { @($_) 0} ).perl | ||
p6eval | nom 2e26f3: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 2» | ||
moritz | nom: my @arr = [ 1, 2 ], [ 2, 3]; say @arr.map( { @($_) } ).perl | ||
p6eval | nom 2e26f3: OUTPUT«(1, 2, 2, 3).list» | ||
moritz | better. | ||
az5112 | Thanks, @($_) does the trick. | 19:52 | |
moritz | >> doesn't work because hypers now hyper all the way down | ||
moritz hates that | 19:53 | ||
19:58
birdwindupbird left
|
|||
benabik | Maybe we need >> and >>>> ? | 19:59 | |
moritz | +1 | 20:04 | |
then we can have >> descend just one level, and >>> recursively | 20:05 | ||
mikemol | Would it be plausible to have something act as a breaker, a "don't recurse beyond this point" marker? | ||
moritz | you mean that you pass such a marker to the iterator? | 20:10 | |
if yes, that's more the task for a method, not an op | |||
20:11
mj41 joined
|
|||
should | moritz ~ my @a = [1,2],[3,4];what's diffrence between my @z = @a.map: *.list and my @z = @a>>.list | 20:16 | |
moritz | should: the difference is that 1) map is lazy, >> is eager 2) >> recurses into arrays, .map does not and 3) >> does not execute in order, map does | 20:17 | |
should | why diffrent result | 20:19 | |
moritz | because of 2) | ||
20:20
nebuchadnezzar left
|
|||
should | thanks moritz | 20:20 | |
moritz | the >>.list version calls 1.list, 2.list, 3.list, 4.list, not never [1,2].list | 20:21 | |
should | I see ,thanks! | 20:22 | |
20:23
nebuchadnezzar joined
|
|||
moritz | should: in English it is usual to placed the space after a punctuation, not before it. So 'I see, thanks' would be much more readable | 20:24 | |
should | yes ! moritz! thank you. | 20:25 | |
moritz | ! is also a punctuation character. | 20:27 | |
should | moritz! you are a good teacher. | 20:28 | |
sorear joins the welcoming party | 20:35 | ||
az5112 | Is there an array replication operator in perl6? | 20:39 | |
moritz | yes, xx | 20:40 | |
nom: say ('a', 'b') xx 5 | |||
p6eval | nom 2e26f3: OUTPUT«a b a b a b a b a b» | ||
az5112 | Thanks -- I think the book fails to mention that. | 20:41 | |
moritz | az5112: care to open a TODO ticket at github.com/perl6/book/issues ? | 20:43 | |
az5112 | sure | ||
moritz | release preview at moritz.faui2k3.org/tmp/rakudo-2012.01.tar.gz -- please test | 20:44 | |
20:46
should left
|
|||
moritz | that tarball doesn't have VERSION bumped :/ | 20:47 | |
but it won't make any difference for the spectest run | |||
dalek | kudo/nom: b23e8f0 | moritz++ | tools/build/NQP_REVISION: bump to NQP 2012.01 |
||
kudo/nom: 2b53639 | moritz++ | VERSION: bump VERSION to 2012.01 |
|||
sorear | moritz: what's the state of star these days? | 20:49 | |
moritz | sorear: it's waiting for the January compiler release, which I'm doing right now | 20:50 | |
sorear: ie we plan to do a star release this month | |||
sorear | cool. | ||
20:52
Radvendii joined
|
|||
sorear | o/ Radvendii | 20:52 | |
Radvendii | o/ | ||
is perl6 compiled into C code like perl5? | 20:53 | ||
cognominal | moritz, can you pull this patch in rakudo? gist.github.com/1657774 | ||
sorear | Radvendii: mu | ||
1. Perl 6 is purely a language name and doesn't mean a specific iplementation | 20:54 | ||
moritz | 2. there's no Perl 5 compiler that translates into C code | ||
sorear | 2. perl5 (the compiler currently maintained by rjbs) doesn't generate C, although it is written in C | ||
moritz | cognominal: should that go into the release? | ||
jnthn | cognominal: I'm dubious about that patch. | ||
moritz | then "no" :-) | ||
sorear | moritz: there's B::C, although it's unmaintained, hasn't worked at all since 5.8 or so, and never worked particularly *well* to begin with | 20:55 | |
Radvendii | what about pp or whatever it is... i found some CPAN module that would give you C code out of the perl5 code (at least i thought so...) | ||
cognominal | jnthn, its fixes the problem with --target=parse | ||
jnthn | cognominal: I don't really understand why it would do what it claims to do. | ||
moritz | Radvendii: pp barely embeds the perl5 compiler and the source program and the modules into a single file | 20:56 | |
jnthn | cognominal: Yes, what's the reason it does this? :) | ||
moritz | Radvendii: similarly rakudo's perl6.exe is also just rakudo's PBC (bytecode) plus an embedded parrot | ||
jnthn | cognominal: Because: token unitstart { <?> } | ||
cognominal: Oh...is it because we always have to call that in order to validly parse? | 20:57 | ||
cognominal | with the --target=parse is set the action for unitstart is not called | ||
dalek | ar: 68c7b81 | jnthn++ | skel/docs/announce/2012.01: First draft of the 2012.01 release announcement for Star. |
||
Radvendii | moritz: okay... then i guess iw as mistaken | ||
cognominal | and it is necessary to set the context necessary for the dump | 20:58 | |
jnthn | cognominal: Yeah, I see it now. | ||
tadzik | Star! | ||
Radvendii | Also, how do i define postcircumfix operators for a class. should i declare it as a subroutine that takes the class as the first variable? or is there some way to do it as a method... | ||
cognominal | I don't claim to understand everything it does but it works for me. | ||
jnthn | cognominal: Yeah, I was bothered because I didn't see why it worked. But now I do. | ||
Radvendii | and by subroutine that takes the class as the first variable i mean a standard postcircumfix sub that takes the object as the thing before the postcircumfix | 20:59 | |
jnthn | Radvendii: method postcircumfix:<[ ]>($index) { } | 21:00 | |
moritz, tadzik: That announcement is very draft. Feel free to twiddle/hack on it. | 21:01 | ||
21:01
_dbr left
|
|||
Radvendii | and that's called with $obj[$index] or $obj.[$index]? | 21:01 | |
tadzik | as soon as I finish my filesystem :P | ||
jnthn | Radvendii: Either. | ||
Radvendii: Those two are the same really. | |||
Radvendii | jnthn: oh. weird. okay. and what about multi-dimensional arrays? how does $obj[$i][$j] work? | 21:02 | |
21:02
GlitchMr42 left
|
|||
benabik | If $obj[$i] returns something you can index, I think. | 21:03 | |
cognominal | jnthn, indeed the unitstart rule is not called anymore, so it could be dropped. | ||
jnthn | Radvendii: It does $obj[$i], and then takes the result and does [$j] on it | ||
Radvendii | benabik: oh... that makes sense. sorry. | ||
moritz | jnthn: oops, I wrote an announcement too. Did I forget to push it? | 21:04 | |
oh, that's star. Never mind. | 21:05 | ||
jnthn | moritz: Right :) | ||
Radvendii | I've never seen this in the articles I've looked through, but i assume one can do "has @.arr" (ive only seen it with scalars) | ||
benabik | nom: class A { has @.a }; say A.a.perl | 21:06 | |
p6eval | nom 2b5363: OUTPUT«Cannot look up attributes in a type object in method a at src/gen/CORE.setting:1384 in block <anon> at /tmp/W1E7eNpfcy:1 in <anon> at /tmp/W1E7eNpfcy:1» | ||
jnthn | Yes, you can | ||
benabik | nom: class A { has @.a }; say A.new.a.perl | ||
jnthn | benabik: .new :) | ||
p6eval | nom 2b5363: OUTPUT«Array.new()» | ||
benabik | jnthn: Realized I had forgotten it just as I hit enter. | ||
moritz | nom: class A { has @.a handles <at_pos> }; my $a = A.new; $a[0] = 3; say $a[0]; | ||
p6eval | nom 2b5363: OUTPUT«3» | ||
Radvendii | oh! handles <at_pos> makes the []s fall through to that variable? | 21:07 | |
moritz | Radvendii: basically [] handles things like slices and Whatever objects, and then calls at_pos | 21:08 | |
Radvendii | o-oh. i understand. | ||
jnthn | Yes, implemetning at_pos is often far easier :) | ||
moritz | Radvendii: and since postcircumfix:<[ ]> is defined in Any, you can get Array-ish behavior simply by implementing at_pos | ||
though you should define .elems and .list too | 21:09 | ||
Radvendii | and what does postcircumfix:<{}> call? | ||
jnthn | at_key | ||
Radvendii | is there a way to make all array-like functions fall through to an array variable? | 21:10 | |
moritz | inherit from Array | ||
or maybe you can do has @.a handles Array; | 21:11 | ||
Radvendii | nom: class A { has @.a handles Array }; my $a = A.new; $a[0] = 3; say $a[0]; | ||
moritz | nom: class A { has @.x handles Array; }; say A.new.push: <foo bar>; | ||
p6eval | nom 2b5363: OUTPUT«foo bar» | ||
nom 2b5363: OUTPUT«A.new(a => Array.new(3))» | |||
21:11
mj41 left
|
|||
Radvendii | hahaha | 21:11 | |
i guess it works... | |||
sweet | |||
moritz | but I don't think that's any better than inheritance | ||
it just flattens the MRO | 21:12 | ||
Radvendii | MRO? | ||
moritz | method resolution order | ||
Radvendii | if i had the class inherit from Array, how would i tell it which instance variable to use as the array? | 21:13 | |
nom: class A is Array { }; my $a = A.new; $a[0] = 3; say $a[0]; | 21:15 | ||
p6eval | nom 2b5363: OUTPUT«3» | ||
Radvendii | ah | ||
i see | |||
benabik | nom: class A is Array { method a() { say self[0] }; my $a = A.new; $a[0] = 1; $a.a | 21:16 | |
p6eval | nom 2b5363: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 2» | ||
benabik | nom: class A is Array { method a() { say self[0] } }; my $a = A.new; $a[0] = 1; $a.a | ||
p6eval | nom 2b5363: OUTPUT«1» | ||
Radvendii | i was just about to test that. :P | 21:17 | |
sweet. i've got my answer | |||
moritz | or you could even write | 21:18 | |
class A is Array { }; my @a := A.new; | |||
jnthn | nom: class Harray is Array is Hash { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42; say $x<a>; say $x[0]; # curious if it works... | ||
p6eval | nom 2b5363: OUTPUT«hi42» | ||
jnthn | Though I guess that's really an Arrash :) | 21:19 | |
Radvendii | hahaha. i was just about to test hash-arrays | ||
so it stores them separately? | |||
jnthn | You'll need to do a bit more to have that work out well with things like .perl, .list, etc. | ||
moritz | I've updated the tarball at moritz.faui2k3.org/tmp/rakudo-2012.01.tar.gz | 21:20 | |
now it contains the latest roast commit and correct VERSION | |||
Radvendii: yes, separately | |||
spectesting the new tarball, and if everything is fine, I'll tag the release tomorrow | |||
but now i need to go to bed | 21:21 | ||
have fun! | |||
jnthn | 'night, moritz | ||
Radvendii | jnthn: oh... because it wouldnt know whether to use the array or hash for .perl? | ||
jnthn | Radvendii: It'll just follow the MRO and call whichever shows up first in that. So, depends if you wrote "is Hash is Array" or "is Array is Hash" | ||
Radvendii | nom: class Harray is Array is Hash { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42; say $x<a>; say $x.perl; | ||
p6eval | nom 2b5363: OUTPUT«hi[42]» | 21:22 | |
Radvendii | or... both? | ||
jnthn | nom: class Harray is Array is Hash { }; say Harray.^mro | ||
p6eval | nom 2b5363: OUTPUT«Harray() Array() List() Hash() EnumMap() Iterable() Cool() Any() Mu()» | ||
Radvendii | it prints both... | ||
jnthn | Radvendii: Yes, but with method dispatch the first one wins. | ||
Radvendii | method dispatch? | ||
jnthn | nom: class A { method m() { say 1 } }; class B is A { method m() { say 2 } }; B.m # says 2 | 21:23 | |
p6eval | nom 2b5363: OUTPUT«2» | ||
Radvendii | right, but what methods are implimented by both Hash and Array? | ||
jnthn | Radvendii: .perl, .elems, .keys, ... :) | 21:24 | |
Radvendii | Array has .keys? | ||
jnthn | Sure | ||
Radvendii | nom: my @a = 1,2,3,4; say @a.keys | ||
p6eval | nom 2b5363: OUTPUT«0 1 2 3» | 21:25 | |
Radvendii | everything except the last..? | ||
oh | |||
no | |||
the indicies | |||
jnthn | nom: my @a = <foo bar baz>; for @a.kv -> $idx, $val { say "Index $idx has value $val" } | ||
p6eval | nom 2b5363: OUTPUT«Index 0 has value fooIndex 1 has value barIndex 2 has value baz» | ||
jnthn | Yeah. Can be useful. | ||
Radvendii | right | ||
nom: class Harray is Array is Hash { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42; say $x<a>; say $x.keys; | 21:26 | ||
p6eval | nom 2b5363: OUTPUT«hi0» | ||
Radvendii | so it does both, for all of those... | ||
jnthn | ..does both? | ||
Radvendii | it does the Hash .keys and the Array .keys | ||
jnthn | No | ||
It only outputs the 0 | |||
Not a | 21:27 | ||
Swap around Array and Hash in the class decl and see the difference. | |||
Radvendii | oh | ||
i was getting confused because of the say $x<a> statement... | |||
nom: class Harray is Array is Hash { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42;say $x.keys; | |||
p6eval | nom 2b5363: OUTPUT«0» | ||
Radvendii | nom: class Harray is Hash is Array { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42;say $x.keys; | ||
p6eval | nom 2b5363: OUTPUT«Odd number of elements found where hash expected in method STORE at src/gen/CORE.setting:5460 in block <anon> at /tmp/zMGJ6WT1y3:1 in <anon> at /tmp/zMGJ6WT1y3:1» | ||
Radvendii | ..? | 21:29 | |
jnthn | oh, curious. :) | ||
I'm...not quite sure. :) | |||
Radvendii | nom: class Harray is Hash is Array { }; my $x = Harray.new; $x<a> = 'hi'; $x[0] = 42; | ||
p6eval | nom 2b5363: OUTPUT«Odd number of elements found where hash expected in method STORE at src/gen/CORE.setting:5460 in block <anon> at /tmp/aOX0MJnyKi:1 in <anon> at /tmp/aOX0MJnyKi:1» | ||
jnthn | nom: class Harray is Hash is Array { }; my $x = Harray.new; | ||
Radvendii | it has to do with the storing, not the printing... | ||
p6eval | nom 2b5363: ( no output ) | ||
jnthn | Yeah. Still odd. | 21:30 | |
Guessing there's some unfortunate conflict somewhere. | |||
Radvendii | nom: class Harray is Hash is Array { }; my $x = Harray.new; $x[0,1] = <hi 12>; say $x<hi>; | ||
p6eval | nom 2b5363: OUTPUT«Cannot assign to a non-container in method STORE at src/gen/CORE.setting:4110 in block <anon> at /tmp/908VnZBsOq:1 in <anon> at /tmp/908VnZBsOq:1» | ||
jnthn | If you actually wanted to do something like this, you'd be better off doing delegation anyway, fwiw. | 21:31 | |
Radvendii | delegation? | ||
jnthn | Radvendii: has @.array handles 'at_pos'; has %.hash handles 'at_key'; | ||
Radvendii: And then decide what .perl and .elems and so on should do :) | |||
Radvendii | someone was saying that that wasn't a good idea... | ||
they said something about flattening the MDO | 21:32 | ||
or something... | |||
MRO | |||
jnthn | Radvendii: If you want to create something with *both* hash and array semantics, it's a better way to go. If you just want to inherit from and tweak one of them, then yeah, inheritnace probably is neater. | 21:33 | |
Radvendii: They're different mechanisms with different use cases. | |||
Radvendii | okay... but what does it mean to flatten the MRO? | ||
jnthn | Radvendii: It means that you aren't inheriting from as many things. Many people dislike deep inheritance hierarchies, though inheriting from Array probably isn't a problematic case. | 21:35 | |
Radvendii | okay. | 21:36 | |
well, i am implementing a Harray (harrash?) so i guess i'll do the handles method | |||
jnthn | Radvendii: If you're doing both then yeah, that's the way I'd go. | ||
Radvendii | also, if i want it to do mostly the same thing as at_pos on an instance array, except also do something else, i should impliment the at_pos method and call @.arr.at_pos() and then do whatever else, right? | 21:38 | |
jnthn | Radvendii: Yeah. Be aware that at_pos returns a container, so if you want to allow modification of the underlying array then you'll need to be a little careful. | 21:40 | |
(Like, label your at_pos method with "is rw" | |||
) | |||
21:41
mauror left
|
|||
jnthn away for a bit | 21:41 | ||
cxreg | not to nag, but it has been over 100 days since the last rakudo.org post, an update would be cool | 21:48 | |
jnthn | cxreg: Next Rakudo Star release is iminent (within next couple of days), we'll certainly post about that there. | 21:50 | |
sorear | o/ jnthn | 21:51 | |
jnthn | o/-ish, sorear | 21:52 | |
jnthn only now and then wondering past the keyboard :) | |||
21:54
cooper left
21:55
icwiener left,
icwiener joined
|
|||
cxreg | jnthn: right, cool | 22:03 | |
sorear | hmm... | 22:09 | |
I am now thinking of having a Mu.immutable() method | |||
because Pair, Parcel, etc are immutable iff their children are | 22:10 | ||
22:13
cooper joined
22:22
kaare_ left
22:23
Radvendii left
|
|||
sorear | niecza: say $?CORE::ORIG | 22:25 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«Potential difficulties: Unrecognized variable: $?CORE::ORIG at /tmp/wy7DsPotwk line 1:------> say ⏏$?CORE::ORIGAny()» | ||
sorear | niecza: say CORE::<$?ORIG> | ||
p6eval | niecza v13-327-g5a9c36f: OUTPUT«Any()» | ||
sorear | niecza: say $?ORIG | ||
p6eval | niecza v13-327-g5a9c36f: OUTPUT«say $?ORIG» | ||
sorear | niecza: say MY::<$?ORIG> | 22:26 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«Any()» | ||
sorear | perl6: say { :a, :b }.values.WHAT | 22:33 | |
p6eval | pugs b927740: OUTPUT«a 1b 1*** Not a keyed value: VBool True at /tmp/HwsRVb_5Hd line 1, column 1 - line 2, column 1» | ||
..rakudo 2b5363, niecza v13-327-g5a9c36f: OUTPUT«List()» | |||
22:34
az5112 left
22:39
LlamaRider joined
|
|||
jnthn -> rest | 22:40 | ||
22:41
ksi joined
22:46
techskilled joined
|
|||
shinobicl___ | jnthn: ticket sent | 22:50 | |
22:56
Radvendii joined
|
|||
Radvendii | o/ | 22:57 | |
what is the "super" entity in classes? | 22:58 | ||
shinobicl___ | perl6: role MyRole is Date {}; my $var1 does MyRole; $var1 = "2011-12-12"; my Str $var2 = $var1.succ; say $var1.perl; say $var2.perl; | 23:00 | |
p6eval | niecza v13-327-g5a9c36f: OUTPUT«===SORRY!===Unhandled trait Date for this context at /tmp/EBDz6QeDsb line 1:------> role MyRole is Date ⏏{}; my $var1 does MyRole; $var1 = "2011-Trait does not available on variables at /tmp/EBDz6QeDsb line 1:---… | ||
..rakudo 2b5363: OUTPUT«"2011-12-12""2011-12-13"» | |||
..pugs b927740: OUTPUT«*** Unknown syntactic construct: Syn "does" [Ann (Decl SMy) (Var "$var1"),Val (VType (mkType "MyRole"))] at /tmp/HrYrPRUv9z line 1, column 25-45» | |||
23:04
icwiener left
23:11
techskilled left
|
|||
sorear | Radvendii: 'super' is not, and afaik never has in Perl, meaningful in any context | 23:11 | |
23:12
LlamaRider left
|
|||
sorear | Radvendii: 'SUPER' was used to call overriden methods in 5 and old 6, but that functionality is part of nextsame() now | 23:12 | |
Radvendii | okay. i didn't end up needing it in any case. what i do need is a way to do something like "has @.a handles <at_pos>" and then also do something else when at_pos() get's called. | 23:13 | |
i tried overwriting at_pos and calling @.a.at_pos($i) from within it, but that doesn't seem to work... | |||
shinobicl___ | nom: role MyRole is Date {}; my Str $s1 does MyRole; say $s1.WHAT; my Date $s2 = $s1; say $s2.WHAT; | 23:17 | |
p6eval | nom 2b5363: OUTPUT«Str()Type check failed in assignment to '$s2'; expected 'Date' but got 'Str' in block <anon> at /tmp/p_P1ZVXc_8:1 in <anon> at /tmp/p_P1ZVXc_8:1» | ||
sorear | Radvendii: you might need to remove handles, if you're going to write your own at_pos | 23:18 | |
shinobicl___ | maybe i'm going to far asking that to the type system, but in another case, $s1 seems to get the 'Date' behavoir when i apply the role to it | ||
Radvendii | the issue is that when i do "return @.a.at_pos($i)" it returns the number, which is a readonly value | ||
sorear | Radvendii: then you should make your definiton of at_pos 'is rw' | 23:19 | |
Radvendii | so i say method at_pos($i) is rw? | ||
sorear | yes | 23:20 | |
Radvendii | that doesn't seem to help... | ||
23:20
LlamaRider joined
|
|||
Radvendii | nom: class A {has @.b; method at_pos($i) is rw { return @.b.at_pos($i) } }; my A $a .= new; $a[0]=1; say $a[0]; | 23:22 | |
p6eval | nom 2b5363: OUTPUT«Cannot assign to a readonly variable or a value in block <anon> at /tmp/AN0norus94:1 in <anon> at /tmp/AN0norus94:1» | ||
23:26
LlamaRider left
|
|||
Radvendii | any ideas? | 23:26 | |
benabik | nom: my @a = 1; @a.at_pos(0) = 2; say @a[0] | ||
p6eval | nom 2b5363: OUTPUT«2» | ||
sorear | Radvendii: try not using return? | ||
shinobicl___: don't use "s1" does role | 23:28 | ||
shinobicl___: you wanted 'but' | |||
Radvendii | and... that does the trick | 23:30 | |
thanks sorear | |||
sorear | nom: foo | ||
p6eval | nom 2b5363: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&foo' called (line 1)» | ||
sorear | nom: return-rw | ||
p6eval | nom 2b5363: OUTPUT«Attempt to return outside of any Routine in block <anon> at /tmp/8S1Xu2Z4i8:1 in <anon> at /tmp/8S1Xu2Z4i8:1» | ||
sorear | you might be able to use that instead, if you have to bail in the middle | ||
Radvendii | okay. sweet. | 23:31 | |
shinobicl___ | rakudo: role MyRole is Date {}; my Str $s1 but MyRole; say $s1.WHAT; my Date $s2 = $s1; say $s2.WHAT; | 23:32 | |
p6eval | rakudo 2b5363: OUTPUT«Str()Type check failed in assignment to '$s2'; expected 'Date' but got 'Str' in block <anon> at /tmp/1OH3wxBec8:1 in <anon> at /tmp/1OH3wxBec8:1» | 23:33 | |
benabik | nom: my @a = 1; sub f { return-rw @a.at_pos(0) }; f() = 2; say @a[0] | 23:34 | |
p6eval | nom 2b5363: OUTPUT«2» | ||
Radvendii | i didnt know dashes were legal characters in subroutines... hm. | 23:35 | |
benabik | nom: sub they_are() {...} | ||
p6eval | nom 2b5363: ( no output ) | ||
sorear | nom: sub this'is'legal'too() { ... } | 23:36 | |
p6eval | nom 2b5363: ( no output ) | ||
sorear | - and ' are interpreted as identifiers only if they are flanked by alnums without spaces | ||
benabik | std: sub foo'() { ... } | 23:37 | |
p6eval | std 40d10f7: OUTPUT«===SORRY!===Malformed block at /tmp/gWTx0cgg72 line 1:------> sub foo⏏'() { ... } expecting any of: new name to be defined routine_def traitParse failedFAILED 00:01 107m» | ||
awwaiid | sorear, flankes you say? so I can't do.... | ||
what benabik just did | |||
benabik | nom: sub foo'() { ... } | ||
p6eval | nom 2b5363: OUTPUT«===SORRY!===Malformed block at line 1, near "'() { ... "» | ||
benabik | Pity. My haskell-self is sad | 23:38 | |
awwaiid | my ocaml-self feels the same | ||
sorear | right, if you want U+02B9 MODIFIER LETTER PRIME you have to explicitly write that | ||
awwaiid | tend to use f' to wrap f where f' is the recursive version that needs an iterator | ||
Radvendii | alright, i know this is kind of silly, since i was just trying to avoid this, but when i say "has @.b handles <at_pos>" it makes it read-write. even if i say "has @!b handles <at_pos>". how do i make it only let you access the elements, not write to them (without declaring a separate method at_pos? | ||
sorear | ASCII ' won't DWIM here :| | ||
nom: sub fooʹ() { ... } | 23:39 | ||
p6eval | nom 2b5363: ( no output ) | ||
awwaiid | looks awefully similar :) | ||
and by awefully... I mean awefully | |||
Radvendii | sub foo`() { ... } | ||
nom: sub foo`() { ... } | |||
p6eval | nom 2b5363: OUTPUT«===SORRY!===Malformed block at line 1, near "`() { ... "» | ||
Radvendii | oh, so apostrophe and prime doesnt work | ||
awwaiid | you gotta use that unicode prime that sorear used, not backtick | 23:40 | |
Radvendii | what's the character you used? | ||
geekosaur | backtick won't work, no | ||
benabik | .u ʹ | ||
phenny | U+02B9 MODIFIER LETTER PRIME (ʹ) | ||
awwaiid | sorear used U+02B9 | ||
Radvendii | ah | ||
23:41
PacoAir left
|
|||
awwaiid | two characters that render the same and act differently are a recipe for pain. But that's where we're all heading I suppose. | 23:41 | |
geekosaur | see also punycode | 23:42 | |
awwaiid | I guess their not quite the same... 'ʹ'ʹ'ʹ'ʹ'ʹ | ||
Radvendii | and when splat (*) does like 4 different things you're in big trouble... :P | ||
awwaiid | well as long as the splat consistently does those things then I'll be ok | ||
like () doing grouping vs parameters | 23:43 | ||
benabik | nom: (* * *)(*) | ||
p6eval | nom 2b5363: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in whatevercode <anon> at /tmp/C9lcpmJYzo:1 in block <anon> at /tmp/C9lcpmJYzo:1 in <anon> at /tmp/C9lcpmJYzo:1» | ||
benabik | Awh | ||
nom: (* * *)(*, *) | |||
p6eval | nom 2b5363: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu:U \$v, Mu %_!) in method Numeric at src/gen/CORE.setting:649 in sub infix:<*> at src/gen/CORE.setting:2236 in whatevercode <anon> at /tmp/laWwCXY9uW:1 in block <anon> … | ||
Radvendii | (* ** *).WHAT | 23:54 | |
benabik | WhateverCode() | ||
Radvendii | nom: (* ** *).WHAT | ||
p6eval | nom 2b5363: ( no output ) | ||
Radvendii | lol | ||
nom: say (* ** *).WHAT | |||
p6eval | nom 2b5363: OUTPUT«WhateverCode()» | ||
Radvendii | nice | ||
benabik | Radvendii: told ya. ;-) | 23:55 | |
23:55
ksi left
|
|||
Radvendii | nom: (* ** * * *)(1,2,3) | 23:55 | |
p6eval | nom 2b5363: ( no output ) | ||
Radvendii | nom: say (* ** * * *)(1,2,3) | ||
p6eval | nom 2b5363: OUTPUT«3» | ||
Radvendii | WIN | ||
: | |||
:P | |||
nom: say (* ** * * * ** * * *)(0,0,0,0,0) | 23:56 | ||
p6eval | nom 2b5363: OUTPUT«0» | ||
sorear | have you seen the 'starry obfu'? | 23:59 |