»ö« 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.
dalek ecza/mm: d305646 | sorear++ | src/ (4 files):
[mm] Implement variable commoning
00:14
ecza/mm: 499e995 | sorear++ | src/ (3 files):
[mm] Change Optimizer::Beta to work with new model
plobsing sorear: someone will notice and complain about eval memory leaks. see trac.parrot.org/parrot/ticket/783 . 00:21
diakopter plobsing: interesting; thank you 00:25
araujo ideone.com/arje9 02:55
:)
colomon ? 02:57
ah, that's your code? 02:58
araujo colomon, yeah
colomon can you explain what's going on there? 02:59
araujo just added initial string support
colomon I mean, I can figure out the algorithms.
that's your language?
araujo yeah colomon
colomon Why does it say the language is Erlang?
araujo colomon, oh, well, just chose the one that idone colored more fun 03:00
hehehe
colomon ah! 03:01
araujo >:]
colomon araujo++ # lambda!
araujo hehe :D
still lot of stuff to define and do though ... :P
sorear jnthn: hey... 03:42
satyavvd ls 04:44
sjohnson ls -l 04:58
plobsing rm -rf * 05:00
sjohnson DOTN 05:01
DO'T!
moritz_ good morning 06:34
mberends good mor<tab> moritz_ 06:37
mberends -> $work 06:38
sorear good morning moritz_ 06:40
mathw \o/ 07:22
DB are working on setting up a direct ICE service from London to Frankfurt 07:23
szbalint good morning. 07:44
sjn o7
moritz_ good morning 08:07
sjohnson hi
masak morning, 6ers. 08:28
moritz_ mornin' masak
mathw o/ masak 08:34
sorear hello masak! 08:39
masak hi!
sorear: nope. haven't played with mowyw. my primary inspiration is Hakyll.
masak [backlog] ok, someone please explain what's so evil about &eval. I know everyone keeps cargo-culting that it is indeed evil -- and believe me, I see the opportunities for shooting yourself in the foot with it -- but why "evil", and not just "power tool, be careful". 08:41
s/\.$/?/ 08:42
masak looks at mowyw 08:43
sorear masak: "evil" is a colorful way of saying "power tool, be careful" 08:44
moritz_ masak: it's just "evil" if you interpolate non-sanitized user input into eval strings, and don't check $! after it 08:46
masak: problem is, it's often hard to meaningfully sanitize the user input
sorear eval is a great tool for some kinds of metaprogramming 08:47
the test suite would be much more awkward without it, for instance
like the test saying that you can use NUL as string delimiters
masak moritz_: full, full ACK about user input. I think it's that part that should be emphasized, rather than &eval per se. &system is just as bad in that sense. 08:49
er, I mean &run :)
sorear can we get rid of string 'system' already
masak sorear: yes, great for metaprogramming. that's what I'm after. but it's being stigmatized, just like &goto. 08:50
sorear or rename it to &shell or something
masak sorear: get rid of string 'system'? whaddyamean?
sorear masak: run() should not require escaping; it should take an array of strings 08:51
always
moritz_ well, it's kinda useful to use shell meta chars in perl 5's system() 08:52
for things like system("foo > foo.out")
sorear yeah we can keep &shell-execute or something
but lazy people should be steered towards string-list
moritz_ or maybe a run(:shell, $command)
agreed
florz I guess it would be sensible to have a larger distance between what requires escaping and what doesn't
sorear wonders if it would be OK to declare "This is how &run looks on POSIX systems, and kinda-POSIX ones like DOS 2+ and WinNT. If your system is not POSIX at all, &run could have a completely different signature." 08:54
masak thinks that 'kinda-POSIX' is a very charitable description of DOS 08:55
jnthn Morning, #perl6 09:14
jnthn has decided that meatspace is dangerous. Somebody in meatspace had a cold, and now so do I... :/
sorear jnthn: I saw what you did there... 09:16
masak jnthn: also, meatspace is buggy, badly documented, and insufficiently optimized.
jnthn masak: wait, what, I thought that was the description for Rakudo? 09:20
masak dang. I keep getting those two mixed up. 09:21
jnthn :P
masak :)
sorear niecza/mm is coming along nicely 09:22
jnthn sorear: Nice
sorear: I got some decent progress in on the Parrot port of 6model at the weekend too :-) 09:23
Everybody's hacking on meta-models! :-)
masak sorear: niecza/nm?
moritz_ jnthn: and 'nom' is 'new object model'? :-) 09:24
jnthn Yes. :-)
masak om -> nom
sorear masak: I'm playing with a new metamodel too, but it's not the same kind of metamodel
my metamodel is more concerned with LexInfo and Sub stuff 09:25
and .WHO
basically niecza/mm has a concept of 'BEGIN time'
and a lot of stuff that used to be delegated to INIT is now correctly done in the compiler
moritz_ does it properly nest? 09:26
jnthn sorear: Heh, I blug about that very topic last night...
moritz_ ie BEGIN { say 1; BEGIN { say 2 } }
jnthn 6guts.wordpress.com/2010/09/20/grad...alization/
sorear moritz_: executing Perl 6 code at begin time is a long way off 09:27
this is more about stuff like package Foo { our $x }
the stashes are constructed in the compiler now
jnthn sorear: Ah, OK, then it wasn't what I blogged about. :-)
sorear: Though I guess related-ish. :-) 09:28
sorear that means that we can accurately resolve variables in the compiler, all the time
jnthn: our goals are the same; I just need a different set of refactors to enable gradual typing
jnthn Ah, OK
sorear niecza/mm can accept Perl 6 code now and spit out a YAML dump with the full class hierarchy + package nesting graph 09:30
and subs
important features still missing: code generation, setting stubbing, module loading
dalek ecza/mm: 9f805a5 | sorear++ | src/ (2 files):
[mm] track static pad instantiation better
09:31
ecza/mm: ec9350b | sorear++ | src/ (2 files):
[mm] Implement some visitors for the moptree
ecza/mm: f8d692b | sorear++ | src/ (3 files):
[mm] start prototyping the new code generator
sorear wonders if a non-executing class hierarchy extractor would be useful to anyone else 09:32
moritz_ sorear: for documentation purposes, sure
sorear out 09:33
moritz_ jnthn: is the usage of .new_type (vs. new_class as currently implemented) intentional?
I can see the benefit of a more broadly named method, just checking 09:34
jnthn moritz_: new_type is what I've called it in 6model and the Parrot port of it so far.
moritz_: I'm not totally settled on it.
moritz_: But new_class when you're creating a role feels, well, odd.
moritz_ aye :-) 09:35
jnthn++ #that blog post 09:42
masak jnthn: "Thus the most we can say is that it’s narrower than the top type, Mu." -- I'm unfamiliar with the terminology here, but wouldn't "narrower than Mu" exclude Mu? 09:44
jnthn oh, grr 09:45
moritz_ "at least as narrow"
jnthn Yeah, "at least as narrow"
masak aye.
jnthn oh, moritz_++ beat me to it.
masak++ # fixed blog post 09:46
masak jnthn++ # blog post 09:47
flussence rakudo: sub a(Num $b) { say $b }; my $x = 1; a($x) # is this the right way to accept any number type? 09:53
p6eval rakudo 523da4: OUTPUT«Nominal type check failed for parameter '$b'; expected Num but got Int instead␤ in 'a' at line 22:/tmp/ov64CzgVtH␤ in main program body at line 22:/tmp/ov64CzgVtH␤»
moritz_ flussence: if you want to accept Num, Int and Rat, use sub a(Real $b) { ... } instead 09:54
if you also want to accept Complex, use Numeric instead
flussence oh, I didn't know it had those
moritz_ S02 and S32/Numeric are your friends :-)
seeme Hihi you guys 09:56
masak hi seeme!
seeme I'm new to perl6 alright 09:56
masak alright! \o/ 09:57
we're pretty new, too :)
except TimToady, he's been at it for 10 years...
moritz_ perl6: say "welcome seeme"
seeme I have one question and hopefully to find an answer.. is it possible to install Net::ssl perl module on windows
p6eval pugs, rakudo 523da4: OUTPUT«welcome seeme␤»
seeme welcome in
moritz_ seeme: did you find a Perl 6 Net::SSL module somewhere? 09:58
masak seeme: it sounds like a Perl 5 question.
seeme yes
=]
masak seeme: you might find better help at #perl-help over on irc.perl.org
seeme thank you 09:59
peace
masak peace. 09:59
moritz_ smolder.parrot.org/app/projects/rep...etails/110 this looks like a report from a system where t/spec is still svn, and thus hanging
masak '...and thus hanging'? 10:00
moritz_ though I'm not quite sure
'svn up' or 'git pull' won't do anything useful in there
moritz_ hm no, then more series tests would fail 10:02
then I'm worried about a high number of platform specific failures
seeme It's a perl conf irc channel right 10:09
moritz_ we are discussing Perl 6 development and usage here
or which channel was your question about?
masak seeme: perl6.org/ 10:10
seeme Ah this channel belongs to rakudo star developers 10:15
moritz_ not only, but many of them are in here
but there are also people working on other Perl 6 compilers, the spec, the test suite, modules etc.
tadzik it's rather "everything Perl 6"
moritz_ implemented a new metric for $work, and now has trouble interpreting it :-) 10:16
jnthn
.oO( shoulda implemented a new imperial ;-) )
10:17
seeme I'm writing dns poisoning exploit in perl, just to make it easy to use in public and i guess that once again i've missed it this is not the right channel i guess 10:18
moritz_ wonders if a #perl6-without-puns would have any chance to succeed
tadzik moritz_: oh, who would sit there?
moritz_ tadzik: probably just bots
jnthn I'd probably get kicked within like 10 minutes if I joined.
tadzik moritz_: I very doubt it. purl being silenced? Bah 10:19
moritz_ tadzik: purl and jnthn would get bans from the start :-)
tadzik (:
btw guys, how do you like: Perl 6 -- keeping one liners one liners, making big things maintainable
seeme =] 10:20
moritz_ tadzik: +1 10:21
Kodi rakudo: sub f() { my $n = 10; gather { 1 while take --$n } }; say f.join; .print for f; say ""; # Bug or feature? 11:37
p6eval rakudo 523da4: OUTPUT«0000000000␤9876543210␤»
masak bug. known. 11:38
Kodi Okay.
masak decontainerizing not working properly.
moritz_ take() doesn't propery decontainerize its arguments
tadzik speaking of bugs: 11:39
rakudo: (1, 2, 3, 4, 6).first(9).Bool.perl.say # shouldn't it be Bool::False?
p6eval rakudo 523da4: OUTPUT«0␤»
tadzik rakudo: (1, 2, 3, 4, 6).first(6).Bool.perl.say
moritz_ yes
p6eval rakudo 523da4: OUTPUT«Bool::True␤»
tadzik known?
moritz_ rakudo: say (1).first(2).WHAT
p6eval rakudo 523da4: OUTPUT«Failure()␤»
moritz_ rakudo: say Failure.new().Bool.perl 11:40
p6eval rakudo 523da4: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected␤ in main program body at line 1␤»
moritz_ tadzik: not submitted, afaict
rakudo: say Failure.new(3).Bool.perl
p6eval rakudo 523da4: OUTPUT«Method 'handled' not found for invocant of class 'Int'␤ in main program body at line 1␤»
moritz_ rakudo: sail fail().Bool.WHAT
p6eval rakudo 523da4: ( no output )
moritz_ rakudo: say fail().Bool.WHAT
p6eval rakudo 523da4: ( no output )
moritz_ rakudo: say fail().Bool.perl
p6eval rakudo 523da4: ( no output )
moritz_ rakudo: my $x = fail(); $x.defined; say $x.Bool.WHAT 11:41
p6eval rakudo 523da4: ( no output )
takadonet morning all 12:01
moritz_ morning' takadonet 12:02
takadonet moritz_: how are u sir?
moritz_ takadonet: a bit tired, but otherwise very well
yesterday we had a very nice evening with board and card games, self made lasagna, three types of cookies and @tasty_beverages 12:04
colomon sounds lovely
takadonet looks like you had a great weekend 12:05
moritz_ indeed :-) 12:05
how about you? 12:06
s/you/yourself/
takadonet Had my stag party this weekend and it was lots of fun
moritz_ is better at writing grammars than actually using correct grammar :-)
takadonet Getting marriage next Sat
moritz_ oooh, congratulations! 12:07
takadonet thanks!
jnthn takadonet: Congrats! :-) 12:08
tadzik congratulations! :)
tadzik submits rakudobug
(not related)
moritz_ phenny: tell masak that some code seems to be incomplete at strangelyconsistent.org/blog/idiomatic-perl-6 12:09
phenny moritz_: I'll pass that on when masak is around.
jnthn Was gonna say, getting married is a rakudobug these days... :-)
tadzik rakudo.org/status btw, the graph looks funny
moritz_ failed to submit one last month :-)
tadzik: we should really remove it
since it's not updated anymore, and we've reached consensus that those numbers are basically meaningless 12:10
tadzik look, moritz_ 12:13
rakudo: (1, 2, 3, 4, 6).first(9).Bool.WHAT.say; (1, 2, 3, 4, 6).first(6).Bool.WHAT.say
p6eval rakudo 523da4: OUTPUT«Int()␤Bool()␤»
tadzik investigates further
tadzik so it's about Failure Boolificying to Int() rather than to Bool() 12:17
(is there a word: Boolification?)
moritz_ coercion to Bool 12:18
truth test
tadzik bah, sent
moritz_ no problem
we understand what you mean :-)
tadzik I think so :) 12:19
mathw truthifying
we should have a competition
tadzik I find Perl 6 people quite ok about funnywordcreating
moritz_ is, but he is German 12:20
and Germans are creating words by concatenation all the time
tadzik doesn't matter I think
jnthn mathw: btw, where'd you hear about the London - Frankfurt ICE plan?
mathw: That'd be teh awesome...
moritz_ from Frankfurt it's only 2h by train to my place 12:21
ok, 2.5h
gfldex jnthn: www.guardian.co.uk/world/2010/sep/1...high-speed 12:22
mathw jnthn: unfortunately not until the end of 2013 even if it allg oes well
jnthn: but I love that they're trying
jnthn Ooh, stop in cologne is nice too 12:23
Since I can get a sleeper train to there from here.
Though of course who knows if I'll still be here by 2013. :-) 12:24
Anyway, awesome that it's on the cards.
db++
mathw yeah if it happens I'll definitely be visiting Germany more 12:26
a stop at cologne would be awesome to visit my aunt
as it's easy to change for a dusseldorf train from there
and then get the U-bahn to a couple of streets away from her house :)
although I could probably do that now
must be a way there from brussels
jnthn There's a direct Brussels - Cologne ICE. 12:29
mathw awesome 12:34
does it happen to stop at Düsseldorf? 12:35
jnthn I don't think so. 12:36
Liege and Aachen iirc
mathw ah well 12:42
two changes is still better than flying
urgh
jnthn Aye
And since it's run by DB, there's a decent chance of it being on time.
mathw yup
although that's irrelevant in a way, as I have to get to St Pancras on time and the Eurostar has to be on time too 12:43
jnthn Unlike crappy Skånetrafiken.
Well, true.
mathw And that relies on East Midlands Trains 12:48
so... err...
leave plenty of time for your journey
[Coke] rt.perl.org/ "(perl 5.6 is not perl6. perl6 has not been released yet.) "
phenny [Coke]: 14 Sep 07:56Z <moritz_> tell [Coke] about irclog.perlgeek.de/perl6/2010-09-14#i_2822295
mathw ...
moritz_ writes to the bug admins 12:49
[Coke] should probably provide them some text to point to the perl6 queue that they are already hosting.
phenny: tell lichtkind - please give me the exact URL including the tag for your feed.
phenny [Coke]: I'll pass that on when lichtkind is around.
[Coke] phenny: tell lichtkind to email me at [email@hidden.address] for that.
phenny [Coke]: I'll pass that on when lichtkind is around.
mathw Does anybody have any experience of managing a big codebase consisting of various libraries and components which use those libraries, managed either as a single repository (by 'library' I don't mean anything that has its own release schedule) or separate ones? 12:52
[Coke] wonders how you get to the front page of the perl5 tracker. 12:54
moritz_ currently it's a huge mess
tadzik . o O ( Rakudo #5 is not Perl 5 )
moritz_ rt.perl.org and bug6.perl.org show the same page 12:55
baLi_antiQ hello 13:18
night all
how are you ??
moritz_ rakudo: multi f ($ (Int $value)) { say "Int $value" }; multi f( $ (Str $value)) { say "Str $value" }; f(3); f('foo') 13:30
p6eval rakudo 523da4: OUTPUT«No applicable candidates found to dispatch to for 'f'. Available candidates are:␤:(Any (Int $value))␤:(Any (Str $value))␤␤ in main program body at line 22:/tmp/APQK9Ppsyn␤» 13:31
moritz_ rakudo: multi f ($ (Int $value)) { say "Int $value" }; multi f( $ (Str $value)) { say "Str $value" }; f('a' => 3); f('a' => 'foo')
p6eval rakudo 523da4: OUTPUT«No applicable candidates found to dispatch to for 'f'. Available candidates are:␤:(Any (Int $value))␤:(Any (Str $value))␤␤ in main program body at line 22:/tmp/ki2Gl6432l␤»
moritz_ jnthn: should that work?
after all the pairs have a .value method that returns an Int or a Str 13:32
jnthn Hmm
moritz_ thought it probably looks misleadingly declarative 13:33
*though
jnthn rakudo: multi f ($ (Int :$value)) { say "Int $value" }; multi f( $ (Str :$value)) { say "Str $value" }; f('a' => 3); f('a' => 'foo')
p6eval rakudo 523da4: OUTPUT«Ambiguous dispatch to multi 'f'. Ambiguous candidates had signatures:␤:(Any (Int :value($value)))␤:(Any (Str :value($value)))␤␤ in main program body at line 22:/tmp/6gqT8mG2KW␤»
jnthn Interesting... 13:34
toebu moriz_ what does the lone $ do in f($ ... or rather what is it suposed todo ?
moritz_ ah right, need to be named
toebu: it's an anonymous positional parameter
jnthn moritz_: Yeah...even then, I'm a tad surprised about the ambiguity though.
I'm not sure I understand why it's calling it out as ambiguous. 13:35
That's worth of investigation.
moritz_ and worth a ticket :-)
jnthn Sure, otherwise I'll forget. :-)
ggoebel phenny, tell sorear "wonders if a non-executing class hierarchy extractor would be useful"... Sounds good for documentation. Also anything that moves us closer to being able to do static code analysis and dead code detection would be useful. Notes Alias' blog post on "Why Perl6 scares the hell out of me" (use.perl.org/~Alias/journal/35508) 13:37
phenny ggoebel: I'll pass that on when sorear is around.
ggoebel: 14 Sep 18:40Z <sorear> tell ggoebel Nowhere yet
jnthn moritz_: My feeling is that the signature bindability check should only work for one of them. 13:41
moritz_ same here
submitted as RT #77950
jnthn oh duh 13:42
Looks like a stupid
Around line 255 of perl6multisub.pmc
The check at line 265 should probably be moved before the one at line 255. 13:43
jnthn jnthn-- 13:43
I bet there's another RT ticket that'd be fixed by that too.
moritz_ you mean 13:44
info->bind_check = 1;
should be set unconditionally?
moritz_ confused, ignore that 13:45
jnthn no no 13:46
/* If it's got a sub-signature, also need a bind check. */
moritz_ right
jnthn That check needs doing probably before the named and not slurpy one
moritz_ that needs to go before the continue;
jnthn Yeah, I think so.
That may be the fix for this bug.
moritz_ spectesting now...
jnthn If it doesn't, it's still a fix for something. :-) 13:47
oh, hang on...
No, I'm not sure it's wrong actually 13:48
Because it always sets bind_check before continue-ing.
moritz_ right
jnthn Oh!! 13:49
Er
It may not be a bug.
rakudo: multi f ($ (Int :$value!)) { say "Int $value" }; multi f( $ (Str :$value!)) { say "Str $value" }; f('a' => 3); f('a' => 'foo')
p6eval rakudo 523da4: OUTPUT«No applicable candidates found to dispatch to for 'f'. Available candidates are:␤:(Any (Int :value($value)!))␤:(Any (Str :value($value)!))␤␤ in main program body at line 22:/tmp/DBB23kVew9␤»
jnthn OK, that looks more like one... 13:50
Thing is that it *can* match both signatures maybe if the parameter is optional
OTOH it should still fail the type check
So, hm
moritz_ adds that to the ticket
jnthn rakudo: ('a' => 3).Capture.perl
p6eval rakudo 523da4: ( no output )
jnthn rakudo: ('a' => 3).Capture.perl.say
p6eval rakudo 523da4: OUTPUT«\()␤»
jnthn Oh.
rakudo: (1/2).Capture.perl.say 13:51
p6eval rakudo 523da4: OUTPUT«\("numerator" => 1, "denominator" => 2)␤»
jnthn OK, pair capture coercion is FAIL
moritz_ aborts spectest run 13:52
jnthn Please add capture coercion busted note to ticket - I think that's what is really at the bottom of this. 13:53
er, Pair to Capture coercion.
moritz_ yes, did that 13:54
jnthn Thanks 13:55
moritz_++
moritz_ rakudo: say .WHAT for (a => 2).keys 13:57
p6eval rakudo 523da4: OUTPUT«Array()␤»
moritz_ I guess that should be Str, no?
moritz_ tries to fix Pair capturification 13:58
jnthn I don't think that's why it's broken. (more)
I think the issue is that it uses attribute introspection and looks for those marked as having an accessor method. 13:59
And I guess for Pair it doesn't find that, perhaps 'cus Pair is written in PIR
moritz_ right
moritz_ so the right fix would be to mark the $!key and $!value attributes as having an accessor 14:01
jnthn has $.key; has $.value; # does it in Perl 6. 14:05
moritz_ uhm
jnthn as opposed to $!key and $!value
moritz_ but don't we need to set the attributes from PIR somewhere, before the setting has been compiled?
jnthn Well, that may be why it's written in NQP, yeah.
er 14:06
gah
in PIR
Kodi rakudo: say join " ", <A B C D> >>~>> (1, 2, *)
p6eval rakudo 523da4: OUTPUT«A1 B2 CWhatever()<0x53b7240> D1␤»
dalek ast: 665a134 | KodiB++ | S03-metaops/ (2 files):
Additions and unfudging for arguments ending with * to hypers and zips.
14:26
dalek kudo: be80e96 | KodiB++ | src/core/ (2 files):
Made zips extend arguments ending with *.
14:30
pmichaud good morning, #perl6 14:35
tadzik good morning pmichaud 14:36
jnthn morning, pmichaud
Well, afternoon here akshually. :-) 14:37
mberends \o it's beer-time in .nl :) 14:38
jnthn oh noes I'm in the wrong country! 14:41
moritz_ it's Erlange.pm day today 14:42
jnthn accidentally read that as Enlarge.pm 14:43
"The growing PM group!" 14:44
moritz_ missing n
Erlangen.pm
moritz_ really can't type today
TimToady read it as Erlang.pm
TimToady needs to get out more... 14:45
dalek odel: a829cc5 | mberends++ | java/runtime/ (18 files):
[java] complete all Reperesentations (P6num P6str etc) and refactor
14:46
jnthn wow!
mberends++
mberends "Reperesentations" :/
jnthn: I'm beginning to think about java/compiler layout now 14:47
jnthn Oh, I just spot it as "long word that starts with an R" by now :-)
moritz_ R*
erm
R.*
erm 14:48
R\w+
mberends lol
jnthn heh :-)
mberends: Starting out with what's in dotnet/compiler may not be too bad.
mberends: Though I guess that way you'll kinda need to be able to handle the setting 14:49
mberends jnthn: I want to s/DNST/JST/ on that. good idea?
jnthn But you can always make a reall small setting first :-)
mberends: Moze byt...I did wonder if we might at some point be able to make some generic *ST that maps easily to JVM and the CLR. 14:50
mberends: But probably easiest to do as you suggest for now and unify it once we know how they both look.
mberends jnthn: yes, *ST seems the way to go, you should name it generically when we get that far. 14:51
jnthn Yeah
Let's work out what both sides want for now.
mberends oki
jnthn I suspect you won't have to change too much to get it to spit out Java rather than C\ though
er, C#
They're not *that* different at the level DNST is using 'em. ;-)
The real point of [DNST|JST] is that some day we'll go from it to bytecode. 14:52
But for now the text generation is vastly easier.
mberends yes, it does look that way. I want to first look at the toolchain dependencies, makefiles, scripts etc. 14:53
jnthn *nod*
Feel free to ask anything where bits are unclear. 14:54
mberends :) sure. The $hotel.network blocks git and irc, so I'll be using webchat later 14:55
jnthn hotel-- 14:56
mberends it's a nice place otherwise, I got a download speed of 6000kB/s on the netbook! 14:57
jnthn wow!
flussence uppercase B?!
mberends yes Bytes, so about 50Mbit/s
jnthn Nice. Which country? 14:58
mberends .nl at a college that includes a hotel school.
jnthn Aha :-)
mathw jnthn, mberends: really pleased to see stuff going on in 6model like that :) 15:06
mathw it's exciting 15:06
jnthn: your blog post made me very excited about what's coming, and also made me feel a little stupid because it sounds really deep and magical 15:07
I should probably learn how it works to make myself feel smarter
moritz_ it's scary that I actually had the feeling to understand it at all, at least at some basic level 15:08
mathw I could follow what jnthn was writing about
But I'm not so sure about the actual mechanisms of implementation
jnthn I think most of the problem there is not so much that the underlying data structures and algorithms are all that complex, so much as it is that most people don't have to implement stuff in this domain very often. 15:13
mathw you could be right 15:14
it's very much outside my area of experience
so would probably be very healthy to delve into, but I keep saying that about Rakudo too
mathw -> home &
moritz_ and one has to realize that classes aren't god given, but they are just data structures and algorithms like everything else 15:15
jnthn moritz_: Yeah. The only point that gets complex is that you can say "OK, classes are implemented in terms of this other thing", but you have to have some primitive that loops back on itself eventually. 15:16
moritz_ right
jnthn github.com/perl6/nqp-rx/blob/nom/sr...strapper.c is how that actually ends up looking in the Parrot impl though.
Fox5600 sup guys, is the ordering of the junction matching supposed to matter ? 15:24
TimToady not to the programmer 15:25
Fox5600 rakudo: any("a","b","c") ~~ "a"'
p6eval rakudo be80e9: OUTPUT«===SORRY!===␤Confused at line 22, near "any(\"a\",\"b"␤»
Fox5600 rakudo: any("a","b","c") ~~ "a"
p6eval rakudo be80e9: ( no output )
TimToady so the implementation is free to do it in whatever order it thinks will falsify the fastest
jnthn rakudo: say any("a","b","c") ~~ "a"
p6eval rakudo be80e9: OUTPUT«0␤»
TimToady or to parallelize it
Fox5600 rakudo: "a" ~~ any("a","b","c")
p6eval rakudo be80e9: ( no output )
Fox5600 rakudo: say "a" ~~ any("a","b","c") 15:26
p6eval rakudo be80e9: OUTPUT«1␤»
jnthn That's not junction ordering though.
That's just that smart-match isn't symmetric.
Fox5600 hmm, its a bug then ?
jnthn No, it's correct 15:26
jnthn The type of the thing on the right hand side of ~~ controls what kind of matching is done 15:27
Fox5600 hmm
I see
TimToady used to be symmetrical, but that made it impossible to optimize
jnthn "a" ~~ any("a","b","c") means "do any of the things in the junction smart-match against "a""
TimToady you couldn't even make a jump table for when 1 {}; when 2 {}; ... 15:28
jnthn The other way round is "if you stringify the junction, is it the string "a"
Fox5600 a got it
thanks 15:29
TimToady you're very welcome
jnthn walk & 15:30
moritz_ axisofeval.blogspot.com/2010/04/why...ojure.html somehow that's a weird mixture of true things and unequaled arrogance 15:38
"And there have been and are so many smart people in this community, that if you think you've got the great new idea to push Lisp farther, you're wrong." 15:39
"it's 1900. Everything that could have been invented has been invented by now. We understand the world at its core"
or so
Fox5600 how do I load parrot modules ? like Curses.pir ? 15:48
tadzik see Digest-MD5
Fox5600 wow, that work like the use ? will it export functions ? 15:50
moritz_ star: use Digest::MD5; say "alive" 15:51
p6eval star 2010.07: OUTPUT«===SORRY!===␤Unable to find module 'Digest::MD5' in the @*INC directories.␤(@*INC contains:␤ /home/p6eval/.perl6/lib␤ /home/p6eval/rakudo-star-2010.07/install/lib/parrot/2.6.0/languages/perl6/lib␤ .)␤»
Fox5600 github.com/cosimo/perl6-digest-md5/...est/MD5.pm i presume
tadzik Fox5600: yes indeed 15:57
you have to play a little to make it usable
Fox5600 I can only call functions from inside Q:PIR {} blocks then :/ 15:58
moritz_ but you can wrap them in Perl 6 subs or methods 15:59
pmichaud if the parrot modules follow the exporting API, then they'd be usable from Rakudo. 16:02
Fox5600 I tried use Curses:from<parrot>; but looks like it doesn't work yet 16:03
pmichaud Fox5600: I suspect that's because the Curses module likewise doesn't export its functions. 16:04
Fox5600 you mean the Curses.pir doesn't support the export API from parrot 16:08
pmichaud right
Fox5600 but using the Digest::MD5 method will it work ? 16:09
pmichaud I think Digest::MD5 has been updated to support it.
I'm not certain which ones have or have not been updated. 16:10
I know there's been some work to get Digest::MD5 to work with Rakudo.
But it's the only one I've heard about.
Fox5600 the export API is the pdd21 ?
pmichaud pdd31_hll, I think. 16:11
moritz_ does dalek track rakudo/star ? 16:12
pmichaud I don't know. 16:13
moritz_ greps 16:14
seems like not.
moritz_ changes it
tadzik speaking of modules, how about including neutro? 16:15
it's even make-independent these days
and I think I made it even work on windows, but still haven't poked jnthn enough to make him test it :) 16:17
dalek : d98c4aa | moritz++ | misc/dalek-conf.json:
track rakudo/star in dalek
16:24
TimToady I don't want to push Lisp farther; I just want to pull the good bits of Lisp closer. :) 16:28
szbalint :q 16:33
hugme hugs szbalint, good vi(m) user!
szbalint err yeah
[Coke] wonders what the threshold of automatic bot response compared to user annoyance is. 16:40
(in this channel).
tadzik sorear: ping 16:50
betterworld rakudo: my $foo = (3, 8); flat($foo).perl 17:15
p6eval rakudo be80e9: ( no output )
patch is the next rakudo * release on the 30th?
betterworld rakudo: my $foo = (3, 8); flat($foo).perl.say 17:16
p6eval rakudo be80e9: OUTPUT«((3, 8))␤»
betterworld why are there two pairs of parentheses? isn't flat supposed to.. flatten the thing?
tadzik patch: 28th I think 17:24
mfollett Anybody know who this page belongs to? gil.di.uminho.pt/users/smash/rakudo-bench.html 18:10
sjn mfollett: smash is your guy 18:12
PerlJam Looks like smash to me
sjn seen smash?
aloha smash was last seen in #perl6 7 days 5 hours ago saying "hello everyone".
mfollett Thanks, I am hoping to get permission to use that in a talk in October at Strange Loop. 18:14
PerlJam betterworld: contrast this: 18:24
rakudo: my $foo = (3, 8); $foo.flat.perl.say
p6eval rakudo be80e9: OUTPUT«(3, 8)␤»
PerlJam rakudo: my $foo = (3, 8); flat($foo).WHAT.say; $foo.flat.WHAT.say; 18:25
p6eval rakudo be80e9: OUTPUT«List()␤Seq()␤» 18:26
flussence is there a way to use a grammar as part of another grammar? 18:31
betterworld PerlJam: hm, confusing. thanks, then .flat seems to be what I need 18:32
PerlJam betterworld: I don't know if there's a bug there or not though.
flussence: you mean like inheritance?
flussence: or like roles? 18:33
flussence as in parsing a HTML file, then calling separate grammars for <style> and <script> contents
things like that
jnthn I think <GrammarName::foo> is meant to work, but wasn't implemented last I checked. 18:34
pmichaud would know for sure
pmichaud there's still some question about it. 18:35
it may be affected by the rules with lexical regexes
so far it's still spec, I think.
pmichaud although I think I might know of a way to implement it short-term. 18:37
diakopter rakudo: class A is Perl { } 18:38
p6eval rakudo be80e9: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Role $r)␤:(Routine $r, Any :default($default)!)␤:(Code $block, Any $arg?, Any :export($export)!)␤:(Mu $child, Mu $parent)␤:(Mu $type where ({ ... }), Any
..:rw($rw)…
diakopter rakudo: role A is Perl { }
p6eval rakudo be80e9: ( no output )
diakopter std: role was is was { } 18:39
p6eval std : OUTPUT«ok 00:01 114m␤»
mfollett Should there be a difference in the result of 'A' ~~ 'A' | 'C' and 'A' | 'C' ~~ 'A'? 18:44
flussence ~~ isn't symmetrical
the first one will probably do what you mean 18:45
mfollett flussence: It does, thanks
mfollett If I have an Any Junction as a hash key will it eventually be the case that I will be able to put any value the junction matches to match that hash key? Right now it is the last value in the junction that matches. 19:01
flussence rakudo: my %x = (1|2) => 'a', 3 => 'b'; say %x.perl; 19:08
p6eval rakudo be80e9: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in '!STORE' at line 5052:CORE.setting␤ in main program body at line 22:/tmp/D6xq2xKwUn␤»
flussence rakudo: my %x = ((1|2) => 'a', 3 => 'b'); say %x.perl; 19:09
p6eval rakudo be80e9: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in '!STORE' at line 5052:CORE.setting␤ in main program body at line 22:/tmp/oYpS9uvsNU␤»
flussence ack
rakudo: my $w = (1|2); my %x = $w => 'a', 3 => 'b'; say %x.perl;
mfollett rakudo: my $junc = 'A' | 'B' | 'C'; my %foo = $junc => 'bronze'; say %foo
p6eval rakudo be80e9: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in '!STORE' at line 5052:CORE.setting␤ in main program body at line 22:/tmp/8t2cJwbMkB␤»
rakudo be80e9: OUTPUT«C bronze␤»
mfollett flussence: that is the example I was playing with 19:10
flussence oh right, I was trying to use numbers as keys...
mfollett flussence: why didn't that work? 19:11
flussence rakudo: my $w = 'j'|'k'; my %x = $w => 'a', 'l' => 'b'; say %x<$w>.perl;
p6eval rakudo be80e9: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in '!STORE' at line 5052:CORE.setting␤ in main program body at line 22:/tmp/WW9j08yaHu␤»
mfollett rakudo: my $junc = 'A' | 'B' | 'C'; my %foo = $junc => 'bronze'; say %foo.perl
p6eval rakudo be80e9: OUTPUT«{"C" => "bronze"}␤» 19:12
flussence looks like it's taking one value from the junction when it creates the hash...
rakudo: my $j='A'|'B'; my $pair = $j=>'k'; say $pair.WHAT; say $pair.perl; 19:13
p6eval rakudo be80e9: OUTPUT«Junction()␤any("A" => "k", "B" => "k")␤»
mfollett all my tests so far seem to indicate it takes the last one
flussence interesting
mfollett This seems not right: rakudo: my $j='A'|'B'; my $pair = $j=>'k'; say('k' ~~ $pair.kv); $pair.kv.say 19:22
rakudo: my $j='A'|'B'; my $pair = $j=>'k'; say('k' ~~ $pair.kv); $pair.kv.say
p6eval rakudo be80e9: OUTPUT«1␤any("A", "k", "B")␤»
flussence rakudo: my $j='A'|'B'; my $pair = $j=>'k'; say $pair.kv.perl 19:25
p6eval rakudo be80e9: OUTPUT«any("A", "k", "B")␤»
flussence surely that should be an even-length list...
flussence S32:707 implies it does... 19:27
sorear good * #perl6 19:29
phenny sorear: 13:37Z <ggoebel> tell sorear "wonders if a non-executing class hierarchy extractor would be useful"... Sounds good for documentation. Also anything that moves us closer to being able to do static code analysis and dead code detection would be useful. Notes Alias' blog post on "Why Perl6 scares the hell out of me" (use.perl.org/~Alias/journal/35508)
tadzik sorear: sounds like I'll have time tomorrow 16:00 UTC 19:30
sorear I just hope people take advantage of it 19:34
tadzik: pong 19:39
tadzik sorear: sounds like I'll have time tomorrow 16:00 UTC 19:40
mfollett flussence: Do you think I should submit that as a bug? 19:41
flussence I'm not sure what's correct in this case TBH, best to wait for someone else's opinion. 19:42
mfollett Ok, I'll see if anyone else chimes in. 19:48
TimToady revised rosettacode.org/wiki/Forest_fire#Perl_6 19:55
sorear pmichaud et al: Curses is written to pdd21. pdd21 is not good enough for Blizkost, so I patched Rakudo to move to pdd31 19:56
tadzik pdd?
sorear ParrotDesignDocument 19:57
tadzik mhm
sorear tadzik: 1600 UTC is not a good time for me
sorear tadzik: unless you meant for #cpan6sketch, but then why are you telling me? 19:57
tadzik sorear: wasn't that you who've been asking me about this DateTime? 19:58
yes, about cpan6sketch
sorear sorear != #cpan6sketch 19:59
tadzik TimToady: I get Symbol '$RED木' not predeclared in <anonymous> (asd.pl:5)
sorear pinging me personally is utterly useless, since I won't even make it 20:00
try joining the channel instead
hi ruoso
tadzik 2010-09-19 11:25:04 sorear | tadzik: up for 1600 UTC Tue? # that's why I replied back to you
sorear oh 20:01
TimToady tadzik: oh, interesting
I wonder how that worked with my rakudo...
takadonet i see the map.... but nothing happening
nevermind! 20:02
TimToady yes, it used to be even slower, recalculating all the neighbors every time through 20:03
using private attrs should also be faster than public
rakudo was also getting rather confused over string-valued enums 20:04
gottreu is 木 considered alpha-numeric?
TimToady yes, but apparently not by my rakudo :/
jnthn rakudo: say '木' ~~ /\w/ 20:05
p6eval rakudo be80e9: OUTPUT«木␤»
jnthn rakudo: say '木' ~~ /<alpha>/
p6eval rakudo be80e9: OUTPUT«木␤»
jnthn :/
TimToady: Your build has ICU support too?
Though I'd expect it to explode rather than just fail to match 木 as alpha... 20:06
TimToady I had presumed so, but maybe my file thinks it's in latin-1 or sumpthin
apparently I don't have ICU here 20:08
:(
tadzik I with it'd be faster so it'd look awesome
jnthn IC...U need to get it then. ;-)
TimToady I did once, I wonder where it wented... 20:09
gottreu what should "$RED木$CLEAR" be changed to? 20:12
TimToady what it sez now
sorear TimToady: if I have A.pm: module A; sub foo is export { say $GLOBAL::x }; main.pl: our $x = 5; use A; foo; 20:14
gottreu forgot Perl6 is not Perl5 for a moment. . is not ~
tadzik gottreu: wotks with {$RED}Ó$CLEAR
sorear TimToady: it'll say Any() because GLOBAL:: points at A.pm's GLOBAL?
tadzik not Ó but that witty character of course
gottreu tadzik, that's the syntax i was trying to remember 20:15
tadzik .u 木
phenny U+6728 CJK UNIFIED IDEOGRAPH-6728 (木)
sorear tadzik: 'tree'
tadzik . o o ( U+6278 SOMETHING THAT LOOKS LIKE A TREE-6728 )
sorear not very mnemonic for concatenation, imo
araujo still looking for a nice name for his language 20:16
tadzik araujo: what kind of language is it?
araujo ideone.com/ZZf3o
tadzik, latest code snippet
:P
TimToady sorear: use needs to merge everyone's ideas of GLOBAL, and perhaps complain if anyone provides conficting initializers 20:17
araujo I just give up ... I am bad at naming things ....
TimToady well, I suppose it could use ⽊ instead
.u ⽊
phenny U+2F4A KANGXI RADICAL TREE (⽊)
TimToady but that's a radical, not a character :) 20:18
tadzik that's not in my font :(
TimToady indeed, the normal tree character is likelier to be there
tadzik araujo: what paradigm does it follow? What were you inspired by? What's special about it?
araujo tadzik, I just pick what I like from smalltalk/perl/lisp/tcl 20:19
TimToady though doubtless any hanzi gives some stone-aged terminal emulators complete hissyfits
sorear TimToady: so at runtime all the UNIT::GLOBAL's are aliases? 20:20
TimToady then name it 'picky' or some such...
jnthn MishMash
tadzik or Pickroll
:D
araujo Picky
hehe
flussence I object to urxvt being called stone-aged :(
TimToady sorear: wouldn't be very global otherwise
flussence on the other hand, why is it drawing a box there...
sorear flussence: urxvt picks up on fonts you have installed
TimToady maybe we should have named it COMMON in honor of fortran
sorear my urxvt renders both trees 20:21
tadzik sorear: what font?
flussence probably missing some monospace cjk chars... the one earlier showed up fine
sorear I dunno, it doesn't tell me
(that said, urxvt *is* lehmannware...)
TimToady it was tempting to name the enums as 木 and 記事 20:23
grr
sorear I don't know the 2nd or 3rd
TimToady and ⽕
sorear ah
TimToady but ⽕ and き
grr again
but ⽕ and 木 look too much alike
mustn't stutter on the enter key when using anthy... 20:24
tadzik an empty book does not look like this tree-like character to me :)
TimToady was trying to get 火事 20:25
jnthn ...fire something? 20:26
flussence (I wish distros would add some sort of metadata for font packages to say which glyph ranges they provide...)
TimToady jnthn: pretty close 20:27
0293 事じ ず ことJI ZU kotothing, matter, act
jnthn oh lol
sorear flussence: small problem there - no two far east countries acknowledge each other's character numberings 20:27
jnthn I recognized "fire" and was using something in the meta "what is that" sense. :-)
TimToady :)
flussence sorear: yeah, but at least in a technical sense it should be possible to pull out a list of defined codepoints from a font file. 20:29
sorear jnthn: now I'm working on serializing the metamodel... 20:29
TimToady: I wonder how GLOBAL merging interacts with non-acyclic package graphs. 20:30
supernovus Okay, so say you have a module called Foo, that exports a bunch of subs. Why is it that if you define a subset inside the module, it's restrictions are completely ignored when you call the exported sub?
phenny supernovus: 19 Sep 09:56Z <tadzik> tell supernovus you may want to add perlite6 to ww6's deps.proto
jnthn sorear: You're hard to keep up with. :P :-)
supernovus tadzik: actually, looking at the readme that I've updated, I need to add half of projects.list to deps.proto ;-) 20:31
sorear jnthn: I've decided that it's illegal to modify objects in other separate compilation units when precompiling at BEGIN time 20:32
jnthn: so no 'augment class Mu { }' if you want to use the precompiler
jnthn: this way, the precompiler always gets to have consistant metaobjects in every unit
jnthn: INIT { Mu.^add-method(...) } is fine though, since the compiler is shielded from nondeterministic ordering 20:33
supernovus never mind my subset question, I added "my" to the subset and it works fine now :-)
jnthn sorear: I hafta wonder if augment really wants to ever be BEGIN time for these kinds of reasons... 20:35
It *is* a complete can of worms for pre-compilation, I agree. 20:36
jnthn gives his hands a rest from typing and goes to do langauge study for a bit 20:38
sorear module A { module B is export {} }; module A::B::C { import A :OUR<B> } 20:43
What is A::B::C::B::PARENT? What happens if GLOBAL is merged? 20:44
How much of this needs to get cloned by 'use'? 20:45
TimToady I suspect the parent can remain A 20:51
it's not like you reparent when importing to MY either 20:52
TimToady and it's not like we can clone packages willy nilly as if they were immutable values 20:54
sorear S11 talks about cloning packages on use 21:05
sorear my question about merging of cyclic GLOBALs stands 21:06
(if packages are *not* cloned on use, I'll have to ban use Foo; class Foo::Bar { ... }, at least without MONKEY_TYPING) 21:07
cotto 18*19 21:13
ww
sorear 342
sorear TimToady: should it even be possible to put loops in GLOBAL like that? 21:17
supernovus tadzik: There, ww6 now has a deps.proto file. So far perlite6, SCGI, exemel, flower, json and temporal-utils are the only known dependencies.
tadzik supernovus: good. It can now be nicely installable with a module installer 21:18
supernovus++ 21:19
tadzik modules.perl6.org/ -- not quite up-to-date, is it? 21:21
bedtime, see you guys
supernovus tadzik: What happens to the stuff in the other directories when you 'install' an app like ww6? It comes with a whole bunch of example configuration files (in data/) and web applications (in apps/) and some other misc stuff. Will there eventually be support for a "/usr/share/doc" like place to put the "other" bits?
tadzik supernovus: see ttjjss.wordpress.com/2010/08/09/so-...-6-module/ 21:22
supernovus: so far you can think of your own
...own makefile
supernovus: you can easily supply them as the pod-only .pm files I think 21:23
at least configs
supernovus tadzik: okay, that works, most of my library-only packages use 'ufo', but ww6 is rather 'special'. Thanks for the link! have a good night
tadzik supernovus: you might want to consider trying Module::Tools instead of ufo. It has a nice mbuild script, not using Makefile, but being pure-Perl6
so mbuild, mbuild test, mbuild install, etc
supernovus tadzik: Cool, I'll look into that. I can tell I've been away a while :-) 21:24
tadzik and now pardon, but I'm hell sleepy
g'night
supernovus o/ tadzik
[hudnix] rakudo: [X] 1,2 21:32
p6eval rakudo be80e9: ( no output )
dalek p-rx/nom: 76d9ad1 | jnthn++ | src/NQP/ (2 files):
Some groundwork for the new meta-model implementation in the grammar and actions. Mostly copied from JnthnNQP.
21:55
sorear mildew is a lot smaller than I was expecting 21:57
sorear pmurias: VAST::package_def is not a simple node, possible choices are: longname signature decl trait blockoid at /usr/local/lib/perl5/site_perl/5.12.0/VAST.pm line 18. 22:54
...
dalek p-rx/nom: e80031a | jnthn++ | / (4 files):
Start to stub in the P6opaque representation. Doesn't actually compute any slot storage and store attributes yet, but this gets the outline in place.
23:22
p-rx/nom: 0beab0f | jnthn++ | src/metamodel/reprs/P6 (3 files):
Add struct definitions for P6int/P6num/P6str representations.