»ö« 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 failed␤FAILED 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«4␤Any()␤»
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: OUTPUT􏿽xAB$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/; OUTPUT􏿽xAB===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 escape␤Parse failed␤FAILED 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 rakudo␤version 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«2␤3␤4␤5␤6␤»
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«60␤0␤» 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