»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
sorear What methods are Stash required to support? 00:04
dalek ecza: ea1fc9e | sorear++ | / (5 files):
Implement .WHO and provide indexing on Stash
00:35
[perlhack] It might rain today.:-) 04:36
TimToady Not here. :) 04:37
[perlhack] :-)Peking was rain.
TimToady They always told us to see Beijing now. ;)
s/see/say/
[perlhack] :-)
TimToady well, it's 北京 either way... 04:38
[perlhack] TimToady, where are you now 04:39
TimToady it never occured to me that 南京 was the other one :)
California
*occurred
[perlhack] :-)American .... 04:40
TimToady California is the 西京 of America :)
[perlhack] O:-)i am wrong. 04:41
What do you want to eat for dinner ? 04:42
TimToady already ate
it's almost bedtime
[perlhack] i am here at noon. 04:44
haha
[perlhack] TimToady, Go to bed early it,i wish you dreams:-) 04:49
TimToady thanks
[perlhack] not at all. 04:50
sorear [perlhack]: hi 06:00
[perlhack] hi sorear 06:01
nice to meet you
nine sorear: just curious. Is something of S17 implemented in Niecza? 06:02
sorear nine: no 06:10
dalek ecza: 7c5619c | sorear++ | lib/ (3 files):
Implement postcircumfix fallback to {at,bind,exists,delete}_{key,pos}; use it for Stash
06:51
nine awwaiid: my topic just got accepted officially :) 07:08
sorear topics? YAPC?
nine sorear: no, my bachelor paper: "Design of concurrency features of the Perl 6 programming language and 07:09
prototype for the Rakudo Perl 6 implementation."
sorear he he he
good luck
nine IOW: working on S17
sorear hint: parrot is not threadsafe
sorear you could probably make a passable prototype using coroutines, and hack the Rakudo signature binder to yield() every 1000 subroutine entries 07:10
nine Yep. Something like that might be a good first step. It actually doesn't have to be real OS level multithreading to be a useful test for the spec 07:12
moritz nine++
sorear nine: I'd like to spend much more time talking about this with you. I think S17 is insane in quite a few places
sorear well, two mostly 07:14
sorear 1. atomic code blocks as currently specified break the "you pay for what you use" rule, since every single Scalar access needs to check if there's a contend {} on the stack 07:17
sorear I'd rather have my $x is txn; but there may be a better way yet 07:17
masak wow! ++nine
sorear 2. the correct (deadlock-free) way to handle asynchronous signals isn't control exceptions, it's starting a thread to handle them
masak is there anything that can be done to a threading model to prepare a lnaguage for better supporting the Actor model? 07:19
nine sorear: well I'm very open for discussion, since I do not know enough about the problem space to have strong opinions anyway :)
sorear: will you be at YAPC::EU?
sorear NO 07:19
No
mberends sorear: if you're still unsure what niecza bits to work on next, could you bump up the priority of calling native libraries (a kind of niecza/Zavolaj facility) ? 07:20
sorear I'm mostly familiar with STM and CSP, not Actors
mberends: *nod* but I'm currently focusing on ::()
mberends :-)
CBro2007 what is the meaning of "binding" in p6? 07:29
rakudo: my @a = 1, 2, 3; my Int $x = 4; @a[0] := $x; $x+=2; say @a[0]; 07:30
p6eval rakudo f63b82: OUTPUT«6␤»
CBro2007 so saying @a[0] := $x ... doesn't bind only the types but it also makes them somehow point to the same value? like pointers 07:31
sorear CBro2007: yes 07:33
it works both ways
CBro2007 sorear: what is this used for?
i mean when would you use such a thing?
sorear creating aliases to values
it's what makes parameter binding work 07:34
sub foo($x is rw) { ... }
foo($y)
it's like $x := $y
CBro2007 k
sorear it's generally useful when you need to call a function or something and use the lvalue multiple times 07:35
CBro2007 but in that instance that is automatically taken care of ... I mean for param binding
sorear my $a := find_hash().{find_key()}; say "old=$a"; $a = 5
without :=, you would need two variables, one for the hash and one for the key, and you'd need to do the hash access twice 07:36
CBro2007 haven't looked much into hashes yet 07:36
CBro2007 but what is the first line doing? 07:37
whats find_hash?
sorear some function
CBro2007 some made up fn
ok
so you are first looking for the hash and then when you find the hash you look for a key?
sorear yes 07:38
CBro2007 and what is $a bound to?
the key
?
sorear the hash element
CBro2007 oh right yeah
i meant the element sorry
ok.
I still don't get why I need 2 vars sorry :( 07:39
sorear my $hash = find_hash(); my $key = find_key(); say "old = $hash{$key}"; $hash{$key} = 5; 07:40
CBro2007 I mean if you did "find_hash().{find_key()}" shouldn't that just return an element
sorear see, two vars
nine CBro2007: no it returns the value. But you cannot assign to that
CBro2007: it's just the same as in Perl 5
sorear niecza: my %hash = (a => 9); sub find_hash { %hash }; sub find_key { "a" }; my $elt = find_hash().{find_key()}; say "old = $elt"; $elt = 5; say %hash.perl 07:41
p6eval niecza v7-41-g7c5619c: OUTPUT«old = 9␤{"a" => 9}.hash␤»
sorear see, it doesn't work 07:42
using = makes a copy
niecza: my %hash = (a => 9); sub find_hash { %hash }; sub find_key { "a" }; my $elt := find_hash().{find_key()}; say "old = $elt"; $elt = 5; say %hash.perl
:= makes it work
p6eval niecza v7-41-g7c5619c: OUTPUT«old = 9␤{"a" => 5}.hash␤»
CBro2007 ok gotcha now
I had forgotten that your last statement of $a = 5, actually was now going to modify the hash element 07:43
hmm interesting :)
sorear CBro2007: when you first came in here you were talking about a research project involving Perl 6. 07:44
CBro2007: I haven't yet gotten a chance to ask, but I'm curious.
CBro2007 sorear: nah its not about p6.. I was wondering if I could use p6 for it
:)
sorear What is the project, if I may? 07:45
CBro2007 so for the project I just wanted to make sure that p6 would work, but I guess I will have to stick with p5 for now and if time permits also write the same things in p6 (if possible) 07:45
its a geo application - something like google maps - but more a search engine for spatial objects. 07:46
also looking at how best to index spatio-temporal data 07:47
so I was thinking I need some sorta OO ... but at the same time it will be lots of prototyping and having to do and redo stuff.. so I don't want to write everything in C 07:48
but if some bits are too slow then I can write those things in C
CBro2007 but seems like p6 might not be a 100% useful for that at the moment... but I like the syntax 07:49
sorear: did I answer your qn?
sorear yes
CBro2007 cool ... so any thoughts/comments? 07:50
you reckon its worth trying it out in p6?
I mean the advantage I see is that I can choose my language as long as I can fix stuff when I hit a dead end ... wouldn't have this choice for a company project I guess :) 07:51
sorear If you want my personal opinion - I'd rather stick with p5 for this, because existing p6 compilers are *much* slower than the p5 compiler 07:52
mberends CBro2007: I think p6 might be convenient for rapid prototyping with small quantities of data, but memory consumption and speed would be bad when it comes to production quantities of geodata. 07:53
sorear niecza takes 40 seconds to parse 6,000 lines of code; perl 5 can parse 100,000 lines in 2 seconds 07:53
CBro2007 yeh I noticed that the p6 compilers are a bit slow atm 07:53
mberends: yeah agreed... thats why I am thinking I still want to keep p5 as the main project 07:54
sorear (I don't have a current Rakudo figure; it was 300 a few months ago)
CBro2007 ok
Its just that the other guys in my group are mostly Java heads... and I cannot be bothered with all the java OO
was thinking of doing this stuff in C++ -- but then perl is so much quicker to code in :) 07:55
mberends CBro2007: also, p5 has a mature though inconvenient way of binding to almost any native library, regardless of its source language.
sorear Yes.
CBro2007 some people suggested getting into Python... but cannot be arsed learning a new lang
nine CBro2007: don't bother :)
CBro2007 mberends: you mean the P5 FFI yeah?
Su-Shee use p5 with moose and you're halfway there in p6, at least conceptionally. 07:56
sorear Personally I would probably start with p5 or haskell
CBro2007 Su-Shee: yeah I got to look into Moose
moritz conceptionally disagrees with Su-Shee
sorear you need to remember Brooks' law(?): Plan to throw one away; you will, anyhow 07:56
CBro2007 sorear: I have done haskell before.. but didn't get into Monads
sorear probability that you will completely rewrite your project between now and release: >> 0.99 07:57
Su-Shee moritz: why? doesn't p6 have roles anymore etc? ;)
mberends CBro2007: no, for native code I mean XS: perldoc.perl.org/perlxs.html 07:57
sorear so don't worry about releasability when starting
CBro2007 I mean I have always used p5 for quick and dirty scripts ... sometime in the past for bigger projects.. so don't think I need to learn ONE more scipring lang
mberends: ah ok XS
moritz Su-Shee: no, IMHO p5 + Moose gets you about 5% there, not 50% :-) 07:58
sorear CBro2007: (monads) don't try to understand them, just use them
nine CBro2007: CBro2007: if you need to call C code, try Inline::C. Should be much easier to learn than XS 07:59
CBro2007 sorear: hehe... yeah the kinda stuff we did in haskell was ok.. but I didn't work on any practical examples really. Just things like walking a tree, playing with lists etc
nine: ok
sorear CBro2007: "we"?
CBro2007 but do you guys think its hard to maintain a p5 and p6 equivalent at the same time? 08:00
sorear: sorry "we" being the students in the course on FP :)
sorear ah.
sorear has not figured out how to get inside the minds of non-selftaught programmerws 08:02
Su-Shee CBro2007: why would that be hard?
sorear (I mean I can't relate to their experiences and modes of thinking) 08:03
CBro2007 Su-Shee: just thinking it might be time consuming to do it twice ... I mean my main idea behind going with p5 or p6 is to be able to prototype stuff quicker than the java dudes :)
mberends CBro2007: I think maintaining p5 and p6 side by side will be extra work, though not as much as double the effort. The existing p5 solutions often help to design the p6 solutions.
Su-Shee you're quick do to stuff with tools you know really well.
sorear CBro2007: is your primary area of study software, geography, or something else? 08:04
CBro2007 sorear: primary is s/w yeah ... not geography
moritz CBro2007: don't listen to them, coding in Perl 6 is fun, so do it. When it stops being fun, you can still migrate away :-)
sorear CBro2007: is this some kind of contest?
CBro2007 moritz: spoken like a true p6 evangelist :) 08:05
moritz :-)
CBro2007 I think I agree to what some of the guys have said ... p6 compilers are much slower...so I still want to produce stuff with "decent speed"
CBro2007 sorear: sorry .. you mean the project? 08:06
nine CBro2007: I guess for a prototype performance would not be important
sorear CBro2007: yes
CBro2007 nine: it would if you want to produce results and publish them :)
sorear CBro2007: niecza's runtime speed is quite tolerable. I'd estimate 1/2 - 1/10 as fast as Perl 5 at most primitives
CBro2007 sorear: nah its just research for writing papers 08:07
sorear: ok
sorear CBro2007: I'm wondering why you want to work faster than your project-mates. Is this a non-cooperative task?
moritz maybe just intrinsic motivation? :-)
CBro2007 yeah we are not working on the exact same problem
nah its just that I haven't started yet... but I have seen some of the other guys work and they are really good with Java 08:08
In my experience, java is good to read, but its like a million lines with too many classes and methods etc etc.
don't think we will be "sharing" lots of code 08:09
moritz Java is just very verbose.
sorear where Java really shines is machine readability
CBro2007 moritz: i agree
Su-Shee use smalltalk then. you'd get the whole traits/roles concept along.
sorear it's designed poorly for human usage, but Java refactoring tools are second to not much 08:10
CBro2007 having recently gotten into things like haskell.. I notice that p6 borrows a lot of these concepts and so does python ... so it would be more fun coding
sorear www.wall.org/~larry/pm.html
moritz yes, Perl 6 borrows from every language that has some bright ideas :-) 08:11
CBro2007 the only thing I noticed was that my fellow students who were into Java were able to build some nice GUIs
moritz: and thats how it should be :)
moritz $ ./perl6 -e 'say ::("Int")'
Int()
\o/
$ ./perl6 -e 'my $x = 3; say ::(q[$x])' 08:13
3
dalek kudo/nom-indirect-name-lookup: e923236 | moritz++ | src/Perl6/Actions.pm:
unnegate a condition, because it is easier to read that way. No functional change
kudo/nom-indirect-name-lookup: d724066 | moritz++ | src/Perl6/Actions.pm:
get the very simplest case of indirect name lookups via ::() working
sorear looks like I blew my chance :) 08:14
beekor haay moritz, i'm all new to this, but was reading S32 Containers and looking at tests indicated and the last several like minmax, any, all, one, none, comb have no test listed
so my Q is, if i wanted to write some tests, would that be a good place to start, and is that updated there?
i was gonna grep the dir for those and see if they had tests somewhere. 08:15
moritz beekor: welcome to #perl6
beekor but havent gotten there yet.
ha hey thanks.
sorear welcome, beekor.
moritz beekor: I'm pretty sure that some of them already have tests, but they are not properly crosslinked yet
beekor okay.
moritz beekor: for example there's t/spec/S32-str/comb.t 08:16
beekor: adding a "smartlink" into that file would be great
beekor hm! gotcha.
moritz beekor: the documents at perlcabal.org/syn/ are updated every hour or so with new crosslinks 08:16
beekor: do you have a github ID? 08:17
beekor i do not. i've probably should.
ha. but yeah.
moritz beekor: I know of something else that needs testing, and is probably not hard 08:19
beekor i am now: beekor
yassah?
moritz hugme: add beekor to perl6
hugme hugs beekor. Welcome to the perl6 github organization
moritz now you have commit access to the 'roast' repo (and a few others)
beekor i seee that. huh! 08:20
okay.
moritz beekor: regex matches produce Match objects, which should be false in boolean context if the match failed
rakudo: 'a' ~~ /a/; say $/.Bool
p6eval rakudo f63b82: OUTPUT«Bool::True␤»
moritz rakudo: 'a' ~~ /b/; say $/.Bool
p6eval rakudo f63b82: OUTPUT«Bool::False␤»
moritz we don't have good tests for that
we've had bugs in two different compilers where Match objects where always True 08:21
beekor gotcha.
moritz benabik++ noted that lack of tests yesterday
(and I contradicted, but didn't found the tests that I thought existed)
beekor okay. let me see what i can figure out. 08:22
i'll most probably be back with questions. anyone else in particular i should ask? or just The Channel ? 08:23
i guess that probably depends on my question a bit. ha.
i will keep an eye out for benabik also. 08:25
moritz beekor: just ask here
beekor k.
moritz beekor: I can answer most questions about the test suite, but I'm not always available
it might make sense to start a new test file for testing properties of the Match object 08:26
beekor yeah gotcha. i'm never in too huge of a hurry.
sorear look at S04 08:27
S05
beekor k.
sorear make a new file in S05-match/, I think 08:28
moritz +1
niecza: 'a' ~~ /a/; say $/
p6eval niecza v7-41-g7c5619c: OUTPUT«a␤»
moritz niecza: 'a' ~~ /b/; say $/.defined
p6eval niecza v7-41-g7c5619c: OUTPUT«Bool::False␤»
sorear perl6: 'a' ~~ /b/; say $/.perl 08:29
moritz niecza: 'a' ~~ /b/; say $/ === Match
p6eval rakudo f63b82: OUTPUT«Match.new(␤ from => 1,␤ orig => "a",␤ to => -3,␤)␤»
..niecza v7-41-g7c5619c: OUTPUT«Match␤»
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HANDLE>' trapped b…
niecza v7-41-g7c5619c: OUTPUT«Bool::True␤»
moritz I think it makes sense to return the Match type object for a failed match 08:30
pmichaud: any opinions?
sorear nom: 'a' ~~ /b/; say $/.perl 08:34
p6eval nom: OUTPUT«␤»
sorear nom: 'a' ~~ /b/; say $/.defined
p6eval nom: OUTPUT«Bool::True␤»
sorear nom: 'a' ~~ /b/; say $/.to
p6eval nom: OUTPUT«-3␤»
moritz just because cursors use $!to < $!from to indicate false matches internally doesn't mean we should propagate that to the user 08:35
dalek kudo/nom-indirect-name-lookup: b5cd9ac | moritz++ | src/core/operators.pm:
deal gracefully with NYI case of ::() lookups
08:40
beekor okay, i'm gonna save all this and reread. i'm headed to bed. 08:47
is there a singlefile of all the synopsis's combined ?
i'd have to really think whether i'd want to write me something to parse and get and append it all into one 08:49
moritz beekor: not that I know of. People usually just clone the perl6/specs repo on github, and read the docs with perldoc if they want if offlien
beekor or just spend the time printing it at all.
okay. that just looked like a good source of straight info.
i was reading the perl6 book that's also on github. that has been pleasant so far.
moritz \o/ 08:50
beekor hee haa !
ooh big rain sweeping in here. just got rough out.
moritz guess who is one of the authors...
beekor yeah i just saw. i went to look for its url. 08:51
i think i also saw something p6 written by you from like '03? 08:53
maybe twasnt you. but i was reading, and wondering how relevant all the grammar still was.
moritz that's highly unlikly, since I first started with Perl 6 in 2006
beekor okay, well it was another common name i oft see. 08:54
ha.
moritz though of course somebody could have erased my memory in the mean time... 08:54
beekor you may have had a traumatic 6 incident.
best to maybe not think of such things.
okay. i am off to bed. 08:55
beekor pleasant to chat with ya'll ! 08:55
moritz good night beekor
dalek kudo/nom: fcd142d | moritz++ | src/ (3 files):
first attempt at indirect name loookup.

Does not work yet, method term:sym<name> in Actions.pm needs to learn not to touch indirect name lookups first
09:00
kudo/nom: e923236 | moritz++ | src/Perl6/Actions.pm:
unnegate a condition, because it is easier to read that way. No functional change
kudo/nom: d724066 | moritz++ | src/Perl6/Actions.pm:
get the very simplest case of indirect name lookups via ::() working
kudo/nom: b5cd9ac | moritz++ | src/core/operators.pm:
deal gracefully with NYI case of ::() lookups
kudo/nom: 0f7be02 | moritz++ | src/ (3 files):
Merge branch 'nom-indirect-name-lookup' into nom
moritz evalbot rebuild nom 09:07
p6eval OK (started asyncronously)
BinGOs did you mean 'asynchronously' 09:08
sorear yes. not worth fixing. 09:09
dalek albot: 0b6e35a | moritz++ | evalbot.pl:
fix typo, BinGOs++
09:10
moritz nom: say ::("List").new(1, 2).perl
p6eval nom: OUTPUT«Rebuild in progress␤»
moritz nom: say ::("List").new(1, 2).perl 09:17
p6eval nom: OUTPUT«(1, 2).list␤»
moritz \o/
sorear hello [perlhack] 09:21
[perlhack] hello sorear.
what are you doing ?
sorear writing the OUTER case of indexing for lexical pseudopackages 09:22
perlhack :-)that's impresive.
phenny perlhack: 15 Jul 06:34Z <mberends> tell perlhack the following British reference estimates that a vocabulary of 1500 English words is a practical minimum. www.bbc.co.uk/news/14130942
perlhack very thanks meberend and phenny 09:23
sorear phenny is a bt
bot
moritz no need to be impolite to a bot :-) 09:24
perlhack i this year can learned 4300 words 09:24
:-)haha we used to it 09:26
moritz testyourvocab.com/ # just found this a few days ago
it's a nice test, but it shows the same percentiles for native speakers and foreigners, which is a bit useless 09:27
perlhack thanks
i am reading 09:28
moritz it estimated that I know about 17k English words, which would be very low for a native speaker
perlhack :-)Wa ..... 09:30
powerful..
moritz if you learn 4300 words a year, you will be there in less than 5 years :-) 09:33
sorear what? moritz isn't native?!
perlhack :-D
moritz sorear: I know I'm breaking a convention here, having an all lower-case handle and not being native :-) 09:34
perlhack Chinese people will use 4300 words
sorear words mostly don't matter 09:35
correct use of tenses and moods is the true marker 09:36
perlhack :-)how many would you ?
17000 words ?
sorear "I will use 17000 words" does not really make sense 09:37
if I use an average of 7 words per minute for the next 90 years, then I will use 300,000,000 words 09:38
someone who will use 17000 words is either on their deathbed or amazingly laconic 09:39
perlhack wa ....
perlhack powerful .... 09:39
perlhack i want to learn 09:40
moritz sorear: I think the question was more about the number of distinct words, not overall numbers
sorear still the use of the future tense is... odd 09:41
sorear my 2-month-old cousin will probably use about as many distinct words as I will 09:41
perlhack I wish i were american. 09:43
sorear I wish I weren't. 09:44
huf there are worse things to be
perlhack: are you unamerican then? a pinko commie agitator? 09:45
dalek ecza: ef5768b | sorear++ | lib/Kernel.cs:
First draft of StashCursor mechanism
09:48
sorear out 09:54
mberends huf: many a true word spoken in jest, perhaps unintentionally :P perlhack is Chinese. 09:58
CBro2007 are junctions used a lot in p6? 09:59
perlhack huf,haha i am a Chinese person.
:-)
huf :)
CBro2007 I just see the use of "|" (Any) 10:00
perlhack :-)
moritz CBro2007: they aren't use too much in good code 10:02
CBro2007 ok
moritz CBro2007: mostly just in conditions - if you pass them around through long code paths, things can get a bit fragile
CBro2007 ok but I can do without yeah? 10:03
just trying to understand what the advantage of using junctions would be
moritz mostly just that you can write things shorter
mberends CBro2007: people have too-high expectations that junctions might have set-like properties, and they don't.
moritz if $i == 0 || $i == 1 { ... } 10:04
can be replaced with
moritz if $i == 0|1 { ... } 10:04
CBro2007 hm ok 10:04
moritz it's also useful for things like my @filter = @raw.grep: Str & *.defined & /^text/; 10:05
CBro2007 ok 10:07
CBro2007 whats the latest perl6 reference for all its functions and operators etc? 10:09
moritz: you said perl6.org was the most up to date site yeah?
moritz yes
CBro2007 k 10:11
moritz .u EURO 10:13
phenny U+20AC EURO SIGN (€)
CBro2007 moritz: when I say something like "say @list;" ... I just get the elements listed out with no spaces or commas between them. Is that normal? 10:21
or should I be writing it as something else? 10:22
moritz CBro2007: by newest spec, you'll get spaces between the list items. rakudo hasn't caught up yet (except in the 'nom' branch) 10:22
the change is fairly recent, about 2 weeks ago
CBro2007 hmm .. is there something I could do in the meanwhile? just to see the output? 10:23
moritz nom: my @a = 1, 2, 3; say @a
p6eval nom: OUTPUT«1 2 3␤»
moritz you mean with spaces?
CBro2007 yeah or with commads
commas
moritz rakudo: my @a = 1, 2, 3; @a.join(', ')
p6eval rakudo f63b82: ( no output )
moritz rakudo: my @a = 1, 2, 3; say @a.join(', ')
p6eval rakudo f63b82: OUTPUT«1, 2, 3␤»
CBro2007 right
moritz rakudo: my @a = 1, 2, 3; say ~@a # shorter, but not quite so pretty 10:24
p6eval rakudo f63b82: OUTPUT«1 2 3␤»
moritz rakudo: my @a = 1, 2, 3; say @a.perl; #quite informative
p6eval rakudo f63b82: OUTPUT«[1, 2, 3]␤»
CBro2007 yep
man rakudo is super slow in execution though 10:25
moritz you can even get the variable names in the debug output with a little trick:
CBro2007 so i guess the priority is to get more modules written and then work on improving its performance yeah?
moritz rakudo: my @a = 1, 2, 3; my $x = 3; say (:@a, :$x).perl
p6eval rakudo f63b82: OUTPUT«("a" => [1, 2, 3], "x" => 3)␤» 10:26
moritz CBro2007: any help in that direction would be appreciated 10:26
CBro2007 the (a,b) syntax is a Pair yeah?
moritz :@a is what constructs the pair
it's the same as a => @a
the , makes a list 10:27
and I just put parens around it so that I can call a method on the list
CBro2007 moritz: in which direction? performance or modules?
moritz CBro2007: both :-)
CBro2007: performance is not easy though, it requires quite some familarity with parrot
CBro2007 yeah true
moritz good news is that the nom branch is quite a bit faster 10:28
perlgeek.de/blog-en/perl-6/how-fast....writeback
CBro2007 was wondering if I have to complete reading the article before I can try writing some p5 module to p6
coz now I am looking at laziness - like gather and take and infinite lists
don't know if they are used so often 10:29
esp infinite lists
is it possible to make a sub lazy? 10:30
arnsholt You can always return a lazy list, for example 10:37
CBro2007 k 10:42
smash hello everyone 10:43
CBro2007 moritz: i like your examples for the MAIN sub :) "--bad_lang PHP " 10:45
CBro2007 moritz: you around? 10:57
just wondering with the list of modules in --> github.com/perl6/ecosystem/wiki/Mo...write-port
what was the "Crypto" package? was there any crypto package from CPAN that you guys had in mind? 10:58
CBro2007 anyone? :) 11:00
moritz Crypt::CBC is "the" cryptography module on CPAN 11:29
not sure what the author(s) of that page meant
nine CBro2007: seems like that page vanished? 11:45
CBro2007 nine: which page?
moritz you might need to replace %3A with # or so 11:46
CBro2007 ah k
CBro2007 moritz: you said --> "not sure what the author(s) of that page meant"? 11:47
didn't follow you
moritz with "Crypto"
CBro2007 ok 11:48
nine Ah, github.com/perl6/ecosystem/wiki/Mo...ed-Modules seems to be the correct URL 11:49
Su-Shee I wrote "Crypto" and I meant stuff like sha, gpg, hashsum stuff, ssl and so on. 12:08
moritz nom: say ::('X').WHO<Base> 12:11
p6eval nom: OUTPUT«Base()␤»
moritz \o/
nom: class A::B { }; say ::('A').WHO<B> 12:12
p6eval nom: OUTPUT«Any()␤»
moritz nom: class A::B { }; say ::('A').WHO
p6eval nom: OUTPUT«().hash␤»
moritz seems that the way the thing is declared matters 12:13
packages A { class B { } } vs. class A::B
moritz confluence.jetbrains.net/display/Ko...lk-through interesting new language 12:32
statically typed
they seem to get some syntax aspect right that new languages often screw up, IMHO
for example they have keywords for declataions (both functions and variables) 12:33
just the optional semicolon looks dangerous
moritz news.ycombinator.com/item?id=2784086 a bit of analysis 12:49
dalek ok: 0e73eb7 | duff++ | book-ideas:
add a small idea
13:34
moritz PerlJam: I thought about that too. But first I wanted to implement and spec them :-) 13:35
PerlJam moritz: then think of it as added pressure to do so ;) 13:36
Jackneill perl6: print: . 13:37
p6eval rakudo f63b82: OUTPUT«===SORRY!===␤Confused at line 22, near "print: ."␤»
..niecza v7-42-gef5768b: OUTPUT«===SORRY!===␤␤Bogus statement at /tmp/pSaoCvADvg line 1:␤------> print: ⏏.␤␤Parse failed␤␤»
..pugs: OUTPUT«*** ␤ Unexpected end of input␤ expecting ".", "\187", ">>", "=", "^", operator name, qualified identifier, variable name, "...", "--", "++", "i", array subscript, hash subscript or code subscript␤ at /tmp/YRctrSIpD2 line 1, column 9␤»
PerlJam maybe we should setup a site where people can vote on the importance of the book ideas. :-)
[Coke] hurls www.boingboing.net/2011/07/19/tom-t...ug-58.html for... moritz? masak? 13:39
flussence rakudo: print ord("\187") 13:40
p6eval rakudo f63b82: OUTPUT«===SORRY!===␤Unrecognized backslash sequence: '\1' at line 22, near "87\")"␤» 13:41
PerlJam [Coke]: heh!
flussence erm.
rakudo: print :8(187)
p6eval rakudo f63b82: OUTPUT«Invalid character (8)! Please try again :) ␤ in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp␤»
flussence whaa
rakudo: print 0o187
p6eval rakudo f63b82: OUTPUT«===SORRY!===␤Confused at line 22, near "print 0o18"␤»
flussence :(
oh
flussence smacks self in head 13:42
moritz flussence: :8($string) tries to interpret $string as an octal value
but those can only go up to 7
flussence I saw \[:digit:]{3} and thought "that looks octal"
...wait... 13:43
pugs: say ord("\187")
p6eval pugs: OUTPUT«pugs: Error: Invalid escape sequence \187; write as decimal \c187 or octal \o187 instead␤»
flussence .u 187
phenny flussence: Sorry, no results for '187'.
moritz flussence: what do you want to do? 13:45
flussence wondering what that "\187" pugs was expecting is 13:45
PerlJam probably a guillemet 13:49
moritz pugs: say chr(187) 13:50
p6eval pugs: OUTPUT«Â»␤»
itz version 2011.04-1240-g0f7be02 <=- is that "nom"? 14:18
pmichaud good morning, #perl6
moritz good am, pm 14:19
nom: say ::('Int')
p6eval nom: OUTPUT«Int()␤»
moritz itz: yes
itz ty
pmichaud moritz: \o/ 14:20
moritz git show 2011.04-1240-g0f7be02 even tells you in the commit message that it's nom :-) (ok, it could be lying) 14:20
pmichaud: and I think I know how to handle the A::B case, but it won't work in all cases right now
nom: say ::('X').WHO<Base> # looks up X::Base 14:21
p6eval nom: OUTPUT«Base()␤»
moritz but
nom: class A::B { }; say ::('A').WHO<B>
p6eval nom: OUTPUT«Any()␤»
moritz doesn't work yet - but I think it's a bug in the A::B declaration, not a "real" limitation
pmichaud it's a bug in the A::B decl, yes. 14:22
moritz anyway, adding ::() was fun 14:26
moritz nom: $Foo::('x')::Bar 14:28
p6eval nom: ( no output )
moritz nom: say $Foo::('x')::Bar
p6eval nom: OUTPUT«Any()␤»
moritz I have the suspicion that this is misparsed
but I'm not entirely sure
anyway, I shouldn't distract pmichaud++ from working on the regex engine :-) 14:29
itz nom: say $*VM<config> 14:30
p6eval nom: OUTPUT«Method 'at_key' not found for invocant of class 'Failure'␤current instr.: 'postcircumfix:<{ }>' pc 466539 (src/gen/CORE.setting.pir:122974) (src/gen/CORE.setting:600)␤»
moritz nom: say X.WHO.WHAT 14:38
p6eval nom: OUTPUT«Stash()␤»
moritz nom: say X.WHO.exists('Base') 14:39
p6eval nom: OUTPUT«Bool::True␤»
JimmyZ rakudo: 'eval'().say 14:40
p6eval rakudo f63b82: OUTPUT«invoke() not implemented in class 'Perl6Str'␤ in main program body at line 22:/tmp/Pra3FRY1Ad␤»
JimmyZ rakudo: 'ls'.'eval'().say
p6eval rakudo f63b82: ( no output )
moritz nom: say nqp::split('::', 'foo::bar::baz').perl 14:48
p6eval nom: OUTPUT«Method 'perl' not found for invocant of class 'ResizableStringArray'␤current instr.: '_block1002' pc 89 ((file unknown):17848077) (/tmp/M3ehS54sbF:1)␤»
moritz oh, it's not an RPA 14:49
so it's not type-mapped
CBro2007 guys what is the "but" operator doing here? my $x = $today but Day::Tue; 15:17
earlier on ... enum Day ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'); 15:18
I don't quite get what its doing ...
TimToady do you know about mixins? 15:24
anyway, this is discussed in S12:1869 15:28
CBro2007 TimToady: no I don't know mixins 15:29
is that a p5 concept too? or just p6?
TimToady Moose does it in p5
it's basically taking an object and putting it into a new subclass with new functionality 15:30
where the old class is now the parent class
do you know how to follow that S12 link I gave you? 15:31
it's highlighted as a link on irclog.perlgeek.de/perl6/2011-07-20#i_4142422
CBro2007 TimToady: do you recommend reading the "Using Perl6" book? 15:34
CBro2007 or is that a bit out of date? 15:34
TimToady it's pretty up-to-date
as far as I know, anyway; haven't read it myself 15:35
CBro2007 okie
TimToady learned Perl 6 a different way...
JimmyZ recommends reading SYN and testcase
CBro2007 TimToady: how? 15:36
CBro2007 TimToady: I have done perl 5 , but have had a gap of a few years .. so missed out on things like Moose 15:37
I am currently reading the perl 5 to 6 article moritz wrote
gives me a good idea as to what is possible in p6
someone recommended reading "Modern Perl" for p5 15:38
TimToady: I thought you where gonna tell me your trick :) 15:40
TimToady it's easy to learn a language when you design it yourself, for some definition of "easy" that doesn't seem to include much "ease" 15:41
CBro2007 hm
dalek kudo/nom: 2357ca6 | moritz++ | src/core/Str.pm:
implement Str.split(Regex, :$all) -- no limit yet
15:54
TimToady
.oO(the possibilities are limitless...)
15:55
CBro2007 TimToady: can you refer me to the latest documentation on all functions.. for example: I was wondering what this was --> $file.get.words; 15:56
so I want to see all methods that belong to $file object
moritz $file is of type IO
CBro2007 yep I just want a list that I can refer to while coding
moritz so you have to look in S32/IO
CBro2007 so is there no site that shows all the built-in functions that are available? 15:57
TimToady rakudo: say ~IO.^methods 15:57
p6eval rakudo f63b82: OUTPUT«close eof get ins lines open print printf say read write getc slurp t d e f s l z created modified accessed changed move chmod copy link autoflush path stat Numeric Real Int Rat Num abs conjugate exp log log10 sqrt roots to-radians from-radians floor ceiling round …
moritz say ~IO.^methods(:local)
rakudo: say ~IO.^methods(:local)
p6eval rakudo f63b82: OUTPUT«close eof get ins lines open print printf say read write getc slurp t d e f s l z created modified accessed changed move chmod copy link autoflush path stat␤»
TimToady nom: say IO.^methods 15:58
p6eval nom: OUTPUT«open close eof get lines print say <anon> <anon> eager elems end classify infinite flat hash list pick roll reverse sort values Array grep join map min postcircumfix:<[ ]> at_pos postcircumfix:<{ }> ACCEPTS WHERE WHICH Bool defined new CREATE bless BUILDALL Numeric Str Strin…
CBro2007 but I want to see what each of these mean :)
TimToady ah, well, you didn't ask that :) 15:58
CBro2007 sorry my bad :)
TimToady but moritz++ already mentioned S32/IO 15:59
moritz it's the closest we have right now
CBro2007 I have no idea what S32 means :)
TimToady see perlcabal.org/syn/
and look for IO
CBro2007 thanks 16:01
TimToady moritz: I note that S32 doesn't link usefully in the irclog 16:01
CBro2007: note that IO is still a draft, and is a bit under/over-engineered in spots 16:02
CBro2007 ah well.. its the best for now :)
TimToady and in some cases just wrong
CBro2007 something is better than nothing
TimToady troo
TimToady except when it isn't :) 16:02
CBro2007 hehe
moritz TimToady: mental note taken
CBro2007 am just going through that book
looking at some sample code 16:03
dalek kudo/nom: 69fe226 | moritz++ | src/core/operators.pm:
implement indirect name lookup of composed names ::("X::Base")
16:03
moritz evalbot rebuild nom 16:07
p6eval OK (started asyncronously)
moritz evalbot control restart
it seems that in some cases the internet connection of p6eval is glacially slow 16:10
moritz especially when it comes to opening new connections 16:10
decommute&
ashleydev it'd be cool to be able to do `say IO.^methods_with_docs` or `say IO.^man` and get the pod with the methods and such 16:15
pmichaud moritz++ # excellent indirect names implementation 16:24
TimToady ashleydev: eventually IO.WHY should get to that info 16:31
ashleydev nice
TimToady maybe accessible via %=POD as well, somehow
benabik wonders what .WHY.WHY.WHY would document.
pmichaud it would show how Perl is currently being used by 4-year-olds. 16:32
taken to its logical extension, .WHY.WHY.WHY.WHY.... ultimately returns "Because Larry said so." 16:33
benabik pmichaud++
lichtkind thou__: 2 more projects ready i come nearer every day :) 16:52
[Coke] I haz a google problem. ".WHY" returns results for "WHY". Help, perl-six-kenobi. 16:59
TimToady You don't have a google problem; google has a you problem. :) 17:04
flussence er... should nom be using 1.6GB RAM on S03-sequence/basic.t? 17:08
pmichaud flussence: I don't know. I can't really say without knowing how much memory other programs run in your environment. (more) 17:10
perhaps comment out tests and see if there's any one test that pushes up the memory usage
pmichaud what are you using to measure memory usage? 17:11
flussence htop, a full memory usage bar and a process that's been stuck at 100% cpu for 2 hours :) 17:12
diakopter ooo htop 17:12
flussence aha 17:14
it's running 63 on that machine
it's marked SKIP on my other one...
pmichaud nom: say &[+].count 17:19
p6eval nom: OUTPUT«1␤»
pmichaud ...wonder what's happening there.
flussence rakudo: say [+] () 17:20
p6eval rakudo f63b82: OUTPUT«0␤»
flussence that?
pmichaud nom: say &infix:<+>.count
p6eval nom: OUTPUT«1␤»
moritz the &[+] version should only return arity 2 candidates 17:21
pmichaud nom: sub f(|$) { * }; say &f.count 17:22
p6eval nom: OUTPUT«1␤»
pmichaud aha.
flussence: test #68 in S03-sequence/basic.t 17:23
infinite loops, currently
pmichaud > say &[+].count 17:32
2
flussence huh, this isn't right... 17:32
my test run gets stuck after "ok 62 - alternating False and True is always Bool"
the next one is line 104 17:33
pmichaud what does the .rakudo file look like? 17:33
and is this 'nom' or 'master'? 17:34
flussence nom
ah
it doesn't seem to be making a .rakudo file...
and t/spec is on the wrong branch... /facepalm
dalek ast: df522ec | pmichaud++ | S03-sequence/basic.t:
Unfudge a passing test.
17:35
kudo/nom: e2279de | pmichaud++ | src/core/Numeric.pm:
Fix .count for various numeric operators. flussence++ .
17:36
uvtc Noticed that the recent "Upcoming Rakudo releases" post (at rakudo.org) did not appear at planetsix. Seems like it ought've to ... ought to have. 17:43
moritz nom: say 'abc' ~~ m:g/./ 18:06
p6eval nom: OUTPUT«Null PMC access in clone()␤current instr.: 'nqp;QRegex;P6Regex;Grammar;nibbler' pc 34391 (src/stage2/QRegex.pir:11337) (src/stage2/QRegex.nqp:771)␤»
[Coke] uvtc - checking planetsix source... 18:11
get this! rakudo.org's blog is not in sixplanet.
Shall I rectify that?
sorear good * #perl6 18:12
[Coke] (added) 18:13
uvtc++
give it an hour or so to catchup. 18:14
OHEY. I still can't build rakudo/nom on windows 7. 18:18
so, erum... help? 18:24
PerlJam [Coke]: what dev environment do you use on windows 7? 18:26
[Coke] gitbash for git; visual studio for compiling, strawberry perl. 18:28
so, I build parrot, test, install, fine. build nqp, install, fine. config rakudo/nom, fine. build, BOOM 18:29
(complains that the version of nom is too old, but not at configure time, only at build time.
PerlJam [Coke]: is this with --gen-parrot/--gen-nqp or are they built separately? 18:31
[Coke] built separately - I can't build them together at the moment, because git-bash and visual command prompt are separate shells. 18:32
PerlJam [Coke]: do you have an install dir in rakudo though? 18:33
[Coke] no
I build and install parrot, build and install nqp.
PerlJam aye, I mean even accidentally have that dir 18:34
the reason I ask is that I seem to recall that, at build time, rakudo/install/bin/nqp will be given precedence over an actual installed-somewhere-else-but-still-in-your-path nqp 18:36
[Coke] I'll double check. in the middle of rebuilding nom on new parrot.
PerlJam oh, but you said it complains that nom is too old? that's odd. 18:37
PerlJam read "nqp" instead of "nom" 18:38
in any case, I've had trouble with build-time rakudo using the wrong nqp in the past, so it may still be problematic 18:40
[Coke] no install directory.
ok, just rebuilt parrot(latest) and nqp(latest)
[Coke] gist.github.com/1095608 18:44
[Coke] This is nqp version built on parrot 3.6.0 revision 18:49
... So, the problem is probably that nqp requires the git executable during the build. 18:50
PerlJam sounds perfectly reasonable.
[Coke] I'll have to reinstall git bash to make that work, I suppose. 18:51
[Coke] In the meantime, I'll just comment that part of the check-versions script out. 18:52
PerlJam [Coke]: Hmm. Looking at the code, it doesn't look like it uses git at all to me. 18:55
[Coke] how does nqp get its version id? 18:56
PerlJam it's baked-in when built
[Coke] ... and how does the /build/ get it? 18:57
PerlJam what does "nqp --show-config | grep nqp::version" (from the command line) show? 18:58
[Coke] nqp::version= 18:59
... it's using git --describe in tools/build/gen-version.pl 19:00
PerlJam maybe the build should do something different (carp?) when it can't obtain the version
[Coke] so, *boom*. not everyone has git executables in their path, esp. on windows.
(imagine a windows user with tortoiseGit, e.g.)
PerlJam [Coke]: devs should have git in their paths :) 19:01
[Coke] this isn't a "dev" thing, it's a "builder" thing.
crud, meeting. 19:02
moritz pmichaud: ping 19:05
moritz nom: say reverse(1, 2) 19:09
p6eval nom: OUTPUT«Could not find sub &reverse␤current instr.: '_block1002' pc 80 ((file unknown):82812394) (/tmp/UgBpbSNJSv:1)␤»
moritz nom: say 42 gcd 22 19:19
p6eval nom: OUTPUT«2␤»
dalek kudo/nom: 823f449 | moritz++ | / (3 files):
implement &floor and &reverse, add more test files
19:32
dalek ast: 3d679db | moritz++ | / (3 files):
some rakudo un/refudging, simplify 99problems-31-to-40.t
19:39
[Coke] kicks off a smolder run for parrot on win7. 20:42
er, for rakudo
dalek ecs: 4dbf083 | moritz++ | S32-setting-library/Str.pod:
[S32/Str] fix braino
20:54
dalek kudo/nom: e6f6b27 | moritz++ | src/core/ (2 files):
basic Str.comb implementation
21:01
[Coke] hurm. "make smoke" now failing because it's ignoring the http_proxy I set. wtf. 21:19
sorry, "make spectest_smolder"
[Coke] also, why does "make spectest_smolder" keep rebuilding a ton of stuff every time I invoke it? 21:20
even just "nmake spectest" is doing that. 21:21
[Coke] will attempt to debug this later. :( 21:22
Fuad hi all 21:26
takadonet Fuad: yo
Fuad takadonet: hey, sup mang 21:27
takadonet Fuad: @ work u? 21:28
Fuad takadonet: same here 21:30
[Coke] I need "make t\spec" to use the http url instead of the git:// url. 21:31
add a config option? 21:32
tadzik_kindle hello zebras 21:51
[Coke] are you really irc'ing from your kindle?
because... ew.
tadzik_kindle say hello to the broken internet in the hotel 21:52
masak says hi 21:53
[Coke] decommute == "head home from work", yes? 21:55
or is it "arrive at home after commuting"? 21:56
tadzik_kindle dunno 21:57
ingy o/ 21:58
tadzik_kindle anything interesting in the perl6 world today?
ingy o/ 21:59
ingy hi tadzik_kindle :)
tadzik_kindle we have very limited internet access here in bison land 22:08
sorear hello tadzik_kindle 22:16
tadzik_kindle hi
sorear is playing with MY::.{$name} 22:17
tadzik_kindle and masak_near_kindle are writing the Little Animal Farm game 22:18
benabik Was tadzik on from a Kindle? Kindles have IRC? 22:49