»ö« 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! | Rakudo Star Released! Set by diakopter on 6 September 2010. |
|||
00:05
araujo left
00:06
tylercurtis joined
00:07
meraxes left
|
|||
colomon is working on pick / roll, btw | 00:08 | ||
00:17
thundergnat joined
00:36
thowe left
00:40
redicaps joined,
redicaps left
00:51
Guest30046 left
00:57
meraxes joined
01:01
QinGW joined
01:05
Guest30046 joined,
Italian_Plumber left
01:18
molaf left
|
|||
dalek | kudo: 39b41ad | colomon++ | src/core/ (4 files): Split .pick into .pick and .roll. This is a straightforward effort to split the existing code. There are at least a couple of clear issues with this code, but cleaning them up is probably best left until we have some better tests for these two methods. |
01:24 | |
ast: 91aafc5 | colomon++ | / (3 files): [t/spec] Change pick with :replace to roll, deleting entirely one test which no longer made sense. |
01:28 | ||
01:29
whiteknight left
01:32
molaf joined
01:35
Guest30046 is now known as meinwald
01:37
felipe left
|
|||
colomon | rakudo: my @a = 1..10; say ~@a.sort | 01:42 | |
p6eval | rakudo 323a67: OUTPUT«1 2 3 4 5 6 7 8 9 10» | 01:43 | |
colomon | rakudo: say ~(1..10) | ||
p6eval | rakudo 323a67: OUTPUT«1 2 3 4 5 6 7 8 9 10» | ||
colomon | rakudo: my @a = 1..10; say ~@a.pick(*).sort | 01:44 | |
p6eval | rakudo 323a67: OUTPUT«1 2 3 4 5 6 7 8 9 10» | ||
01:46
bluescreen joined
01:48
thundergnat left
01:51
hercynium left
01:54
araujo joined
|
|||
dalek | kudo: e682712 | pmichaud++ | src/ (4 files): Switch C<time> and C<now> to be 0-ary terms. |
02:31 | |
kudo: 4f3d392 | pmichaud++ | src/core/ (4 files): Merge branch 'master' of github.com:rakudo/rakudo |
|||
ast: e2e65b2 | pmichaud++ | S29-context/sleep.t: [sleep.t]: C<time> does not allow parens after it. |
02:37 | ||
ast: a25207b | colomon++ | S (3 files): [t/spec] Add about eighty pick and roll tests, including a new S32-list/roll.t file. |
02:43 | ||
pmichaud | anyone made the cognitive leap from "pick and roll" to basketball yet? ;-) | 02:50 | |
\xF0 | (basketball reference)++ | 02:54 | |
02:57
jaldhar joined
|
|||
colomon | pmichaud: not I. | 02:59 | |
03:01
orafu left,
orafu joined
03:05
bluescreen left
|
|||
colomon | have another pick / roll patch in spectesting, but will probably go to be before the spectest is done. | 03:14 | |
03:14
alester joined
|
|||
pmichaud | to be... or not to be. that is the question. :-) | 03:17 | |
03:22
mantovan1 left
|
|||
colomon | to bed or not to bed. that is no question at all. :) | 03:22 | |
03:22
mantovani joined
|
|||
colomon | afk # to sleep, perchance to dream... | 03:24 | |
dalek | kudo: 358d728 | pmichaud++ | src/core/metaops.pm: Add meta-op forms of ?&, ?|, ?^, &&. Fixes RT #77864. |
03:39 | |
03:52
LaVolta joined
|
|||
LaVolta | howdy #perl6 :) | 03:52 | |
03:53
leprevost joined
04:06
leprevost left
04:23
xinming_ joined,
QinGW1 joined
04:25
QinGW left
04:27
xinming left
04:51
envi^home joined
05:00
toebu left
05:11
masak joined
|
|||
masak | oh hai, #perl6! | 05:11 | |
phenny | masak: 15 Sep 17:45Z <supernovus> tell masak I will make a branch of ecosystem and add it, unlike proto, I don't have write access to that project to add it directly. | ||
masak | assuming that meant 'fork'. | ||
TimToady | actually, I was thinking of the basketball connection when I said pick-n-roll at irclog.perlgeek.de/perl6/2010-09-15#i_2830582 | ||
diakopter | pmichaud: truthfully, I saw "split pick into pick and roll" in the irssi scrollback and basketball was the only connotation that came to mind. I'd forgotten what pick meant. | ||
I'd forgotten what Perl 6 pick meant, I mean. | 05:12 | ||
TimToady | I wouldn'ta spelled it like that otherwise | 05:14 | |
diakopter | we used to do something like that in soccer, too... | ||
LaVolta | rakudo: say ((1,2,3,4,5) »-» 1); | 05:17 | |
p6eval | rakudo 358d72: OUTPUT«01234» | ||
TimToady | rakudo: say 1,2,3,4,5 X- 1 | ||
p6eval | rakudo 358d72: OUTPUT«01234» | ||
05:17
sftp left
|
|||
TimToady | I think the Xop is clearer when you're actually dealing with lists | 05:18 | |
the hyper form is more useful for items that are data structures | |||
LaVolta | thanks, a new lesson to learn :) ...may be I am abusing it... | ||
Confused at line 1, near "(1,2,3,4) " | 05:19 | ||
question, why I got "Confused at line 1, near "(1,2,3,4) "" after typing: "(1,2,3,4) >>->> 1" at REPL | |||
TimToady | this is reflected in the fact that hypers are of tighter precedence than lists, while X is looser than comma | 05:20 | |
perhaps it was looking for a -> operator to complain about Perl 5? | |||
it shouldn't do that in a hyper, probably | |||
std: (1,2,3,4) >>->> 1 | 05:21 | ||
p6eval | std : OUTPUT«ok 00:01 118m» | ||
TimToady | and it's fine with the STD parser | ||
LaVolta | this: "(1,2,3,4)>>->>1" give me: Unsupported use of -> as postfix; | ||
TimToady | rakudo: say (1,2,3,4) >>->> 1 | ||
p6eval | rakudo 358d72: OUTPUT«===SORRY!===Confused at line 22, near "say (1,2,3"» | ||
LaVolta | yeah! | ||
TimToady | ah, no whitespace | ||
>> introduces hyper postfixes | 05:22 | ||
rakudo: say (1,2,3,4)>>->>1 | |||
p6eval | rakudo 358d72: OUTPUT«===SORRY!===Unsupported use of -> as postfix; in Perl 6 please use either . to call a method, or whitespace to delimit a pointy block at line 22, near ">1"» | ||
TimToady | STD won't like that either | ||
in general, Perl 6 assumes you'll usually put whitespace around infixes | |||
comma being a major exception | |||
LaVolta | yep...but what about "say (1,2,3,4) >>->> 1", it confuses rakudo | 05:23 | |
TimToady | but here's another case where the Latin-1 will be handled better | ||
std: say (1,2,3,4)»-»1 | |||
p6eval | std : OUTPUT«ok 00:01 118m» | ||
TimToady | rakudo: say (1,2,3,4)»-»1 | ||
p6eval | rakudo 358d72: OUTPUT«0123» | 05:24 | |
TimToady | that's because there is no -» operator | ||
LaVolta | now...my wish for the year become "a fully functional unicode repl" | 05:26 | |
direct input is the root of all evil... | |||
tylercurtis | The REPL doesn't support Unicode? | 05:31 | |
TimToady | readline doesn't | 05:33 | |
LaVolta | :-P, any codepoint also works, though | 05:36 | |
*and...oops | |||
tylercurtis | rlwrap uses readline, doesn't it? | ||
tylercurtis uses rlwrap for the REPL on his laptop because Parrot doesn't detect his readline. | |||
LaVolta | tylercurtis: my $t = "测试"; # paste this into your REPL, see what happens | 05:37 | |
tylercurtis | > my $t = "测试"; | ||
测试 | |||
LaVolta | cool | 05:38 | |
> my $t = "测试" | |||
æµè¯ | |||
this is currently what I got | 05:39 | ||
05:39
cmadsen joined,
cognominal left
|
|||
LaVolta | in order to get the correct result I have to do this: > my $t = "\x6d4b\x8bd5" | 05:41 | |
测试 | |||
05:41
cmadsen1 left
|
|||
tylercurtis | What version of readline do you have? I appear to have 6.0. | 05:41 | |
LaVolta | /opt/local/lib/libreadline.6.1.dylib (compatibility version 6.0.0, current version 6.1.0) | 05:42 | |
what? twice? | |||
OSX, btw | 05:43 | ||
tylercurtis is on OS X, as well. | 05:44 | ||
tylercurtis will try to get parrot to recognize his readline so that he can see if it works for him with non-rlwrap readline. | 05:46 | ||
LaVolta gonna a rlwrap a shot | 05:47 | ||
masak | here's a veiled feature request: twitter.com/wireghoul/status/24610404820 | ||
should I turn that into a TODO rakudobug? :) | |||
TimToady | star: say dir('.') | 05:48 | |
p6eval | star 2010.07: OUTPUT«Operation not permitted in safe mode in 'Safe::forbidden' at line 2:/tmp/bXsIGVeKSU in main program body at line 22:/tmp/bXsIGVeKSU» | ||
TimToady | looks like dir was already there then | ||
masak | oh, it's that one? | ||
I think it was added long before Rakudo Star. | 05:49 | ||
masak checks | |||
aye. | |||
masak responds to @wireghoul | |||
LaVolta hopes one day he can surf more freely | 05:50 | ||
tylercurtis | masak: perldoc -f glob makes it seem like dir wouldn't be quite equivalent, necessarily. | 05:51 | |
masak | tylercurtis: indeed. | ||
tylercurtis: maybe a case can be made to provide both. | 05:52 | ||
I've had two surprises with &dir already. | |||
(1) it doesn't return the filenames with the path on them. this can be seen as either a feature or a bug, depending. | |||
05:53
cjk101010 joined
|
|||
TimToady | it's really an opendir/readdir/closedir | 05:53 | |
masak | (2) it doesn't do the (optional) $test on IO objects, but on filename strings. that's not half as useful as doing it on IO objects. | ||
tylercurtis | LaVolta: looks like it doesn't work if I build Parrot with readline support. | 05:54 | |
TimToady | I think it was aimed at grepping out /^\./, probably | ||
LaVolta | tylercurtis: sure...that's why I wanna try rlwrap | 05:55 | |
btw, rakudo's much faster now, thanks all! | 05:56 | ||
masak | TimToady: aye. the default it none('.', '..') | ||
05:57
satyavvd joined,
dual left
|
|||
tylercurtis | LaVolta: bad news: it looks like if Parrot was built with readline support, rlwrap does not help (not really surprising, but inconvenient). | 05:58 | |
05:59
wtw joined
06:02
alester left
|
|||
LaVolta | tylercurtis: too bad :(, now i know... | 06:03 | |
masak | perl6: say chr(194), chr(177) | 06:04 | |
p6eval | rakudo 358d72: OUTPUT«±» | ||
..pugs: OUTPUT«Â±» | |||
masak | I'm with pugs on this one. | ||
06:05
uniejo joined
|
|||
TimToady | I'm with masak on this one. | 06:08 | |
masak submits rakudobug on this one | |||
perl6: print .chr for <233 186 166 233 171 152> | 06:09 | ||
p6eval | rakudo 358d72: OUTPUT«麦高» | ||
..pugs: OUTPUT«éº¦é«» | |||
masak | clearly rakudo is thinking in bytes, not characters. | ||
TimToady | indeed | ||
LaVolta | masak: just curious, who is 麦高? sounds like your name... | 06:10 | |
masak | aye :) | 06:11 | |
06:14
jedai left
06:15
jedai joined
|
|||
TimToady | I'm allergic to 麦, but not very afraid of 高. | 06:17 | |
LaVolta | TimToady: what is your name in CJK chars? | ||
TimToady | that depends on which language you're speaking :) | 06:18 | |
LaVolta | lol... | ||
06:18
molaf left
|
|||
masak | lolese. | 06:18 | |
06:19
felipe joined
|
|||
LaVolta | forgive me, but I didn't know that in Perl 5 we can also use < ... > as quote mark... :-P | 06:32 | |
masak | only after 'qw' :) | 06:33 | |
moritz_ | LaVolta: you can, but it's a glob, so <a *> will not give the same result in perl 5 and 6 | ||
masak | oh right! | 06:34 | |
moritz_ | because * will expand to all file names in the current directory | ||
LaVolta | moritz_: ooooooh!! thanks for the explaination | ||
masak | buubot: eval for (<foo bar baz>) { print $_, "\n" } | 06:35 | |
buubot | masak: ERROR: Can't locate Text/ParseWords.pm in @INC (@INC contains:) at /usr/lib/perl/5.10/File/Glob.pm line 152. | ||
masak | buu: ^^ | ||
LaVolta | for me, another dark corner.... | 06:36 | |
masak | if there are still dark corners, our Perl is not yet Enlightened enough. :) | 06:40 | |
06:43
Mowah joined
|
|||
sorear | good * #perl6 | 06:44 | |
LaVolta | o/ # wave/dance for the first time | ||
masak | \o | 06:45 | |
sorear | TimToady and masak have names in CJK chars? | 06:47 | |
In Perl 5, Scalar has a non-parametric representation | 06:48 | ||
Int, Str, etc are kept directly in the Scalar, instead of being separate immutable objects | 06:49 | ||
Scalar of Str, in particular, is actually StringBuffer | |||
so you can do stuff like my $x = 'a' x 1_000_000; for (1..500_000) { substr($x, int(rand(1000_000)), 1) = 'b' }; in O(N) time | 06:50 | ||
I wonder if P6 can or should do anything to support that style of code | |||
masak | std: say 5 R. ({$_ * $_}) | 06:56 | |
p6eval | std : OUTPUT«===SORRY!===Unsupported use of . to concatenate strings; in Perl 6 please use ~ at /tmp/Wu_n7VhP7a line 1:------> say 5 R. ⏏({$_ * $_})Parse failedFAILED 00:01 116m» | ||
masak | overzealous error. | 06:57 | |
sorear | what should the result be/ | ||
masak | 25? | ||
sorear | why? | ||
masak | I think it can be assumed that if I do R. I'm no longer in a Perl 5 mindset :) | ||
sorear: because ({ $_ * $_ }).(5) is 25? | 06:58 | ||
sorear | that isn't &infix:<.> | ||
that's &postcircumfix:<( )> | |||
R only reverses infixes | |||
masak | you're right. | ||
good thing I left a savepoint a couple of minutes back. | 06:59 | ||
masak backtracks to it | |||
sorear has a new design for variables in niecza | 07:00 | ||
masak: I have control flow operators working now :D | 07:02 | ||
07:07
Ross^ joined,
envi^home left
|
|||
masak | sorear: you mean like 'next' et al? | 07:09 | |
07:12
patrickas joined,
patrickas left
|
|||
sorear | yes | 07:13 | |
perhaps more importantly, 'return' | |||
not optimized yet | 07:14 | ||
masak | sorear: nice! maybe Yapsi will have some of those too soon. | ||
07:16
Ross^ left
07:18
tadzik joined
|
|||
tadzik | colomon: ping | 07:20 | |
07:20
synth left
07:34
justatheory left
07:38
Guest23195 joined
|
|||
sorear | agh. Old plan for variable overhaul, failed, because I'm relying on bvalue aliasing for our | 07:43 | |
so I could make normal use of hashes much faster at the expense of horrifically slowing down $Foo::bar | 07:49 | ||
or I could do what Perl 5 does and add a level of indirection, so Foo::<$bar> would be a (not directly usable as a scalar) | 07:50 | ||
tadzik | phenny: tell colomon I commented your commit on github, I think I see some code redundancy in here | 07:54 | |
phenny | tadzik: I'll pass that on when colomon is around. | ||
tadzik | phenny: thanks | ||
07:55
tadzik left,
Kodi joined
08:07
jedai left
08:09
jedai joined
08:12
LaVolta left
08:14
wamba joined
08:15
LaVolta joined
08:18
synth joined
08:23
thebird joined
08:24
jedai left
|
|||
dalek | ecza: ce8c188 | sorear++ | / (11 files): Commit a bunch of misc performance things |
08:24 | |
ecza: b94fd4d | sorear++ | / (4 files): Implement range form of ** quantifier |
|||
08:25
tylercurtis left,
jedai joined,
am0c^ joined
|
|||
dalek | ast: 264f008 | KodiB++ | S02-builtin_data_types/key (3 files): Additions, corrections, and reformatting for KeySet, KeyBag, and KeyWeight. |
08:29 | |
08:34
dakkar joined
08:36
jjore_ left
08:37
timbunce joined
08:38
jjore joined
|
|||
sorear | Does 'when' generate a control exception? | 08:43 | |
08:43
rindolf joined
|
|||
masak | the block form does, by default. | 08:44 | |
the statement modifier doesn't. unless it's Perl 5. :P | |||
sorear | ok. What exception is generated? Is it lexotic or dynamic? | ||
jnthn | morning, #perl6 | 08:51 | |
sorear | hello jnthn | 08:55 | |
08:55
daxim joined
|
|||
jnthn | o/ sorear | 08:56 | |
masak | rakudo: sub foo() { when 42 { say "OH HAI" }; say "!" }; given 42 { foo } | ||
p6eval | rakudo 358d72: OUTPUT«Use of uninitialized value in numeric context!» | ||
sorear | rakudo: sub foo() { return 1; }; say foo.WHAT | ||
p6eval | rakudo 358d72: OUTPUT«Int()» | ||
masak | rakudo: sub foo($_:) { when 42 { say "OH HAI" }; say "!" }; given 42 { foo($_) } | ||
p6eval | rakudo 358d72: OUTPUT«Lexical 'self' not found in 'foo' at line 22:/tmp/Sezqrvnpe7 in main program body at line 22:/tmp/Sezqrvnpe7» | ||
sorear | How does this work? | ||
08:56
dju left
|
|||
masak | rakudo: sub foo($_) { when 42 { say "OH HAI" }; say "!" }; given 42 { foo($_) } | 08:56 | |
p6eval | rakudo 358d72: OUTPUT«OH HAI» | 08:57 | |
masak | sorear: dynamic, it'd seem. | ||
sorear | Oh, I'm blind, I skipped over builtins/control 28-35 | ||
masak | rakudo: sub foo($_) { when 42 { say "OH HAI" }; say "!" }; given 42 { foo($_); say !!" } | ||
p6eval | rakudo 358d72: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
masak | rakudo: sub foo($_) { when 42 { say "OH HAI" }; say "!" }; given 42 { foo($_); say "!!" } | ||
p6eval | rakudo 358d72: OUTPUT«OH HAI!!» | ||
masak | hm. | ||
sorear | masak: rakudo does not implement lexotic control, at all | 08:58 | |
masak | or purely lexical. | ||
sorear | src/Perl6/Actions.pm line 3280 has this to say about where when jumps to: # XXX TODO: This isn't quite the right way to check this... | 08:59 | |
masak | :) | 09:00 | |
09:01
am0c^ left,
orc joined
09:03
xinming_ is now known as xinming
|
|||
sorear | jnthn: what should happen if I create 2^30 anonymous types? | 09:05 | |
09:06
orc left
|
|||
jnthn | sorear: Go directly to jail. Do not collect £200. | 09:06 | |
:P | |||
sorear: I'm using a 64 bit number for STable IDs though, just in case people try such insanity. :) | 09:07 | ||
sorear wonders why jnthn is using GBP | 09:09 | ||
jnthn | sorear: Because I grew up in England and that was what currency we played monopoly in there. :-) | 09:10 | |
sorear | so I see you've started "parrot" | 09:15 | |
I guess that means you know what you're doing, now | |||
jnthn | ...started? | 09:16 | |
sorear | yeah, 3 days ago | ||
jnthn | sorear: Anyway, I guess somebody *could* overflow the IDs if we just allocate them sequentially. | ||
sorear: But, well...I figure there's more than one way of allocating IDs. | 09:17 | ||
sorear: But for now probably "use a 64 bit number" will keep us away from problems. | |||
sorear | What is the stuff about int/str/etc box types? | ||
jnthn | At the speed Rakudo currently runs, the heat death of the universe probably happens before somebody creates enough types to hit the limit anyway. :P | ||
sorear: In 6model? | 09:18 | ||
sorear | yes | ||
jnthn | sorear: Basically, it's the stuff that handles "I have this native, low-level type and I want an object", and vice versa. | ||
sorear | in niecza, (box TypeName value) is one of the primitives | 09:19 | |
so 6model's box is polymorphic on value? | |||
jnthn | 6model has box_int, box_str, box_num and corresponding unbox ones. | ||
sorear | niecza has a LOT more kinds of box | 09:20 | |
for instance, Parcel boxes a Variable[] | 09:21 | ||
jnthn | Ah, interesting. | 09:22 | |
sorear | jnthn: What is the role of a represntation in 6model? | 09:28 | |
09:28
cls_bsd left,
cls_bsd joined
|
|||
jnthn | sorear: A representation is responsible for how we represent "stuff" in memory | 09:29 | |
sorear: Where stuff really is object state | |||
Some of them are more capable than others. | 09:30 | ||
P6opaque will be, I expect, pretty complex ones it's all filled out. | |||
sorear | How much do you want to let reprs vary? | 09:31 | |
If I subclass Int and add attributes, how will that work? | |||
jnthn | My current thinking is that Int won't actually use the P6int representation directly. | 09:32 | |
It'll use P6opaque with an attribute that is of type P6int | |||
sorear | P6opaque isn't going to support 'has int $!value'? | ||
jnthn | One thing that's missing from the current repr API - 'cus I didn't work out quite how it should look yet - is a "you can inline me" | ||
Yes, it'd have something like that. | 09:33 | ||
Int is a slightly awkward example though | 09:34 | ||
Since it's meant to also support upgrading to big int | |||
Num is a much cleaner one | 09:35 | ||
sorear | Why would Int support upgrading? | 09:36 | |
It's not mutable | |||
jnthn | Yeah, "upgrading" is kind of a bad word for it from an implementation standpoint I guess | 09:37 | |
"needs to be capable of using a machine-y int or supporting big int on demand" or something is probably closer, but yes, it's a decision at creation time, not one that changes over its lifetime. | 09:38 | ||
sorear | Does 6model have anything like Perl6Scalar yet? | ||
sorear thinks Int and BigInt would make more sense as separate types | |||
jnthn | sorear: (int and BigInt separate) me too | 09:39 | |
sorear | or maybe Int; NativeInt is Int; BigInt is Int | ||
jnthn | Or Int is a role, or something | ||
(Perl6Scalar) Not yet | |||
I wonder if Perl6Scalar really wants to be a parametric role. | |||
I've pondered how to do it a bit, but didn't settle on anything yet. | 09:40 | ||
sorear | In niecza I went the opposite route; Perl6Scalar is less than an object | ||
moritz_ | jnthn: there's an Integer role | ||
jnthn | Yeah, that's what we currently do in Rakudo, but I'm not sure how well it'll hold up. | ||
sorear | it can pretend to be an object, albeit with a very weird repr, if you poke at it right | ||
jnthn | Yeah | ||
Depends if making it a real object blows away performance I guess. | 09:41 | ||
moritz_: Oh? OK. :-) | |||
sorear | niecza uses 'abstract GetMO()' in the IP6 base class, rather than a field | ||
saves a pointer on all the less-than-objects... might be worth reexamining at some point | 09:42 | ||
also, interfaces are amazingly slow in mono. changing IP6 from an interface to an abstract class roughly tripled performance | |||
jnthn | I did a similar switch in 6model quite early on, though without benchmarking so I don't know what the win was. | 09:43 | |
I kinda just realized "oh wait, this isn't a place I want the extra cost of an interface call" | 09:44 | ||
(They are more costly even on the CLR.) | |||
er, the microsoft CLR impl, that is. | |||
sorear | another thing I'm debating is how harshly to avoid inferior runloops | 09:45 | |
I suspect that making container FETCH/STORE non-CPS methods would be a considerable win, but then it'd be impossible to use &take in a tied scalar | |||
(unless I give in to the dark side and use Mono.Tasklets.Continuation) | 09:46 | ||
moritz_ | dark side because not portable among CLR implementations? | 09:47 | |
sorear | yes | 09:48 | |
moritz_ | .oO( Come to the Dark Side, we have cookies! ) |
||
jnthn | oh, oops...I need to go to a meeting... | 09:49 | |
bbl | |||
sorear | I've also considered deferring final code generation to runtime and/or using a bytecode interpreter | ||
however, this would be obviously insane | |||
(it would probably cut executable sizes by a lot, though!) | 09:50 | ||
sorear wonders if a CLR image is an executable or a fakecutable | |||
dalek | kudo: cd151f6 | moritz++ | build/Makefile.in: update spectest_smolder to new smolder.parrot.org server see smolder.parrot.org/app/projects/smoke_reports/5 for the reports. |
09:51 | |
moritz_ | everybody, please update to newest rakudo, reconfigure and run 'make spectest_smolder' (requires the 'curl' command line program) | 09:53 | |
10:01
rindolf left
10:06
QinGW1 left
10:11
meteorjay joined
10:14
toebu joined
10:15
toebu left
10:16
toebu joined
10:19
tadzik joined
|
|||
tadzik | hello again | 10:19 | |
10:26
Kodi left
|
|||
flussence | mornin' | 10:27 | |
LaVolta | bye, cat LaVolta > /dev/null | ||
10:27
LaVolta left
|
|||
flussence | moritz_: I'm running that now. (btw, "make help" doesn't list it, dunno if that was forgotten about) | 10:30 | |
10:37
avuserow_ left
10:42
jferrero joined
10:43
meppl joined
10:46
avuserow joined
|
|||
dalek | kudo: f11a044 | colomon++ | src/core/Range.pm: Try to clean up Range.pick and Range.roll a bit. Still not completely happy with these, but they work a bit better now... |
10:52 | |
kudo: 142ceba | colomon++ | t/spectest.data: Add S32-list/roll.t to the list of spectests. |
|||
10:56
Mowah left
10:59
Italian_Plumber joined
|
|||
dalek | ast: 091d652 | colomon++ | S02-builtin_data_types/range.t: [t/spec] Unfudge three tests that work now. |
11:00 | |
tadzik | hah, compiling the file with just POD to pir resulted in 139 lines of pir | 11:22 | |
that's what you call „reading between the lines” | |||
toebu | I am playing with Exceptions and CATCH ... I try to create my own exception where I can supply an error number along with the error message ... my perl5 derived ideas of die with an exception object do not seem to work ... any hints ? | ||
11:23
gfx joined
11:24
rgrau joined
|
|||
tadzik | toebu: I'm afraid you can only die with a string now | 11:27 | |
moritz_ | colomon: btw now that t/spec is a separate repo, there's no need to include [t/spec] in the commit message anymore :-) | 11:29 | |
toebu | <tadzik> because of implementation limitations ? | 11:30 | |
tadzik | wow, it looks as if I said that | 11:32 | |
toebu: I think so | |||
toebu | according to docs I should be able todo -- class Bad is Exception {}; die Bad("Error"); and then CATCH { when Bad { ... }}}; ... but this causes rakudo to complain about not knowing sub &Bad ... which seems logical as this is a class and not an object ... | 11:33 | |
is looking at perlcabal.org/~azawawi/html/spec/S0...imple.html for inspiration | |||
moritz_ | well, probably Bad.new("Error") | 11:34 | |
moritz_ not sure about the coercion syntax | |||
tadzik | . o O ( File::Glob ) | ||
moritz_ plans to work on the user facing part of the exception system soonish | 11:35 | ||
I've written a grant application for it, but due to $real-life-uncertainties I hesitate to submit it at the moment | 11:36 | ||
toebu | moritz_ yes when I do Bad.new('msg') it works except that the when Bad { ... } in the CATCH block does not react ... | 11:37 | |
moritz_: glad to hear :-) I am rather fond of using exceptions in my code ... | 11:38 | ||
11:41
[particle]1 joined
11:44
[particle] left
11:52
mikehh joined
11:54
satyavvd left
|
|||
colomon | moritz_: but I worked so long to develop the habit of adding [t/spec] ! | 12:02 | |
phenny | colomon: 07:54Z <tadzik> tell colomon I commented your commit on github, I think I see some code redundancy in here | ||
colomon | tadzik: thank you. | ||
tadzik | thank You :) | 12:03 | |
moritz_ | colomon: :-) things change | ||
takadonet | morning all | 12:05 | |
12:08
cls_bsd left,
cls_bsd joined
|
|||
dalek | kudo: 705379c | masak++ | src/core/Instant.pm: [core/Instant] added 'Real' role as per spec |
12:17 | |
masak | rakudo: class Hitchhiker { my $defaultanswer = 0; has $.ans1 = $defaultanswer; has $.ans2 = { $defaultanswer }; has $.ans3 = { { $defaultanswer } }; $defaultanswer = 42; }; say (.ans1, .ans2, .ans3).perl given Hitchhiker.new | 12:18 | |
p6eval | rakudo cd151f: OUTPUT«(42, { ... }, { ... })» | ||
masak | A12 begs to differ. | ||
says it should be (0, 42, { ... }) | 12:19 | ||
is A12 right, or have things changed since then? | |||
moritz_ | 0 seems wrong | 12:20 | |
because the assignment is run at class construction time | |||
masak | that's why 0 is right, innit? | 12:21 | |
moritz_ | whereas the RHS of has $.ans1 = is a thunk that's run at object construction time | ||
masak | oh, you mean at the end of the class block. | ||
moritz_ | so, it's a bit like my $x = 3; say $x; INIT {$x = 42 } | ||
right | |||
masak | well, A12 talks about an 'is build' trait that's implicit for attribute assignments. | ||
moritz_ | I don't think S12 mentions that | 12:22 | |
12:23
sftp joined
|
|||
masak | I'll say this for the picture A12 paints up: it feels quite consistent. | 12:24 | |
12:24
Kodi joined
|
|||
moritz_ | well, the picture in S12 also feels quite consistent :-) | 12:25 | |
masak | sure, if you realize that the rhs of the attributes are executed at class construction time. | 12:26 | |
moritz_ | s/class/object/ | ||
masak | hm. | ||
moritz_ | which you need for has $.x = 5; has $.y = 2 * $.x; to DWYM | 12:27 | |
right now you can call A.new(x => 10) and have $.y being 20 | |||
masak | right, since the second $.x presupposes a defined object. | ||
moritz_ | which is quite nice | ||
masak | agreed. | 12:28 | |
this is not-quite-nice, however: | 12:29 | ||
rakudo: class A { has $.a = 4 }; say A.new.a; class B { has $.b = 4; submethod BUILD {} }; say B.new.b | |||
p6eval | rakudo cd151f: OUTPUT«4Any()» | ||
masak | the presence of a BUILD submethod prevents defaults from being set. | ||
moritz_ | yes. Known and reported. And annoying. | 12:30 | |
masak | nodnod, nod. | ||
12:33
rindolf joined
|
|||
toebu | \msg p6eval rakudo: my $x = 'a'; say <<$x a>>.join(','); | 12:37 | |
rakudo cd151f: OUTPUTxAB$x,a?xBB | 12:38 | ||
so rakudo does not understand texas brackets ? right ? | |||
moritz_ | seems like, yes | ||
masak | looks like an encoding problem. | 12:39 | |
insufficient data whether it is in Rakudo, p6eval, or toebu's client. | |||
moritz_ | rakudo: my $x = 'a'; say <<$x a>>.join(','); | ||
p6eval | rakudo cd151f: OUTPUT«$x,a» | ||
masak | that rules out the first two :P | ||
colomon | what are texas brackets supposed to do in this case? | 12:40 | |
moritz_ | interpolate, then split | 12:41 | |
masak | oh, what toebu was asking about was the semantics. I see. | 12:42 | |
right, there's a TODO ticket in RT about that. | |||
moritz_ | alpha: my $x = 'a'; say <<$x a>>.join(','); | 12:43 | |
p6eval | alpha 30e0ed: OUTPUT«a,a» | ||
moritz_ | pugs: my $x = 'a'; say <<$x a>>.join(','); | ||
p6eval | pugs: OUTPUT«a,a» | ||
masak | alpha: my $x = 'a b c'; say <<$x a>>.join(','); | ||
p6eval | alpha 30e0ed: OUTPUT«a b c,a» | ||
masak | half right. | ||
moritz_ | pugs: my $x = 'a b c'; say <<$x a>>.join(','); | 12:44 | |
p6eval | pugs: OUTPUT«a,b,c,a» | ||
moritz_ | pugs++ | ||
au|irc++ | |||
masak | Pugs++ | ||
12:45
alester joined
|
|||
toebu | bows gracefully | 12:46 | |
is writing up the perl6 class for LISA and only wants to put in stuff that actuallly works :-) texas quotes sound like a realy cool thing ... | 12:48 | ||
12:49
gfx left
|
|||
moritz_ | indeed | 12:49 | |
12:51
patspam joined
|
|||
rindolf | What are texas quotes? | 12:55 | |
colomon | rindolf: << and >> | ||
rindolf | colomon: ah. | ||
colomon: aren't they called guillaumes? | |||
Kodi | rindolf: Guillemets, last I heard. | ||
colomon | rindolf: that's « and » | ||
masak | aka French quotes. | 12:56 | |
toebu | texas quotes are like the french ones only bigger :-) ... says damian | 12:57 | |
moritz_ | <<...>> | 12:58 | |
see S02 | |||
toebu | rakudo: $x = 'a'; say Q:s /$x/; OUTPUTxAB===SORRY!===?Colons may not be used to delimit quoting constructs at line 22, near ":s /$x/;"?xBB | ||
p6eval | rakudo 705379: OUTPUT«===SORRY!===Colons may not be used to delimit quoting constructs at line 22, near ":s /$x/; O"» | ||
moritz_ | toebu: that's the unfriendly way of saying "quote adverbs are not yet implemented" | 12:59 | |
toebu | smile | ||
guess I should read the disclaimer on the rakudo shrinkwrap a bit more attentively :-) | 13:00 | ||
13:01
rgrau left,
alester left
|
|||
masak | early adopter beware. | 13:01 | |
from the bright side, one eventually settles into a use of the implemented features, only occasionally running into new bugs. | 13:03 | ||
13:04
vdrab joined,
cognominal joined
13:07
tadzik left
13:10
am0c joined
|
|||
flussence | curl: (26) failed creating formpost data | 13:11 | |
make: *** [spectest_smolder] Error 26 | |||
:( | |||
13:11
[particle]1 is now known as [particle]
|
|||
flussence | "make spectest_smolder" gets to the end, but then it explodes; gist.github.com/582402 | 13:13 | |
moritz_ | flussence: is there a rakudo_test_run.tar.gz file in the rakudo dir? | 13:15 | |
flussence | nope | ||
moritz_ | flussence: which would explain why it failed... | 13:16 | |
13:17
Patterner left
13:19
jferrero left
|
|||
Kodi | Could someone review my latest patch? rt.perl.org/rt3/Ticket/Display.html?id=77896 | 13:21 | |
moritz_ | I fear that it touches too many areas I'm not familiar with | 13:25 | |
I hope that pmichaud or jnthn can do it | |||
13:28
Psyche^ joined,
Psyche^ is now known as Patterner
13:36
jedai left
13:37
wolverian left
|
|||
PerlJam | Kodi: removing the multi sub infix:<-> in the middle of that patch seems like it doesn't belong. | 13:38 | |
(src/core/Duration.pm) | |||
13:44
cotto left
|
|||
Kodi | PerlJam: But otherwise, the test | 13:48 | |
isa_ok $t0 - $d, Instant, 'Instant - Duration ~~ Instant'; | |||
must fail. | |||
(That's from S02-builtin_data_types/instants-and-durations.t.) | 13:49 | ||
13:51
sirhc joined
|
|||
PerlJam | Kodi: sure ... what I mean is that the Duration fix should be a separate patch/commit | 13:51 | |
flussence | okay, I've figured out it wanted TAP::Harness::Archive for the tests. Should I bother re-running them? | 13:52 | |
PerlJam | Kodi: but beyond that, what moritz_ said. :) | ||
moritz_ | flussence: if you have it installed now, yes | ||
flussence | ok then | ||
moritz_ | so far we only have two submissions, both from me | 13:53 | |
Kodi | PerlJam: Oh, I see. Yeah, I agree in spirit, but getting patches into Rakudo usually takes a certain amount of time and effort, so I don't want the overhead of a separate three-line patch. | ||
moritz_ | Kodi: a separate three-line patch is more likely to get applied quickly | 13:54 | |
13:54
daemon left
|
|||
PerlJam | moritz_: soon to be one from me if my machine ever finishes. | 13:54 | |
Kodi | moritz_: Point. | ||
13:55
icwiener joined
13:57
Guest23195 left
|
|||
gottreu | rakudo: say ~(<not lists>, <parcels are>).reverse | 13:57 | |
p6eval | rakudo 705379: OUTPUT«parcels are not lists» | 13:58 | |
gottreu | That is correct behavior, right? | ||
moritz_ | rakudo: say ~(<not lists>, <parcels are>).flat.reverse | ||
p6eval | rakudo 705379: OUTPUT«are parcels lists not» | ||
gottreu | right. reverse not auto-flattening like join is the correct thing for rakudo to do? | ||
moritz_ | sounds about right | ||
but I'm not really sure | 13:59 | ||
14:02
icwiener_ joined,
icwiener left
|
|||
toebu | wonders, how to i use ^attributes to show what attributes a method expects ? | 14:02 | |
moritz_ | you don't | ||
toebu | cry | 14:03 | |
moritz_ | attributes are object data | ||
toebu | hmmm | ||
moritz_ -> afk | |||
toebu | so ^methods will tell me what methods are available, but I can't figure out their argument specs ? | 14:04 | |
masak | .signature | ||
moritz_ | you can ask the methods for .signature for example | ||
toebu | aaah .. tries | ||
so I do for Mu.^methods -> $m { say $m XXXX ? } ... what would XXX be o get a list of methods with signatures ? | 14:09 | ||
PerlJam | toebu: you probably want $m.signature.perl | 14:10 | |
14:10
daemon joined
|
|||
masak | except that doesn't work when it's a Perl6MultiSub, it seems :/ | 14:11 | |
PerlJam | ouch | 14:13 | |
Hmm. or when it's a Sub either. | 14:14 | ||
14:15
uniejo left
|
|||
PerlJam | (I just tried toebu's Mu example and it dies on .defined with "get_attr_str() not implemented in class 'Sub'") | 14:15 | |
masak | I also got Sub. | ||
when is a method a Sub? | |||
toebu | guess I will limit myself to the $m.name ... that works ... | ||
PerlJam | when rakudo is confused? | ||
toebu | I guess a methos is a Sub when it is unique | 14:17 | |
masak | yes, but should it? I'd prefer it to be, I dunno, a Method. | 14:18 | |
PerlJam | masak: that's just crazy talk! | ||
toebu | masak: you mean maybe there is a different syntax to be used for this ? | 14:19 | |
14:19
Kodi left
|
|||
masak | toebu: no, you're on the right track. just hitting a lot of pain that shouldn't be there in the long run. | 14:19 | |
toebu | nod | 14:20 | |
PerlJam | I suppose that this will be a problem for any of the methods that are cheats | ||
ls | |||
toebu | I tried it by defining my own class ... the result was the same | ||
PerlJam | toebu: if you're only interested in the methods defined within your class, make sure you're using ^.methods(:local) | 14:21 | |
er, .^methods(:local) | 14:22 | ||
toebu | thanks | ||
14:28
thebird left
14:34
yoasif left
14:38
\xF0 left,
wtw left
14:46
meinwald is now known as meinwald5,
meinwald5 is now known as meinwald
14:49
nymacro joined
|
|||
bbkr | rakudo: class A {sub foo {}}; A.new.^methods(local=>True).perl.say | 14:57 | |
p6eval | rakudo 705379: OUTPUT«[]» | ||
bbkr | rakudo: class A {method foo {}}; A.new.^methods(local=>True).perl.say | ||
p6eval | rakudo 705379: OUTPUT«[{ ... }]» | ||
15:04
risou joined
|
|||
bbkr | rakudo: A.new.HOW.methods.say # bug? Spec says that "The ^ metasyntax is equivalent to .HOW" so I expect it to work like A.new.^methods.say (which works). am I missing something? | 15:06 | |
p6eval | rakudo 705379: OUTPUT«Could not find sub &A in main program body at line 22:/tmp/RNsUDBugwZ» | ||
bbkr | rakudo: class A{}; A.new.HOW.methods.say # bug? Spec says that "The ^ metasyntax is equivalent to .HOW" so I expect it to work like A.new.^methods.say (which works). am I missing something? | ||
15:07
\xF0 joined
|
|||
p6eval | rakudo 705379: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected in main program body at line 22:/tmp/jcXYdV_byv» | 15:07 | |
PerlJam | bbkr: no, you're not using HOW appropriately. It's something like A.new.HOW(A).methods.say | 15:10 | |
15:10
thebird joined,
vdrab_ joined
|
|||
PerlJam | rakudo: class A{}; A.new.HOW(A).methods.say; | 15:10 | |
15:10
vdrab_ left
|
|||
p6eval | rakudo 705379: OUTPUT«too many positional arguments: 2 passed, 1 expected in main program body at line 22:/tmp/gFvODF2S70» | 15:10 | |
PerlJam | bbkr: well, it's something like that anyway. | 15:11 | |
rakudo: class A{}; A.new.HOW.methods(A).join(" ").say | 15:13 | ||
p6eval | rakudo 705379: OUTPUT«grep none values Numeric elems end all roll Str keys postcircumfix:<[ ]> postcircumfix:<{ }> uniq classify pairs kv one ACCEPTS pick flat any Seq minmax does rotate join can reduce list reverse at_key isa map min max at_pos sort first new Bool say print item WALK defined BUILD | ||
..clon… | |||
15:13
vdrab left
|
|||
PerlJam | rakudo: class A{}; HOW(A).methods(A).say | 15:14 | |
p6eval | rakudo 705379: OUTPUT«Could not find sub &HOW in main program body at line 22:/tmp/kuhyfg86P7» | ||
15:15
Guest23195 joined
|
|||
PerlJam | S02:635 or so | 15:15 | |
15:15
risou left
|
|||
flussence | it'd be nice if the "too (many|few) positional arguments" error said what method name caused the error... | 15:15 | |
PerlJam | flussence++ | 15:16 | |
especially since perl6 is more oopy and chained method calls will be more common | |||
15:16
Trashlord left
15:22
rgrau joined
15:27
xinming left,
xinming joined
15:28
rgrau left,
tadzik joined
|
|||
pmichaud | good morning, #perl6 | 15:34 | |
takadonet | pmichaud: morning | 15:35 | |
PerlJam | morning pm | ||
15:35
Holy_Cow joined
|
|||
jnthn | tadzik: $obj.^foo is not just $obj.HOW.foo, it does $obj.HOW.foo($obj) | 15:35 | |
oh, gah | |||
bbkr: ^^ | |||
morning, pmichaud | |||
jnthn makes a quick trip to the systemka, bbs | 15:36 | ||
bbkr | PerlJam: thanks | ||
15:37
thebird left
|
|||
masak | morning, pmichaud | 15:38 | |
pmichaud | "Perl 6 -- It's more oopy." -- PerlJam | 15:40 | |
(does that mean it makes you say "oops" more often? ;-) | |||
PerlJam | all the time | ||
masak | most often on behalf of Rakudo :P | 15:41 | |
tadzik | why is try.rakudo.org down? :( | 15:43 | |
15:44
Mowah joined
|
|||
tadzik | rakudo: say ~(1, 1, *+* ... 400) # how do I do this with the new series specs? | 15:45 | |
p6eval | rakudo 705379: OUTPUT«(timeout)» | ||
masak | rakudo: say ~(1, 1, *+* ... * >=400) | 15:46 | |
p6eval | rakudo 705379: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377 610» | ||
masak | rakudo: say ~(1, 1, *+* ...^ * >=400) | ||
p6eval | rakudo 705379: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377» | ||
TimToady | or > if you want the 400 | 15:47 | |
PerlJam | examples like that make me think the ...^ op is going to get a lot more use than I previously thought | 15:48 | |
15:49
tadzik left
|
|||
masak | PerlJam: I thought the same after the spec changed to its current configuration. | 15:49 | |
PerlJam | so ... why smart match for termination rather than inclusion? | 15:53 | |
TimToady | because ... 42 is a termination match already | 15:54 | |
so it's consistent | |||
pmichaud | I tend to think of series as "1, 2, 3, up to $n" | 15:55 | |
and "up to" reads more like an 'until' than a 'while' | |||
to me, at any rate. | |||
PerlJam | so you read ... and ...^ both as "up to" ? | ||
pmichaud | ... up to and including | ||
...^ up to | |||
TimToady | up thru | 15:56 | |
pmichaud | (and excluding) | ||
TimToady | rakudo: say ~(1, 1, *+* ...^ 400<*) | 15:58 | |
p6eval | rakudo 705379: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377» | ||
TimToady | rakudo: say ~(1, 1, *+* ...^ 377<*) | ||
p6eval | rakudo 705379: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377» | ||
PerlJam | in any case, I can see a few FAQs on the horizon relating to series | ||
TimToady | yes, it's less dwimmy than it used to be, but more consistent | ||
perhaps there's a missing predicate that would help keep things straight | |||
masak | as part of restoring my blog, I end up looking at ancient blog posts. this made me stumble upon the deprecated "string" ~~ SomeGrammar matching syntax. what was the reason for scrapping that, again? | ||
pmichaud | that's a 'does' check. | 15:59 | |
masak | std: say ~(1, 1, *+* ...^ 400<*) | ||
p6eval | std : OUTPUT«===SORRY!===Unable to parse quote-words subscript; couldn't find right angle quote at /tmp/Ndwh4Z4sfx line 1:------> say ~(1, 1, *+* ...^ 400<⏏*) expecting escapeParse failedFAILED 00:01 118m» | ||
TimToady | heh | ||
15:59
justatheory joined
|
|||
pmichaud | SomeGrammar is a type object | 15:59 | |
masak | pmichaud: but, couldn't the grammar metaclass easily override that? | ||
pmichaud | masak: we tried that.... and things get quickly confusing. | ||
masak | oki. that's good enough for me. | 16:00 | |
16:00
gbacon joined
|
|||
masak | what about overriding infix:<~~> for grammars, then? | 16:00 | |
TimToady | how does that help 'when'? | 16:01 | |
masak | oh. I see what you mean. | 16:02 | |
pmichaud | in theory, "string" ~~ SomeGrammar.new could be made to work, I suppose. | ||
(if it doesn't already) | |||
16:02
Ross^ joined
|
|||
TimToady | yes, it's grammar objects that do the matching, not grammar types | 16:02 | |
masak | anyway, just wondering. that syntax was pretty schweet. | ||
TimToady | .parse is just a constructor | 16:03 | |
PerlJam | "string" ~~ SomeGrammar.parse doesn't seem too bad to me :) | ||
TimToady | .parse($_) | ||
and then why not just .parse("string") | 16:04 | ||
16:04
daxim left
|
|||
TimToady | an argument could be made for a Str.parse(Grammar) form though | 16:05 | |
or .parsewith | |||
pmichaud | don't we already have .match? | 16:06 | |
or did that disappear somewhere? | |||
TimToady | does that take a grammar argument? | ||
pmichaud | it *could* :-) | ||
TimToady | and presumably *excludes* type matching... | 16:07 | |
pmichaud | unless, of course, .matc.... right | ||
anyway, I'd be fine with Cool.parse | |||
(or Str.parse if we want to limit a bit further) | |||
16:08
sahadev joined
|
|||
jnthn back :-) | 16:11 | ||
PerlJam | how useful would 3.1415.parse(NumberGrammar) be? | ||
jnthn | Hope to get some Perl 6 hacking in this evening. :-) | ||
16:11
araujo left,
Kodi joined
16:12
tadzik joined
|
|||
TimToady | we should probably limit to Stringy for now | 16:12 | |
16:15
envi^home joined
|
|||
masak | TimToady: on p6l. jkpeters_37++ points out a likely thinko in the pick/roll split spec patch. | 16:16 | |
16:17
alester joined
16:20
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
gottreu | TimToady: is .reverse not flattening a Parcel, while .join does correct behaviour? | 16:22 | |
Kodi | pmichaud: Thanks for your comments. I didn't use .!STORE because infix:<=> ignores .!STORE if the lvalue is scalar. Would you prefer changing that to using my .ASSIGN nonsense? | 16:23 | |
16:26
Trashlord joined
16:28
thebird joined
16:31
timbunce_ joined
16:32
timbunce left,
timbunce_ is now known as timbunce
16:34
ruoso joined,
molaf joined
|
|||
pmichaud | Kodi: perhaps. I need to think a bit more about how that should work. | 16:39 | |
The real question is knowing how my $x is Hash; $x = <something>; should work | 16:40 | ||
TimToady | rakudo: say (1,2,(3,4)).reverse.perl | ||
p6eval | rakudo 705379: OUTPUT«((3, 4), 2, 1)» | 16:41 | |
jnthn | (speculative) maybe it's something along the lines of having a multi trait_mod:<is>(ContainerDeclarand $c, Mu:U $ctype) { ... } | ||
TimToady | gottreu: yes, I suspect you're right | ||
gottreu | TimToady: I can't be right, I don't know what right or wrong are. | 16:42 | |
TimToady | :) | ||
Kodi | The idea of making the kind of assignment depend only on the container (as opposed to the sigil) of the lvalue appeals to me. | 16:43 | |
TimToady | it seems to me that .reverse should flatten like .join | ||
pmichaud | do we have some sort of general rule to know what flattens and what doesn't? it seems a bit ad-hoc to me. | ||
gottreu | .map doesn't flatten | ||
Kodi | But perhaps that would make list assignment all the more complicated. | ||
dalek | ecs: 61e2e1a | TimToady++ | S32-setting-library/Containers.pod: copy-paste issues with new roll method jkpeters_37++ points out a problem in the new specs for .roll, which are now revised for (I hope) more clarity. |
16:44 | |
gottreu | pmichaud: doesn't the synopses say something like "the previous and following material may all be wrong regarding flattening" | ||
PerlJam | Why would some flatten and others not when we can always throw .flat into the mix ? | ||
pmichaud | gottreu: yes, which is why I'm asking if we have some way of making it less wrong :) | 16:45 | |
gottreu | Does it have to do with context? Of List vs Array vs Seq vs Parcel ? | ||
pmichaud | gottreu: especially since I'm the one currently charged with updating those parts of the synopses :) | ||
gottreu | pmichaud: OH, i see. | ||
colomon | rakudo: Bool.roll(10).perl.say | ||
p6eval | rakudo 705379: OUTPUT«(Bool::True, Bool::True, Bool::True, Bool::True, Bool::False, Bool::True, Bool::False, Bool::False, Bool::True, Bool::True)» | 16:46 | |
pmichaud | Kodi: making it dependent on the container does have a lot of merit, yes. That probably requires a huge cleanup of our existing Perl6Scalar usage, though. | ||
jnthn | rakudo: class Rick is Cool { }; Rick.roll(10).perl.say | 16:47 | |
tadzik | :D | ||
p6eval | rakudo 705379: OUTPUT«(Rick, Rick, Rick, Rick, Rick, Rick, Rick, Rick, Rick, Rick)» | ||
PerlJam | jnthn: it would have been an awesome easter egg had that output ('Never', 'gonna', 'give', 'you', 'up' ... ) | 16:48 | |
jnthn | :-) | ||
pmichaud | fsvo "awesome". | ||
maybe someday: | 16:49 | ||
gottreu | fsvo: for some values of? | ||
pmichaud | enum Rick <Never gonna give you up>; Rick.roll(10).perl.say :-) | ||
jnthn | rakudo: enum Rick <Never gonna give you up>; Rick.roll(5).perl.say | 16:50 | |
huf | what's roll()? | ||
p6eval | rakudo 705379: OUTPUT«(, , , , )» | ||
jnthn | FAIL. | ||
TimToady | if we want it to remain inconsistent, seems like it might have to do with whether there's a redirection through Any to List, which might (or might not) imply flattening | ||
but I'll have to ponder what the correct default or non-default is here | |||
pmichaud | currently Parcel special-cases .join, .sort, etc to first do .flat | ||
PerlJam | huf: .roll is like pick, but with replacement | 16:51 | |
pmichaud | I can do that for .roll and .pick also, but.... | ||
"Less memorization of special cases..." :-) | |||
huf | PerlJam: and for classes it just acts as if the class were a one-element list with its classname in it? or? | ||
Kodi | pmichaud: In the meantime, we don't have any code that depends on !STORE methods of scalar containers being ignored, do we? That would be pretty crazy. | ||
pmichaud | Kodi: Yes, we do. | 16:52 | |
Kodi: because of: | |||
my $x = [1, 2, 3]; $x = 5; | |||
TimToady | rakudo: say (reverse 1,2,(3,4),5).perl | ||
oops | |||
p6eval | rakudo 705379: OUTPUT«(5, 4, 3, 2, 1)» | ||
TimToady | then we have to explain that difference instead | ||
pmichaud | the result of that should be that $x is a 5. We don't want it to go to the Array's !STORE method. | ||
PerlJam | huf: a one element list consisting of a single (undefined) instance of that class | 16:53 | |
Kodi | But the container of $x doesn't get the !STORE there; its value does. Right? Or am I misunderstanding the true nature of the container-value distinction? | ||
huf | PerlJam: ah, which stringifies to the name, yeah | ||
Kodi | As in, $x might hold an Array, but $x itself it unchanged. | ||
pmichaud | Kodi: at present we don't have a way of attaching methods to (scalar) containers. | ||
whenever a scalar gets a method invocation, it forwards it to its value | 16:54 | ||
TimToady | rakudo: say map *-1, 1,2,(3,4),5 | ||
p6eval | rakudo 705379: OUTPUT«01234» | 16:55 | |
Kodi | pmichaud: Oh, bummer. | ||
pmichaud | TimToady: the flattening there is due to the listop (passing the values to a slurpy array) | ||
gottreu | rakudo: (1,2,(3,4),5).map({$_*-1}) | ||
p6eval | rakudo 705379: ( no output ) | 16:56 | |
Kodi | pmichaud: I'm tempted to just use a PMC property instead… which brings us back to square one. | ||
gottreu | rakudo: say (1,2,(3,4),5).map({$_*-1}) | ||
p6eval | rakudo 705379: OUTPUT«-1-2-2-5» | ||
TimToady | I know, just trying to argue both sides from the viewpoint of the typical programmer as to whether Any-lists are better as flattening | ||
where Any-lists are the ones that are "naturally listy" in the language | |||
pmichaud | Kodi: well, assignment can check the type of the target container instead of checking the 'scalar' property. | ||
16:57
thowe joined,
dakkar left
|
|||
thowe | hello | 16:57 | |
pmichaud | I have it checking the 'scalar' property now simply because Rakudo's use of the Perl6Scalar type is inconsistent, and I was under a heavy time constraint at the time that I was trying to get lists, iterators, arrays, etc. to work. | ||
PerlJam | TimToady: There's a typical programmer? | ||
pmichaud | PerlJam: Yes. We keep him in a box. | ||
PerlJam | pmichaud: Did Schroedinger make the box? | 16:58 | |
pmichaud | PerlJam: I've been too afraid to look inside to find out. | ||
rokoteko | pmichaud: remember to feed him also :( | ||
TimToady | it's a really big box, with several kinds of fast food | 16:59 | |
gottreu | You don't really keep him there. You put him in once, and he's just never bothered to leave. | ||
PerlJam | TimToady: anyway, this a case where a programmer coming from lisp and a programmer coming from perl 5 would fall on opposite sides of the fence I think. | ||
pmichaud | ...there's a fence? ;-) | ||
PerlJam | right through the middle of the box | 17:00 | |
TimToady | PerlJam: yup | ||
pmichaud | I think the fence should be purple. | ||
17:00
Trashlord left
|
|||
pmichaud | that way it will match the bikeshed. :) | 17:00 | |
gottreu | I think the fence should have an area to chain bikes. | ||
PerlJam | It just looke like a fence ... really it's a bike rack | ||
TimToady | whether flat or slice should be the default is somewhat cultural, and where the default should *be* the default is also debatable | 17:01 | |
rokoteko | hmm. this is not very clear conversation.. Im puzzled if they fell from the sides they originated from or the sides of each other? | ||
pmichaud exits silliness mode for a while. | |||
TimToady | that's long enough | ||
Kodi | pmichaud: Would it be hard to make scalars avoid forwarding !STORE calls to their values? | 17:02 | |
PerlJam | TimToady: Perl 6 leans quite a bit farther towards the FP style, so .... what would guy steele do? ;) | ||
Kodi | (Or perhaps I should just try it and find out.) | ||
17:04
Trashlord joined
|
|||
pmichaud | Kodi: just as a general note, I'm not likely to want to apply patches dealing with containers until after I get the Hash refactor done. I'm very happy that you want to work on it (and encourage more investigation), but there are quite a few other fundamental pieces that need to be cleaned up before I go adding more complexity on top. | 17:04 | |
here's an example: | |||
rakudo: my @a; say @a.defined; | 17:05 | ||
17:05
thebird left
|
|||
p6eval | rakudo 705379: OUTPUT«1» | 17:05 | |
pmichaud | I'm guessing that should be false. | ||
TimToady | yes | ||
due to imlicit = Nil | |||
*p | |||
17:05
kjeldahl_ left
|
|||
pmichaud | So, that implies a lot of fundamental changes to container setup and binding which really want to be ironed out first. | 17:05 | |
TimToady ponders an illicit Nil | |||
Kodi | pmichaud: I see. Fair enough. | 17:06 | |
pmichaud: I don't suppose you plan on getting hashes to permit non-string keys during this refactor? | 17:07 | ||
pmichaud | Kodi: not during the first refactor, no. But the second one could do it. | ||
That also depends on Parrot's support for non-string hash keys | |||
PerlJam | "containers" seem to be a very fundamental thing that have been done and redone many times over the years (in parrot and then rakudo) | ||
pmichaud | and before we do that, we probably want to get typed arrays working first, too. | 17:08 | |
(since they touch on very similar issues) | |||
PerlJam: Yes, they are frequently redone as we discover new corner cases in the spec. | |||
17:08
envi^home left
|
|||
Kodi | I imagine, actually, that on the Parrot level you'd use a string-keyed hash, the strings being generated by calls to .WHICH. | 17:08 | |
PerlJam | It seems crazy that we haven't found all of the corners yet | 17:09 | |
pmichaud | PerlJam: well, the spec has been (is still?) self-inconsistent in some areas, so the corners keep moving. | ||
Consider that we didn't have a 'flat' contextualizer a year ago, and the meaning of 'Nil' has changed a few times, and .... | 17:10 | ||
PerlJam | maybe I'm just falling into the same trap as those people who say/said "They're already got Perl 5; what's taking Perl 6 so long?" | ||
TimToady | the number of corners goes up in proportion to the <mumble> of the number of dimensions | ||
jnthn | It's like finding the corners in a spherical room. :-) | ||
TimToady | more like a Hilbert room. | ||
pmichaud | or inside of a box with indeterminate stat...... oh, I said I was out of silliness mode :) | ||
Kodi | The average programmer must get awfully nauseous in such a rapidly spinning box. | ||
TimToady | pmichaud: that was a long time ago | 17:11 | |
it's not spinning now, it's rolling | |||
pmichaud | TimToady: hard for me to know, all of my clocks are running backward. :) | ||
PerlJam | TimToady: so, what's the dimensionality of the Perl 6 fractal as currently specced? | ||
TimToady | were you Merlin in a future life? | ||
pmichaud | TimToady: I'm waiting to find out. :) | ||
ingy | goood morning freaks! | 17:12 | |
TimToady | PerlJam: before or after you call .flat? | ||
pmichaud | (or if it's done for you implicitly :-) | 17:13 | |
TimToady | that depends on whether you're the implementor or the user | ||
PerlJam ponders if ingy is just being friendly or if he should worry that *ingy* called #perl6 freaks. | 17:14 | ||
TimToady | it was probably a compliment | ||
17:14
Chillance joined
|
|||
ingy | PerlJam: pick any 3 | 17:15 | |
and multiply by 2 | 17:16 | ||
PerlJam | woot! that favors a good outcome :) | ||
17:16
muixirt joined
|
|||
moritz_ | rakudo: say pick any 3 | 17:16 | |
p6eval | rakudo 705379: OUTPUT«any()» | ||
TimToady | rakudo: say (1,2,(3,4),5).map: *-1 | 17:19 | |
p6eval | rakudo 705379: OUTPUT«0114» | ||
17:22
colomon left
|
|||
Kodi | pmichaud: At any rate, you've got your work cut out for you. Is there any way I can help? (I will submit a separate patch for the Duration issue.) | 17:24 | |
pmichaud | Kodi: good question | ||
I'm trying to decide if it's better for me to tackle the Hash issue first or the container one. | 17:25 | ||
I think probably Hash, since it's a bit more intricate and needs greater refactoring | |||
Kodi | You don't think changing containers will make you need to go back and redo some of what you did for hashes? | 17:26 | |
pmichaud | not really | ||
handling containers is a lot like the autoviv issue, which I already handled in the case of arrays (so I know what to expect) | |||
when redesigning hashes I can keep that in mind | 17:27 | ||
or, put another way, trying to get containers to work with the existing hash messiness is likely to be much more difficult than it needs to be | |||
something that would _really_ help is to make sure our existing usage of Perl6Scalar is consistent | |||
currently we have ObjectRef and Perl6Scalar | 17:28 | ||
both of them are "reference types" in the sense that they forward methods and other items to an underlying value | |||
Perl6Scalar should be used exclusively for scalar containers.... there may be some places where it gets used as a normal reference, though. | |||
if we could find and eliminate those, that'd be helpful | 17:29 | ||
so, one thing you could do is to see if it's possible to switch assignment so that it tests the target for Perl6Scalar instead of the 'scalar' flag. | |||
Kodi | Right. | ||
pmichaud | and then see what breaks | ||
Kodi | And deal with the fallout. | ||
:) | |||
pmichaud | I highly recommend doing all of this in a branch. | ||
Kodi | I would locally, sure, but do you mean that any patch I created to be applied to something other than master? | 17:30 | |
*created would be applied | |||
pmichaud | I can give you a commit bit and you could push your branch(es) to github. We received your CLA this week. | 17:31 | |
(yesterday, in fact) | |||
Kodi | Ah. Aha! Very timely. | ||
Hmm. | |||
pmichaud | anyone else think Kodi++ should have a commitbit? ;-) | ||
moritz_ | +1 | ||
PerlJam | +2 :) | 17:32 | |
pmichaud | anyway, it's a big enough change that I'd definitely do it in a branch, and we'll merge it if it looks clean enough. | ||
there's a chance it will get very messy and force changes throughout the codebase... in which case we need to re-evaluate. | |||
(especially since it can impact lists, and flattening, and iterators, and ....) | 17:33 | ||
Kodi: github id? | |||
Kodi | pmichaud: KodiB | ||
pmichaud | Kodi: you now have a commitbit | ||
Kodi | Awesome. | 17:34 | |
pmichaud | feel free to apply whatever Instant/Duration patches you have -- you're well-proven in that area already | ||
Kodi | Sounds good. | ||
pmichaud | set up a branch for switching scalar assignment and I'll take a look | ||
meanwhile I can work on the hash refactor | |||
Kodi | Is there anything more you can tell me about ObjectRef? Is the idea that it's supposed to serve as a generic reference type in place of Perl6Scalar? | 17:36 | |
17:36
gottreu left
|
|||
flussence | whee, test thing finished properly this time | 17:36 | |
Kodi | Also, why do we have Perl6Scalar instead of the specced Scalar? Different things? | ||
pmichaud | Parrot already has a 'Scalar' PMC type. | 17:37 | |
PerlJam | flussence: mine locked up my computer for some reason | ||
Kodi | Oh. | ||
pmichaud | whenever we end up with conflicts like that (and they're much rarer now), we prefix with "Perl6" to disambiguate. | ||
(and then we have a way of mapping in the compiler/runtime so that a p6 programmer sees/uses "Scalar") | 17:38 | ||
shortcircuit | What's with the ! following each sigil in rosettacode.org/wiki/Execute_Brain****/Perl_6 ? | ||
Kodi | shortcircuit: That's the "private variable" twigil. | ||
pmichaud | shortcircuit: private attributes of instances of the class | ||
PerlJam | shortcircuit: private object attrs | ||
Kodi | shortcircuit: Fancy meeting you here. :) | 17:39 | |
PerlJam notes that the "sauce" on his pork chops is like 90% olive oil | |||
shortcircuit | Kodi: Heh. Hi. :) | ||
17:40
gottreu joined
17:41
Ross^ left
17:42
patrickas joined
|
|||
patrickas | good evening ladies , gents and butterflies | 17:43 | |
masak | good evning, dear sir. | 17:46 | |
patrickas | masak++ ( There must be something you did worthy of karma since I last spoke to you :-p ) | 17:48 | |
pmichaud | masak++ filed more bug reports. | ||
(That's pretty much a given, I suspect.) | |||
masak | there have been many in the past few days. | ||
pmichaud | I've been working on fixing some of them, too. :) | ||
masak | pmichaud++ \o/ | 17:49 | |
pmichaud | rakudo: my $x; $x ?&= 5; say $x | ||
p6eval | rakudo 705379: OUTPUT«1» | ||
patrickas | for every pmichaud++ we get a bug-- | ||
pmichaud | I just filed TT #1793 for the character encoding bug (RT #77888) | 17:50 | |
moritz_ | did anybody file a bug report for the Unicode breakage with latest parrot? | 17:51 | |
pmichaud | no, but I have a recent spectest | ||
I want to fix the short-circuit failure first, since it's somewhat known/unrelated. | |||
I'll do that right after lunch. | |||
which is now. | 17:52 | ||
bbl | |||
gottreu | May I ask what happened with the pugs svn repo and the plusthree smolder server? | ||
moritz_ | no idea about plushtree; seems its maintainer disappeared | 17:53 | |
the pugs repo had to be shut down due to neglected maintenance | |||
so we moved it to git, split it up and moved it to github | 17:54 | ||
gottreu | but it was shut down sooner than preferred, no? | ||
moritz_ | correct | ||
gottreu | neglected maintenance mean lack of security patches? and had to take it down because it was a dangerous infected zombie? | 17:55 | |
moritz_ | it means nobody bothered to run 'apt-get update' on the server, responded to high load due to bot spidering the svn web interface etc. | 17:56 | |
flussence repeats spectest, this time on non-glacial hardware | |||
gottreu | ah...well at least it wasn't trying to eat brains. | ||
flussence | I'd considered trying to install linux on my Wii (ppc) to run this, but I wouldn't get very far on ~80MB of RAM :( | 17:58 | |
plus it'd probably catch fire | |||
18:05
amkrankruleuen joined
|
|||
amkrankruleuen | Hello | 18:05 | |
18:06
nymacro left,
jedai joined
|
|||
shortcircuit wonders if anyone wants to take a crack at rosettacode.org/wiki/RCRPG/Perl | 18:10 | ||
That version was something I wrote on a whim while home sick one weekend. I was feeling nostalgic for old BBS games. | 18:11 | ||
18:13
mberends joined
|
|||
masak | nom & | 18:20 | |
18:20
masak left,
am0c left
18:34
aesop left,
jaldhar left
18:36
jaldhar joined
18:37
jaldhar left
|
|||
sorear | good * #perl6 | 18:39 | |
patrickas | o/ sorear | ||
18:40
jaldhar joined
|
|||
patrickas | since the move of pugs to github make spectest and now make spectest_smolder are giving me errors on win32 | 18:42 | |
anyone else seing that ? | 18:43 | ||
sorear | it would help to know which errors you are experiencing | 18:45 | |
18:45
Italian_Plumber left
|
|||
gottreu | spectest_smolder still references plusthree, so that should give errors on all platforms | 18:47 | |
patrickas | the slashes in git command were backwards so I fixed them and the args to curl command don't seem to work, I am just not sure if these are local errors because of something I previously did or something happening with all win32 users and needs correcting in rakudo | 18:48 | |
18:48
Italian_Plumber joined
|
|||
gottreu | what type of win32 environment does rakudo work in? cygwin? mingw? using microsoft tools? | 18:49 | |
18:50
wamba left
|
|||
jnthn | Use the MS tools for sure, and I believe MinGW too | 18:51 | |
And perhaps also Cygwin. | |||
18:52
icwiener_ left
|
|||
gottreu | I have a vbox image with Cygwin, so I'll try that. | 18:52 | |
18:54
dual joined
|
|||
PerlJam | my two attempts at make spectest_smolder today have both gotten to t/spec/S03-metaops/reverse.t and just hung. | 18:55 | |
18:56
Holy_Cow left,
jaldhar left,
Italian_Plumber left,
jaldhar joined
|
|||
sorear | wow | 18:58 | |
p6l was actually useful for once | |||
18:59
timbunce left
|
|||
flussence | PerlJam: is your system low on RAM at all? reverse.t peaks at 480MB for me, dunno if it's significant | 19:00 | |
PerlJam | flussence: not at all. I've got 4 G of ram with about 1.2 G free. | 19:01 | |
19:02
patrickas left
|
|||
PerlJam | the first time it got stuck at 15/33, the second 7/33 and just now it's at 23/33 and holding. | 19:02 | |
flussence | ack, the worst kind of bug... | 19:03 | |
does running just the one test on its own work? | |||
PerlJam | dunno yet, I'm about to try it though. | 19:04 | |
19:05
timbunce joined
19:07
shade\ left
|
|||
PerlJam | prove --verbose --exec ./perl6 t/spec/S03-metaops/reverse.t # zips through the tests no problem until the last. It never outputs anything after "ok 32 - Rop gets the precedence of op" | 19:08 | |
rakudo: say ~(10 R... 1, 3) | 19:10 | ||
p6eval | rakudo 705379: OUTPUT«(timeout)» | ||
PerlJam | rakudo: say ~(1,3 ... 10) | ||
p6eval | rakudo 705379: OUTPUT«(timeout)» | 19:11 | |
PerlJam | well, that would explain it :) | ||
19:11
HarryS joined,
florz left
|
|||
PerlJam | rakudo: * > 10 R...^ 1,3 | 19:12 | |
p6eval | rakudo 705379: ( no output ) | ||
PerlJam | rakudo: say ~(* > 10 R...^ 1,3) | ||
p6eval | rakudo 705379: OUTPUT«1 3 5 7 9» | 19:13 | |
PerlJam | at least that works. | ||
19:15
shade\ joined
|
|||
PerlJam | strange. | 19:16 | |
19:16
HarryS left
|
|||
PerlJam | rakudo: say ~(0,2 ... 10) | 19:17 | |
p6eval | rakudo 705379: OUTPUT«0 2 4 6 8 10» | ||
PerlJam | rakudo: say ~(1,3 ... 10) | ||
p6eval | rakudo 705379: OUTPUT«(timeout)» | ||
PerlJam | oh! no, it's not strange. | ||
19:17
florz joined
|
|||
PerlJam | the accidental infinite list is going to surprise other people than just me :) | 19:19 | |
tadzik | couldn't it be the old way? :\ | 19:20 | |
rakudo: say ~(1,3 ... * >= 10) | |||
p6eval | rakudo 705379: OUTPUT«1 3 5 7 9 11» | ||
tadzik | rakudo: say ~(1,3 ... ^ * >= 10) | 19:21 | |
p6eval | rakudo 705379: OUTPUT«Can't take numeric value for object of type Whatever in 'Any::Numeric' at line 1367:CORE.setting in 'prefix:<^>' at line 7084:CORE.setting in main program body at line 22:/tmp/3nORv9PH4l» | ||
tadzik | ETOOMUCHTYPING | ||
19:23
Kodi left
|
|||
PerlJam | tadzik: alternatively, we could outlaw the 1 ... 10 form and instead require 1 ... * == 10 | 19:26 | |
(yes, I know, more typing. I'm just looking for some consistency that isn't likely to trip someone up) | 19:27 | ||
that would also draw a clearer distinction between .. and ... | 19:28 | ||
tadzik | what was the rationale for changing the specs? | 19:29 | |
PerlJam | and if *that* were the case, it might seem a little more natural to use the trailing closure to be a test for inclusion rather than termination of the series | 19:30 | |
tadzik | hmm, not bad | ||
rakudo: say ~(1, 3, * + 2) | 19:31 | ||
p6eval | rakudo 705379: OUTPUT«1 3 _block126» | ||
tadzik | rakudo: say ~(1, 3, * + 2)[^10] | ||
p6eval | rakudo 705379: OUTPUT«1 3 _block126 Any() Any() Any() Any() Any() Any() Any()» | ||
tadzik | bleh | ||
rakudo: say ~(1, 3, * + 2 ... * > 15) | |||
p6eval | rakudo 705379: OUTPUT«1 3 5 7 9 11 13 15 17» | ||
19:33
timbunce left
|
|||
PerlJam | rakudo: say ~(1, 3, * + 2 ...^ * > 15) | 19:33 | |
rakudo: say ~(1, 3, * + 2 ...^ * >= 15) | |||
p6eval | rakudo 705379: OUTPUT«1 3 5 7 9 11 13 15» | 19:34 | |
rakudo 705379: OUTPUT«1 3 5 7 9 11 13» | |||
PerlJam | it seems weird to add characters to the series to shorten the resultant list | 19:35 | |
pmichaud | 19:29 <tadzik> what was the rationale for changing the specs? | 19:38 | |
the previous spec had too many special-cases to be clean (or cleanly implemented) | |||
sorear | hello pmichaud | 19:40 | |
pmichaud | afk, kid pickup | ||
19:45
rindolf left
|
|||
dalek | kudo: 760c734 | pmichaud++ | src/cheats/process.pm: Set default filehandles to unicode encoding. Resolves RT #77888. |
19:56 | |
pmichaud | back again | 19:58 | |
19:59
Holy_Cow joined
|
|||
sorear | pmichaud: I am thinking that the big thing I need to bait people into a #cpan6sketch meeting is a concrete agenda | 20:01 | |
TimToady | DON'T PANIC!!! | 20:02 | |
(spec change coming) | |||
(mostly terminology) | 20:03 | ||
PerlJam | sorear: working code and questions about the approach might help too. | 20:04 | |
dalek | ecs: b962f00 | TimToady++ | S (5 files): refine tree contexts; slice context -> lol context The old term "slice context" was too overloaded and imprecise; we will now talk about slicing only when discussing multi-argument subscript operations. Various confused levels of treeness may now be distinguished with the .tree method, and the list-of-lists type that used to be "Slicel" is now "LoL". The old "slice" contextualizer is now "lol", and is more or less equivalent to .tree(*.list).LoL, that is do 1 level of tree mapping to list. Note these are now lists of List, not of Seq. That's the only substantive change (along with the .tree method). Almost everything else is just refining the terminology. |
20:06 | |
20:08
Ross^ joined
|
|||
tadzik | so full of lol | 20:10 | |
PerlJam | TimToady: "refine tree contexts"? I think the only place they are mentioned is in the edit you just made. | ||
20:10
Eevee left
20:11
Eevee joined,
HarryS joined
|
|||
TimToady | slice was a kind of tree context | 20:11 | |
PerlJam | a very narrow tree I guess | ||
20:12
cotto joined,
araujo joined
|
|||
sorear | Yay. Maybe now I'll understand the spec well enough to implement it. | 20:13 | |
TimToady | Fat and Slim | ||
PerlJam | slim jim. | 20:15 | |
slim tim | |||
toad and tim | |||
20:16
HarryS left
|
|||
sorear | Why were pick and roll split? | 20:17 | |
dalek | ast: fd2da7e | pmichaud++ | S03-operators/short-circuit.t: Fudge a failing test in short-circuit.t exposed by Parrot Boolean/Integer changes. |
||
sorear | What does S32/Containers:232 mean by "normal semantics of returning a Parcel"? | ||
pmichaud | sorear: because .pick(:replace) was too long and they're really two different algorithms underneath. | ||
TimToady | if you say return 1,2,3 it's a Parcel | 20:18 | |
PerlJam | Is .flat a specialization of .tree effectively? | 20:19 | |
TimToady | thought about it, but I don't think so | ||
it would be confusing in any case | |||
but the list of closures supplied to .tree start at level 1, so I'm not sure prefix:<|> can work there | 20:20 | ||
I think | is kinda macro-y | |||
20:21
tadzik left
|
|||
PerlJam | can I ignore (as in "don't touch") items at level N, but start recursing at level M > N ? | 20:22 | |
can I turn off recursion? | |||
sorear | How does foo(1,2; 3,4) differ from foo((1,2), (3,4))? | 20:23 | |
TimToady | you can always supply an identity function at level N | ||
the lattern isn't necessarily cast to LoL | 20:24 | ||
*latter | |||
sorear | What kind of thing is a LoL? | ||
TimToady | a list of list, in structure | 20:25 | |
sorear | How does a LoL fit into a capture? | ||
Is it an item? | |||
TimToady | well a parcel of list, maybe | ||
would be nice to have a simple nominal type match for multi-dim subscripts | |||
diakopter 's brain bubbles over | 20:26 | ||
20:26
Guest23195 left
|
|||
TimToady | I think the new formulation is better, but certainly not perfect | 20:26 | |
PerlJam | diakopter: That's #perl6 for you ... language design in the raw. | ||
TimToady: aye, I'll agree that it's better. When the implications sink in, we'll see how good it is :) | 20:27 | ||
20:28
Ross^ left
|
|||
pmichaud | s/implications/implementations/ :-) | 20:28 | |
PerlJam | those too | ||
:-) | |||
we get our implications from the implementation primarily anyway | |||
s/implementation/implementations/ | 20:29 | ||
sorear | TimToady: What happens if I put a LoL in a Parcel? | ||
20:30
Ross joined,
Ross left,
Ross joined
|
|||
slavik | sorear: you'll get one confused UPS delivery man. :) | 20:30 | |
sorear | so (1,(2,3),4) turns into something like (parcel item,list,item 1 (parcel item,item 2 3) 4) | 20:31 | |
what does the Parcel passed into foo(1,2; 3,4) look like? | 20:32 | ||
diakopter | TimToady .picked a LoL of slicel'd Parcels | ||
TimToady | Capture(LoL((1,2),(3,4))) or some such | 20:33 | |
gottreu | are Arrays never flattened? | 20:34 | |
TimToady | depends entirely on how they're interpolated | ||
pmichaud | gottreu: flattening isn't entirely a feature of the type -- it's a feature of whatever container is being used | 20:35 | |
TimToady | @array flattens, $array doesn't | ||
sorear | TimToady: so you're saying that the immediate child of a Capture isn't always a Parcel? | ||
TimToady | never has been | ||
A Capture is just a Parcel sorted into positionals and nameds | 20:36 | ||
the positionals could be anything | |||
sorear | a LoL occupies how many positional slots? | ||
20:39
muixirt left
|
|||
TimToady | I think pmichaud++ would prefer it to occupy one | 20:39 | |
not sure how this interacts with ** paramaters though | 20:40 | ||
pmichaud | yes, I was just thinking about that. | 20:42 | |
sorear | pmichaud thinks that parcels don't contain named arguments | ||
pmichaud | ...he does? | ||
pmichaud wonders if he really thinks that or not. | 20:43 | ||
jnthn | ;-) | ||
gottreu | pmichaud thinks that boxes don't contain named programmers | ||
sorear | I thought I asked and you prefered Rakudo's interpretation over the spec? oh well | ||
pmichaud | I've been somewhat thinking that ** knows how to unpack a LoL (formerly Slicel) argument. | ||
20:43
araujo left
|
|||
pmichaud | so in that case, the LoL would act like a single positional. But I'm not entirely certain about that. | 20:44 | |
sorear | sub foo(**@x) { say @x.perl }; foo(1, $moo); # does it matter if $moo ~~ LoL ? | ||
pmichaud | in that case I'd think no. I'd think that @x would end up with a single List element | 20:45 | |
sorear | what about foo($moo)? | ||
pmichaud | same think, since $moo is scalar it shouldn't unpack/flatten. | ||
*thing | |||
sorear | so Slicel, like List, has a scalar/list allomorphism? | 20:46 | |
*LoL | |||
pmichaud | just like sub xyz(*@x) { ... }; xyz($moo) doesn't try to bind @x to $moo | ||
sorear | is LoL ~~ Positional? If so, what about my @foo := LoL.new(...); (**@x) := \(@foo) ? | 20:47 | |
pmichaud | that one is definitely trickier. In that case I'd think that @x unpacks.... but I'd have to think about that a lot more. | 20:49 | |
gottreu | what the flattenicity of AoA? Arrays of arrays? | 20:51 | |
pmichaud | I tend to think of an Array as being a list of Scalars..... and as such its elements don't unpack without help | ||
TimToady | nothing built-in flattens arrays recursively | 20:52 | |
pmichaud | where's a steamroller when you need it? ;-) | ||
$steam.roll; # er..... | |||
TimToady | .flat(Positional) maybe | 20:54 | |
where .flat defaults to .flat(Parcel) | |||
20:54
cjk101010 left
|
|||
TimToady | that is, it'd be a smartmatcher that says whether to interpolate the item | 20:54 | |
.flat(*) would probably work too | 20:55 | ||
unless we also want to distinguish levels there | |||
.flat(*,*,*) # flatten three levels | |||
PerlJam | flattening 27 levels would be a bit of a pain | 20:56 | |
TimToady | not at all | ||
.flat(* xx 27) | |||
pmichaud | assuming flat expects a **@lol argument :-) | 20:57 | |
TimToady | the pain will come when someone wants .tree to do pattern matching as well as coercion | ||
PerlJam | Hmm. I just realized that I had Whatever partioned into two different things in my head. | ||
(when, in reality, they are, of course, the same thing) | |||
pmichaud | oh, I suppose .flat could just be a plain slurpy array | ||
TimToady | that's how I was thinking of it | ||
PerlJam | TimToady: If you could combine .tree with the existing pattern matching facilities somehow, that would be great. :) | 20:58 | |
20:59
colomon joined
|
|||
TimToady | at some point its better to write out your own multis to visit your tree | 20:59 | |
then it doesn't have to be HOP | 21:01 | ||
in fact, lol is unlikely to actually be implemented in terms of .tree | 21:02 | ||
sorear | niecza's actual implementation of flat: sub flat(*@x) { @x } | ||
gottreu | what is niecza exactly? | 21:05 | |
colomon likes walking in on a conversation that involves HOP | |||
sorear | gottreu: my implementation of Perl 6 | 21:09 | |
TimToady | now if only we knew what Perl 6 was exactly... | 21:10 | |
sorear | exactly! | ||
21:11
HarryS joined
|
|||
TimToady | maybe you should hire someone smarter to do this... | 21:11 | |
oh wait, then we'd end up with Haskell | |||
flussence | the thing with most languages is that you need to be at least as smart as the language designers to use them effectively... | 21:13 | |
sorear | the only way to really become proficient in a language is to implement it | 21:14 | |
gottreu | rakudo: say (1,(2,3),4).reverse.perl | ||
p6eval | rakudo 760c73: OUTPUT«(4, (2, 3), 1)» | ||
gottreu | star: say (1,(2,3),4).reverse.perl | ||
p6eval | star 2010.07: OUTPUT«[4, 3, 2, 1]» | 21:15 | |
flussence | shouldn't that be 2010.08? | ||
gottreu | so that explains why there's a failing test in integration....it only changed recently-ish | ||
sorear | niecza now has an object serving most of the roles of a GV | 21:16 | |
21:16
whiteknight joined,
HarryS left
|
|||
flussence | star: say $*PERL | 21:16 | |
p6eval | star 2010.07: OUTPUT«name rakudoversion 2010.07-47-g9fd5eaa» | ||
PerlJam | flussence: you generally want the language designers to be way smarter than the users of the language so that there's always new things to discover in the language. :) | 21:18 | |
TimToady | I dunno, I'm no smarter than the language designer, and I keep discovering new things... | 21:19 | |
pmichaud | doesn't that follow PerlJam++'s statement? ;-) | ||
21:20
supernovus joined
|
|||
dalek | ecza: 25acd31 | sorear++ | / (4 files): Implement separator form of ** |
21:20 | |
ecza: 7b5ec9b | sorear++ | / (2 files): New benchmark - += / containers stress test |
|||
ecza: f1ef178 | sorear++ | / (6 files): Make bvalue sharing explicit in stashes |
|||
ecza: e273644 | sorear++ | src/ (3 files): Use explicit BValue aliasing for 'our' |
|||
flussence | I only figured out *2 days ago* that $self->something() can work in p5 without a blessed $self... :/ | 21:21 | |
supernovus | So, based on a weird error, I'm guessing for @blah <-> $item { ... } isn't implemented yet (the <-> part that is) ? | ||
pmichaud | rakudo: my @blah = 1..5; for @blah <-> $item { .say } | 21:22 | |
p6eval | rakudo 760c73: OUTPUT«===SORRY!===Missing block at line 22, near ""» | ||
pmichaud | hmmm. | 21:23 | |
21:23
Ross left
|
|||
supernovus | yeah, that's the error I got :-) | 21:23 | |
pmichaud | rakudo: my @blah = 1..5; for @blah -> $item is rw { .say } | ||
p6eval | rakudo 760c73: OUTPUT«Any()Any()Any()Any()Any()» | ||
pmichaud | hmmmm | ||
oh | |||
rakudo: my @blah = 1..5; for @blah -> $item is rw { $item++; $item.say } | |||
p6eval | rakudo 760c73: OUTPUT«23456» | ||
pmichaud | I'm guessing <-> isn't (syntactically) implemented | ||
jnthn | iirc, it had some parsing issue last time I tried it | 21:24 | |
my $x = <-> $a { $a = 42 }; my $y = 69; $x($y); say $y; | |||
rakudo: my $x = <-> $a { $a = 42 }; my $y = 69; $x($y); say $y; | |||
p6eval | rakudo 760c73: OUTPUT«===SORRY!===Confused at line 22, near "my $x = <-"» | ||
jnthn | Ah, doesn't like it there either... | ||
supernovus | I switched to using the 'is rw' form. As long as there is a way to modify the original value, I don't really care what it looks like :-) | ||
21:25
jdv79 left
|
|||
jnthn | Maybe the protoregex fix a while back that solved various issues will have unblocked this one too, though. | 21:25 | |
pmichaud | it very well could have -- as well as a few other fixes | 21:26 | |
21:26
patspam1 joined
|
|||
pmichaud | I started looking at it not-too-long-ago but got sidetracked before I could finish | 21:26 | |
21:26
patspam left
|
|||
jnthn branches nqp-rx | 21:27 | ||
supernovus | Well, glad to say that 'is rw' is working perfectly :-) My Flower will be growing at the GitHub garden soon, so all the Butterflies can enjoy the Petals. | 21:33 | |
gottreu | Is p6eval robust? In that infinite loops or memory leaks won't cause any trouble? | ||
diakopter | eh | ||
be careful | |||
gottreu | i have been | ||
flussence | it's got a timeout thing, dunno about memory. | ||
gottreu | My #1 goal at my job is to just not break anything. | 21:34 | |
flussence | the easiest way to do that is to simply do nothing at work :D | ||
pmichaud | supernovus: did you get your commit bit for ecosystem yet? github seems to think you have one. | 21:35 | |
gottreu | The Machines, they like to break themselves. | ||
supernovus | pmichaud: Yeah, moritz_ added me the other day. | ||
gottreu | what should "(1) >>+>> ()" evaluate to? | 21:45 | |
flussence | I'd guess 1 | ||
rakudo: say (1) »+» () | |||
gottreu | ack | ||
i was about to say "btw, don't try it" | 21:46 | ||
p6eval | rakudo 760c73: OUTPUT«(timeout)» | ||
gottreu | YAY! | ||
flussence | :( | ||
sorear | p6eval has resource limits | ||
it can't cause much problems for the server | |||
gottreu | so i don't need to be careful then? | 21:47 | |
sorear | correct | ||
the sandbox is laughably weak, you could give yourself shell access to [email@hidden.address] with minimal effort | |||
but why bother | |||
if you want an acct on feather just ping Juerd ;) | 21:48 | ||
gottreu | heh | ||
21:49
amkrankruleuen left
|
|||
flussence | rakudo: say +.^methods; say +.^methods.WHAT; # what's with the magic numbers? | 21:49 | |
p6eval | rakudo 760c73: OUTPUT«600» | 21:50 | |
sorear | if by some miracle you DID manage to make p6eval start eating resourses, despite all the resource limits, there are about 20-30 people in #perl6 with sudo access who can push the kill button | ||
21:51
jdv79 joined,
tylerni7 joined
|
|||
jnthn | flussence: You numified a list (and got the number of elemets), then a type object (which for some reason seems to numify to 0) | 21:52 | |
flussence | I've tried other things like .join, but everything I do there returns some number or other... | 21:53 | |
Oh, it's just me | 21:54 | ||
+.^methods is +(.^methods) | |||
(stupid me thinking I could call methods on operators directly) | 21:55 | ||
jnthn | Oh, I didn't realize that's what you were trying to do. :-) | ||
rakudo: say &[+].^methods | |||
p6eval | rakudo 760c73: | ||
..OUTPUT«candidatesnamemultiassumingcandidateswrapcandounwraparitycountACCEPTSnamesignaturereturnsperldoofassumingcallwithStrnewmulticisloglog10sechrandsprintftruncatebytessqrtsinIntasincoshsignasinhabsacosechucceilingunpolarsamecasefloorsubstrasechordRatroundflipsplitmatchacosecacoshwordsN… | |||
dalek | ast: 14f0e95 | KodiB++ | S02-builtin_data_types/instants-and-durations.t: Unfudged a test of now being a term. |
21:57 | |
ast: a41a669 | KodiB++ | S32-temporal/DateTime-Instant-Duration.t: Fixed fouled-up fudge syntax. |
|||
ast: e0d9631 | KodiB++ | S02-builtin_data_types/instants-and-durations.t: [instants-and-durations.t] Use .perl so as not to require great accuracy from .Str. |
22:02 | ||
kudo: aa5896d | KodiB++ | t/spectest.data: [spectest.data] Added tests for Instants and Durations. |
22:06 | ||
kudo: 529f546 | KodiB++ | src/core/ (2 files): Made Instant.Str more awesome per RT #77802. |
|||
kudo: 3ae665f | KodiB++ | src/core/Duration.pm: Removed &infix:<->(Real, Duration). It competed with &infix:<->(Instant, Real). |
|||
22:07
sftp left,
Holy_Cow left
22:10
ruoso left
22:11
HarryS joined,
mikehh left
22:15
HarryS left
22:24
meppl left,
sahadev left,
meppl joined
|
|||
supernovus | Now for some dark magic. Say I have a for loop, like: for @items -> $item is rw but if $item matches a certain rule, I want to delete it from @items. Is this possible? Or do I have to change to a different kind of loop? | 22:34 | |
22:36
pythonian4000 joined
|
|||
sorear | you want to use @items = map { ... }, @items | 22:37 | |
colomon | or @items .= grep { ... } | 22:39 | |
jnthn | Or @items .= map { ... } # maybe | ||
colomon | (obviously can't change $item with a grep, only delete it) | 22:40 | |
22:41
Khisanth joined
|
|||
jnthn -> sleep, EEARLYMEETING | 22:41 | ||
supernovus | I'll look at that. This is a rather unique use-case. I'm parsing a list of elements for different rules. Most of the rules just change the element, but there are some rules like "condition" that actually remove it, and others like "repeat" that replace it with several others. This could be interesting. | 22:42 | |
colomon | tadzik, PerlJam: The rationale for changing the end of series like that is that the new simplification makes the series termination check a smartmatch. | 22:44 | |
dalek | ecza: ff40fab | sorear++ | / (2 files): Restore := to macrohood |
22:51 | |
ecza: a677838 | sorear++ | / (3 files): A crude bvalue escape analysis |
|||
ecza: 5205f98 | sorear++ | / (5 files): Treat Variable as read-only Binding is now implemented by substituting Variable pointers in the appropriate places, most commonly lexpads. |
|||
23:07
cdarroch left
23:11
HarryS joined
23:13
supernovus left
23:16
masonkramer joined,
HarryS left
23:19
patspam1 left
23:22
Italian_Plumber joined
23:27
araujo joined,
araujo left,
araujo joined
23:40
risou joined
23:44
alester left
|