»ö« 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.
diakopter oh the gaieté 00:00
TimToady If this is Friday it mustn't be Paris.
masak read "gaieté" as "happysummer"
TimToady reads it as 賀意得手 00:05
sorear 1/4, not bad
TimToady "congratulatory feeling strong point"
rakudo: say 1/4 ~~ 0 ^..^ 1 00:06
p6eval rakudo c548b8: OUTPUT«Bool::True␤»
TimToady rakudo: say 1/4 ~~ 0 ^1
p6eval rakudo c548b8: OUTPUT«Bool::False␤»
TimToady ooh
wait
rakudo: say 1/4 ~~ ^1
p6eval rakudo c548b8: OUTPUT«Bool::True␤»
TimToady nm
00:06 TobiO|ref joined
TimToady decommuting & 00:15
masak phenny: "賀意得手"?
phenny masak: "Congratulatory feeling forte" (ja to en, translate.google.com)
tadzik hmm, anyone with parrotgit having problems with running the REPL?
Method 'stdhandle' not found for invocant of class 'ParrotInterpreter'
lue Hooray! I'm getting things working!
00:23 ilogger2 joined, ChanServ sets mode: +v ilogger2
mindos1 rakudo: say 20.rand.Int + 1; 00:28
p6eval rakudo c548b8: OUTPUT«2␤»
tadzik rakudo: (1..20).pick.say 00:29
p6eval rakudo c548b8: OUTPUT«9␤»
masak tadzik++ # beat me to it
tadzik :)
speedkarma
00:29 Trashlord joined 01:13 ilogger2 joined, ChanServ sets mode: +v ilogger2
diakopter nice 01:13
dalek odel: 382a1ea | masak++ | t/nqp/27-self.t:
[t/nqp/27-self.t] added

Needed to SKIP two tests, because we don't do 'for' loops yet.
01:19
01:25 ch3ck3r joined
masak nqp-rx: my $a := 42; say($a) 01:28
nqp: my $a := 42; say($a)
p6eval nqp: OUTPUT«42␤»
masak nqp: my $a := 42; my $b := $a; $a++; say($b)
p6eval nqp: OUTPUT«43␤»
masak ouch :/ 01:29
pmichaud_: please remove postfix:<++> from nqp.
it doesn't belong there.
sorear nqp: 42++; say("Alive") 01:34
p6eval nqp: OUTPUT«Alive␤»
dalek odel: 24884a9 | masak++ | t/nqp/39-pointy.t:
[t/nqp/39-pointy.t] added

  - Replaced all postfix:<++> with ($x := $x + 1)
  - Needed to SKIP two tests because we don't do argument defaults yet.
  - Needed to SKIP three tests because we don't do 'for' loops yet.
[Coke] ... why remove features from NQP?? 01:35
jnthn [Coke]: Because ++ without an assignment model makes no sense semantically.
masak not only does it make no sense, it's outright harmful. 01:36
jnthn [Coke]: The way it's done in nqp-rx is a hack, and worse one that breaks if we actually build a constant table for constants rather than create a new PMC for each constant.
Plus the example masak++ pointed out earlier.
masak [Coke]: imagine the subtle bugs caused by the spooky action-at-a-distance effect I showed above. 01:37
in a larger program, they might be difficult to spot.
sorear don't imagine, just ask a fortran programmer
masak right.
01:57 flatwhatson_ joined 01:59 envi joined
dalek odel: 355ceac | masak++ | t/nqp/53-multi-method.t:
[t/nqp/53-multi-method.t] added

This one doesn't come from nqp-rx. It tests various aspects of proto and multi methods.
02:01
masak zzz &
dalek odel: 784b227 | jonathan++ | dotnet/ (5 files):
[dotnet] Implement slurpy array and hash parameters.
02:04
02:29 ch3ck3r left 02:37 molaf_ joined 02:57 takadonet joined
takadonet hey all 02:57
where in the spec does it describe perl 5 :'eval' ? 02:58
jnthn: you alive good sir? 03:00
03:01 risou joined 03:02 Guest61435 joined
sorear if jnthn is dead we're all screwed 03:08
TimToady wonders if masak++ done him in 03:10
03:14 araujo joined 03:16 risou left
takadonet i got a good chuck of text-tabs+wrap working!! 03:18
github.com/Takadonet/Text-Tabs-Wrap/
I want to see if I can get the rest of the test passing by the end of the weekend!
lue ohai again o/ 03:19
takadonet lue: hey
colomon \o/ 03:24
dalek ecza: 2484b4a | sorear++ | / (8 files):
Add a JSYNC dumper
03:32
03:44 PerlPilot joined
lue what's the secret organization of the directories for projects using ufo? 03:48
[or is ufo so good it can DWIM no matter what layout?] 03:49
03:54 PerlJam joined 03:56 PerlPilot left 04:04 araujo left 04:11 takadonet left, takadonet joined
takadonet stupid laptop 04:11
04:35 flatwhatson_ left 04:44 demond joined 04:51 demond left 05:05 seb_est_la joined 05:26 seb_est_la left
takadonet rakudo: 'long string here' !~~ m:c/^\s*$/; say $/.to; 05:49
p6eval rakudo c548b8: OUTPUT«-3␤»
takadonet why is it -3?
sorear at some point pmichaud++ decided that non-matches should respond to .to with a negative number 05:53
I need to find out why at some point
niecza doesn't have non-matches at all; failing matches return Any
takadonet hmm that going to confuse me i think 05:55
05:55 araujo joined, araujo left, araujo joined 06:40 takadonet left 07:26 toebu_ joined 07:30 kjeldahl joined 07:44 sidek joined 07:55 _kaare joined 08:09 sftp joined 08:15 mj41 joined 08:26 kanishka joined
moritz_ good morning 08:29
sorear hi 08:30
08:35 toebu_ left 08:50 envi left 08:54 envi joined, meppl joined 09:03 wamba joined 09:20 perigrin joined 09:24 mgrabovsky joined 09:26 mgrabovsky left 09:48 Woodi joined 09:57 mavrc joined 10:21 jlaire joined 10:23 kjeldahl left 10:29 masonkramer joined
sorear I want to tell Ben Goldberg "Working code or shut up." 10:32
I suppose this would be out of line.
10:35 flatwhatson_ joined, masak joined
masak o/ 10:35
moritz_ \o 10:36
masak lue: ufo is so good it can DWIM no matter what layout. 10:37
tadzik |o
10:37 ggoebel joined
jnthn sorear, TimToady: I'm glad to report that I'm alive and well. masak++ was kind enough to refrain from doing me in, even if I may deserve it for some pun or other... 10:38
masak +1
jnthn :p 10:39
masak let's just say it would be very untactical of anyone at this juncture to do Rakudo core developers in. 10:40
10:41 icwiener joined
jnthn Awesome, that means I can keep punning without fear of punctual punishment. 10:49
masak yes, you're safe. 10:55
as long as you keep producing runnable code.
jnthn :P
Maybe to help us wake up properly we should design nqp.net's iterator model... 10:56
masak :)
11:10 seb_est_la joined
masak seb_est_la: hello! :) 11:10
seb_est_la good morning 11:11
masak rakudo: say "al_tse_bes sgniteerg".flip 11:12
p6eval rakudo c548b8: OUTPUT«greetings seb_est_la␤»
masak .u ц 11:13
phenny U+0446 CYRILLIC SMALL LETTER TSE (ц)
tadzik do we have AUTOLOAD subs/methods in Perl 6? 11:15
masak tadzik: yes. see CANDO in S10. 11:17
tadzik Thanks. I thought about porting Git::Wrapper as someone suggested 11:19
masak let us know how that goes. 11:20
tadzik the Perl 5 code is actually very nice, and it's tempting to just rewrite it in Perl 6 11:21
we only don't have those IPC::BLah stuff
masak pro tip: start small. get result early. build successively upwards. 11:24
tadzik sure 11:25
11:34 xinming joined 11:57 MayDaniel joined
masak it's too quiet today. 12:06
so, should I just go ahead and remove S16?
masak puts on an evil grin
colomon masak++ 12:09
12:10 nymacro joined
masak of course, it'd be better if, instead of removing it outright, we could put in two of three sentences about what we want instead. 12:10
colomon masak: does pls now work? 12:11
masak colomon: hm. well, I fixed the model, but I'll still need to patch the application. thanks for reminding me. 12:12
what's the prototypical project with a dependency or two?
colomon .... 12:13
masak svg-plot looks fine.
it depends on svg.
masak tries it 12:14
tadzik neutro is fine. It has deps, and it has scripts
I recently got an idea to create fakeexecutables out of bin/ scripts, instead of just copying them
masak no please no 12:15
tadzik why not? 12:16
it's Parrot-dependant, but we're Parrot-dependant anyway atm 12:18
masak because it complicates things and makes them brittle without adding any particular benefit?
anyway. it's your project. you've done good things with it so far. of course you should try fakecutables if you want. 12:19
tadzik I guess it boosts the startup speed a bit. I sure drawback is that it gets outdated and not-working after some upgrades 12:20
masak hm, seems proof-of-concept has bitrotted after github's https transition. 12:21
fixing.
tadzik but that's ok, compiling scripts to PIR is broken anyway :)
masak it is. 12:22
I was going to blog about this; what struck my about the merlyn/pmichaud interview is how much PCT/Rakudo development in the past years have been a slow but steady escape from the clutches of PIR.
12:24 MayDaniel left
tadzik nqp is the alternative here? It's basically sugar over PIR now (jnthn is making it target multiple backends, no?) and it's significantly slower... then again, 6model is a blessing :) 12:24
jnthn tadzik: Once I make attribute lookups happen by index not name, that'll be an optimization unavailable to PIR code. 12:25
tadzik that'll be a huge thing indeed
masak a lot of advances is programming languages could be dismissed as "basically sugar" over some older, more primitive thing.
tadzik python is using name lookup too, no? 12:26
jnthn So at least there NQP will catch up / beat PIR on taht particular factor.
In general, I suspect writing PIR to work with 6model will be not that much fun.
I'm not designing it for that really.
12:26 xiaomo joined
masak hm, proof-of-concept has bitrotted in that ecosystem no longer stores things as JSON. (I'm all for that development, by the way. simplifications like that are rare and should be treasured.) 12:27
tadzik so Pir/Parrot is not going to be the main Rakudo backend anymore?
jnthn tadzik: Well, nqp and Rakudo will move away from using the default Parrot object model.
tadzik: As to which backend people prefer once we have more than one of them, well, that's down to the userbase. :) 12:28
I'll hack on what people are most wanting/using, I expect. With some mix-in of what's -Ofun.
12:28 orafu joined
jnthn In general, NQP is going to become more Perl 6-y and less Parrot-y though, even atop of Parrot. 12:28
tadzik mhm 12:29
jnthn (I'm aware some Parrot folks may want to hang on to having something like it that's just Parrot sugar. That's fine. That's what forking is for.)
masak .oO( Not Quite Parrot ) 12:33
tadzik :)
jnthn: what's wrong with PIR and Parrot?
masak PIR was never meant to be an implementation language. 12:34
it's something of an historical accident that there's so much manually crafter PIR code around.
s/crafter/crafted/
tadzik so everyone's waiting for Lorito? 12:35
12:35 seb_est_la left
jnthn tadzik: Part of the issue is the object model in Parrot is purely aimed at dynamic languages and doesn't really give me a great deal of meta-programming possibilities. 12:35
tadzik I see 12:36
jnthn It - and PIR - thinks about everything in terms of strings. When actually we want to try and resolve things to indexed lookups in some places, for example.
masak meta-programming?
jnthn masak: e.g. meta-model bits
masak in other words, MOP. 12:37
jnthn masak: e.g. a class has a meta-object that's just a plain old object
Right
masak I'm not sure I've heard anyone within the Parrot project ever describing a MOP as a priority for Parrot.
it definitely wouldn't have been even on the radar before Moose. 12:38
jnthn To be fair, it takes a while to understand _why_ it matters.
masak funny how these things work out.
jnthn And it was during the Pugs project that the real importance of it really started to be understood.
masak right.
all steps on the way are built on feedback from prior steps.
12:39 hardik joined
hardik hello 12:39
masak hardik: hi! 12:40
rakudo: say "greetings, hardik".uc
p6eval rakudo c548b8: OUTPUT«GREETINGS, HARDIK␤»
jnthn THAT WAS LOUD :p
hardik I am perl developer and I would like to contruibute in Perl6
jnthn \o/
tadzik great!
hardik but i don't know how to start
masak hardik: that's a very common situation. what do you like to do? 12:41
hardik Basically I am programmer so i would like to contribute in programming
masak we have a lot of application code that needs writing. 12:42
12:42 mila_ joined
masak basically, every time someone writes a mid-sized program in Rakudo, things improve in various ways. 12:42
tadzik hardik: do you happen to know Perl 6?
masak so you could contribute simply by finding/creating a project and writing Perl 6 code. 12:43
hardik No I am fresh to perl 6
I know perl 5 very well
tadzik we have a module database which is quite poor compared to CPAN, and every module added is a good contibution to Perl 6, and potentially reveals bugs/LTA things
masak hardik: have you taken a look at the synopses? a good start is usually to read a small bit of them, and then do some small bit of coding based on that. 12:44
masak exemplifies with a .wrap example
hardik OK
tadzik hardik: you'd probably like the Perl 5 to 6 series of articles
masak rakudo: sub foo { say "is quite" }; &foo.wrap: { say "this"; callsame; say "cool" }; foo 12:45
p6eval rakudo c548b8: OUTPUT«this␤is quite␤cool␤»
hardik OK I understand
masak hardik: and if you experiment with p6eval like that, you'll get excellent feedback from the people here on the channel. 12:46
as far as I know, that's the quickest way to learn and get involved.
ymmv
hardik Thats perfect
Let me start will that
masak above all, have fun :) we encourage play and playfulness. 12:47
hardik :)
tadzik hardik: perlgeek.de/en/article/5-to-6 was useful to me 12:49
masak rakudo: sub ha {}; for ^10 { &foo.wrap: ({ print "ha"; nextsame }, { print "HA"; nextsame }, { print "ho-hoo"; nextsame }, { print "haa"; nextsame }).pick }; ha
p6eval rakudo c548b8: OUTPUT«Could not find sub &foo␤ in <anon> at line 22:/tmp/BgIfIPsB2j␤ in main program body at line 1␤»
masak rakudo: sub ha {}; for ^10 { &ha.wrap: ({ print "ha"; nextsame }, { print "HA"; nextsame }, { print "ho-hoo"; nextsame }, { print "haa"; nextsame }).pick }; ha
p6eval rakudo c548b8: OUTPUT«Could not find sub &print␤ in <anon> at line 22:/tmp/E9MXUHkHCw␤ in main program body at line 1␤»
masak oh right.
tadzik it's this funny bug again?> 12:50
masak rakudo: our &_print = &print; { sub ha {}; for ^10 { &ha.wrap: ({ _print "ha"; nextsame }, { _print "HA"; nextsame }, { _print "ho-hoo"; nextsame }, { _print "haa"; nextsame }).pick }; ha
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
masak :/
hardik nice It will really help me out to start with perl6 12:51
masak rakudo: our &_print = &print; sub ha {}; for ^10 { &ha.wrap: ({ _print "ha"; nextsame }, { _print "HA"; nextsame }, { _print "ho-hoo"; nextsame }, { _print "haa"; nextsame }).pick }; ha
p6eval rakudo c548b8: OUTPUT«haho-hoohahaahaaho-hoohaaHAHAha»
masak :D
tadzik hardik: the book is also awesome 12:53
masak is it bad style for a role to call methods not defined in the role, but in the class the role is to be mixed into? 12:54
hardik Really!!
12:54 Axius joined
masak oh, you've read the book? 12:55
jnthn masak: Not really
(more)
masak: Nice though we don't quite handle it yet is to write stub methods in your role
Those then get treated is requirements
So you get compile time checking that, after composition, those methods exist.
masak ooh
jnthn (e.g. are provided by the class or another role)
masak yeah, that's the missing piece of that puzzle. 12:56
jnthn The original traits paper had an explicit way to do this
Perl 6 just roles stubs into it
masak I have the original traits paper open in a browser tab :)
jnthn Oh, I think we discussed that maybe you write !!! in the body to require
??? to warn
... is like "meh, just fail at runtime"
:)
masak nodnod
dalek odel: 08510b7 | jonathan++ | common/NQP/NQPSetting.pm:
[common] Add an NQPMapIter that just knows how to eagerly reify a list and a .map that returns it for lists and arrays.
13:00
odel: ec09403 | jonathan++ | dotnet/compiler/Actions.pm:
[dotnet] Compile for to $expr.map($block).eager rather the for pasttype for the time being.
odel: f186018 | jonathan++ | t/nqp/ (2 files):
[t] We now pass 15-list.t and 37-slurpy.t.
masak the more I think about nqp, the more it makes sense as a "minimal/core Perl 6" that can then be used to build the rest of Perl 6. 13:02
13:02 nymacro left 13:04 Trashlord joined, mila_ left, mila_ joined
tadzik I thought that's the idea 13:07
Rakudo is/was bootstraped with nqp, right?
masak yes. 13:08
tadzik and now it's just pbc/pir? So if we lost it, we'll have to bootstrap it again? :) 13:09
masak but I'm starting to think it's not just a nice way to break down the problem, but sort of sane design-wise as well. it gets you thinking about which things are fundamental.
jnthn tadzik: No, the PIR we have is generated from the NQP 13:10
tadzik: We'll still compile down to PIR/PBC
It's just that NQP will use 6model, but Parrot's Object/Class PMCs, and a similar story for multi-dispatch I guess.
See the nom branch of nqp-rx for the work so far
13:14 whiteknight joined, [Coke] joined
tadzik jnthn: that's nqp with 6model? 13:15
13:19 Axius left 13:30 MayDaniel joined
tadzik masak: #225 in poc looks a bit broken: wklej.org/id/418167/ 13:34
13:34 Psyche^ joined, Psyche^ is now known as Patterner
tadzik nah, old Term-Ansicolor author haven't yet respond to my 3-months-old message 13:39
masak: how about poc using Module::Tools? They contain a few fixed bugs alredy, no sense in duplicating efforts
(just fixed one) 13:44
colomon oh noes, ABC fails? 13:53
tadzik nah, its po 13:54
* poc
colomon what is proof-of-concept? new version of proto? I feel like I blinked and missed something... 13:55
tadzik yeah, new module installer using Pls
strange. I removed quite a significant statement from Module::Build and not only it didn't break neutro, it also fixed proof-of-concept 13:58
oh, it did break neutro
14:05 xiaomo left
tadzik oh, too much brokeness 14:06
tadzik retires
14:28 wamba left 14:36 timbunce joined 14:40 [Coke] left
tadzik suddenly, the conversation died :( 14:41
colomon you retired! 14:42
tadzik for today's Module-Mangling, don't worry :) 14:50
14:56 wamba joined
tadzik rakudo: {a => 1}.flip.perl.say 15:04
p6eval rakudo c548b8: OUTPUT«"\n1\ta"␤»
tadzik oh?
15:05 Trashlord left 15:07 Trashlord joined
tadzik rakudo: {a => 1}.invert.perl.say 15:07
p6eval rakudo c548b8: OUTPUT«(1 => "a")␤»
tadzik right
15:16 _kaare left 15:18 timbunce left, Chillance joined, Axius joined
jnthn tadzik: yes 15:19
tadzik jnthn: nice. Does it work, like now, can be tested or such? 15:20
jnthn sorta :)
tadzik: It's a work in progress.
tadzik: It's blocked on HLL::Compiler's inheritance from PCT::HllCompiler 15:21
tadzik: But could be unblocked by removing the inheritance and then copying the required methods from PCT::HLLCompiler into HLL::Compiler
If anything, just wrapping the PIR in NQP method bodies, though of course a translation to NQP is nicer. :) 15:22
Anyway, Pm was going to do it, but is suffering a tuit deficit.
So now it's probably for me or anyone else who is interested ;)
masak tadzik: I'll definitely look into Module::Tools. thanks for the pointer.
jnthn I hope it's not a null one. :) 15:23
colomon jnthn: if you think you can explain what is needed, I'd be willing to take a stab when I have tuits
15:23 Chillance left
tadzik masak: just fixing them a bit. path-to-module-name and name-to-module-path act quite funny when the directory we're building in is not . 15:24
github.com/tadzik/perl6-Module-Too...mmit/1f3c0 actually
with this change, it should be able to cooperate with poc
15:25 takadonet joined
takadonet hey all 15:25
tadzik hey takadonet
takadonet tadzik: how are u sir? 15:26
masak takadonet: \o
tadzik takadonet: oh nice
takadonet masak: getting there: github.com/Takadonet/Text-Tabs-Wrap
tadzik takadonet: fixing mine and masak++'s module installers simultanously :)
jnthn colomon: 1) check out nom branch of nqp-rx. 2) Locate HLL::Compiler source (it's an NQP source file). 3) Remove 'is PCT::HLLCompiler'. 4) Stuff epicly breaks. 5) Copy methods from the PCT HLLCompiler (in PIR, in the Parrot repo, somewhere in compilers/pct/) into the NQP HLL::Compiler.
takadonet ???
jnthn (Until there's enough stuff to work. :))
masak "there are also Perl 6 developers" -- wonder which ones. twitter.com/davidslv/status/3462056384659456
takadonet sorry I misunderstood 15:27
tadzik masak: > PERL6LIB=lib:$PERL6LIB ./proof-of-concept ABC
ABC installed.
takadonet masak: do you always monitor twitter for perl 6 stuff?
tadzik should've been more verbose, no? And I touched only the build role
ah, maybe it's alredy installed 15:28
masak tadzik: live filters.
oops, that was meant for takadonet.
tab completion fail.
tadzik masak: did pls install Acme::Meow?
for it no does 15:29
masak tadzik: proof-of-concept definitely shouldn't need a PERL6LIB set externally.
that's part of the reason for having an installer, that it handles that stuff for you.
tadzik masak: well, you have to have your lib/App/Pls.pm in PERL6LIB, no?
and I have to add my original PERL6LIB so it sees Module::BUild 15:30
masak that's part of why I don't want dependencies.
tadzik alright success! ABC wasn't building, and it's building now
masak I guess pls will have to bootstrap so that it puts itself in ~/.perl6/lib
tadzik that's what neutro does 15:31
15:31 whiteknight left
masak excellent. 15:31
tadzik masak: lolifixed proof-of-concept
masak :)
tadzik It's just a bit more verbose and a bit less error-reporting than it was, but it works and it's a matter of wrapping around Module::Build somehow
15:31 hax joined
masak "a bit more verbose" is a non-starter, though. 15:32
tadzik wklej.org/id/418251/
takadonet cannot find in the spec where you can export variables from a module
tadzik I just added :v to build to see what's happening
masak ok, so I can just remove it, then?
tadzik . o O ( perl6-App-FatPacker )
masak how will I know if Module::Build::build fails? 15:33
tadzik masak: well,you have to try around it to check if it worked
hold on
github.com/tadzik/neutro/blob/mast...neutro#L71
like here
masak I think I'll pull in your change. and put Module::Build in pls's lib/, I guess.
tadzik I can push it myself, but I have to write it first :)\ 15:34
masak tadzik: sure, if you want.
colomon jnthn++ # will start to look at this as soon as I finish attempting to convince Newfoundland musicians to come visit Michigan. ;)
15:34 hax left
tadzik masak: I'll mess around a bit then 15:34
masak tadzik: I won't guarantee I won't push commits in the meantime :)
but it's git, so should be fine. 15:35
15:35 hax joined
tadzik masak: the first problem is: Module::Tools spit out output only when given a :v, and poc has a run-logged to run commands. There's trouble redirecting the output now 15:35
masak hm :( 15:36
tadzik also, prove can't be silenced completely, so it always spits out something 15:37
15:38 cls_bsd joined
masak > /dev/null 15:42
tadzik I wanted to avoid that due to portability issues
15:42 ash__ joined
masak I want something that works well on at least one platform. 15:42
tadzik it was meant to run on windows too, yet I never found anyone to test it on it
well, it works at least on Linux and MacOS 15:43
masak lack of garbage output is one of the original goals of both proto and pls.
tadzik I think I may have found a RakudoBug
masak do share. 15:44
tadzik proof-of-concept uses Module::Install which uses File::Mkdir, but when Module::Install uses mkdir :p everything dies due to additional parameter :p, so like File::Mkdir didn't get imported
I'll push the change to some branch so you can see/investigate for yourself 15:45
interesting that it isn't a problem for neutro nor for mbuild 15:46
masak sounds tricky.
tadzik oh, and Module::Tests seems to have some issues with dirs different than '.'. Worked on Math-Model, didn't on ABC 15:47
masak std: sub foo(Str $s where "OH HAI" --> Int) {}
p6eval std a194beb: OUTPUT«Potential difficulties:␤ $s is declared but not used at /tmp/pnJU99mW37 line 1:␤------> sub foo(Str ⏏$s where "OH HAI" --> Int) {}␤ok 00:01 122m␤»
masak std: sub foo(Str $s where "OH HAI" --> Int) { $s }
p6eval std a194beb: OUTPUT«ok 00:01 122m␤»
15:48 _kaare joined
masak rakudo: sub foo(Str $s --> Int) {}; sub foo(Str $s where "OH HAI") {}; sub foo(Str $s where "OH HAI" --> Int) {} 15:48
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Can not re-declare sub &foo without declaring it multi at line 22, near "; sub foo("␤»
masak rakudo: sub foo(Str $s --> Int) {}; sub bar(Str $s where "OH HAI") {}; sub baz(Str $s where "OH HAI" --> Int) {}
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Missing block at line 22, near "-> Int) {}"␤»
masak STD handles --> after a 'where' block. Rakudo doesn't.
masak submits rakudobug
jnthn rakudo: sub foo(Str $s where "OH HAI" --> Int) { $s } 15:49
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Missing block at line 22, near "-> Int) { "␤»
tadzik masak: github.com/masak/proto/commit/09bf50 15:52
masak: it can install Acme::Meow and Math::Model I think, there are some issues with tests on ABC
15:53 Axius left, hax left 15:54 Axius joined
colomon which version of ABC? 15:54
tadzik master 15:55
colomon there are two ABC repos, if you're in the wrong one you're likely to have issues.
tadzik colomon: it has problems with opening the files in tests, probably because it isn't run from the directory your tests expect
colomon ah, okay.
masak there are two ABC repos? why?
colomon fork, the old one hasn't seen any development in some time. 15:56
masak oh, right. 15:57
colomon was worried that the proto list of modules might not be updated to the fork. 16:00
masak there's no longer a "proto list of modules". 16:01
there's the ecosystem list.
and you should have commit bit to that one.
colomon yes, I do, and the ecosystem list is up-to-date. 16:03
16:05 justatheory joined
masak phenny: "kan jag bara skriva slumpmässig skit och få den översatt? det här måste vara framtiden!"? 16:05
phenny masak: "I can just write random crap and have it translated? This must be the future!" (sv to en, translate.google.com)
masak \o/
takadonet wow 16:06
jnthn phenny: "My hovercraft is full of eels" 16:07
phenny: "My hovercraft is full of eels"?
phenny jnthn: Language guessing failed, so try suggesting one!
masak jnthn: what language *is* that? :P
jnthn Dirty hungarian, no? :P
masak British?
nice try, islander!
jnthn I never had opportunity to talk dirty to a Hungarian though. :P
takadonet phenny: "Pourqoui tu fais cela"? 16:08
phenny takadonet: "Interval so you do that" (fr to en, translate.google.com)
takadonet ... not exactly what i said but good enough
masak phenny: "lol je suis canadien"? 16:09
phenny masak: "lol I am Canadian" (fr to en, translate.google.com)
jnthn phenny: "my máme čas"?
phenny jnthn: "we have time" (sk to en, translate.google.com)
masak phenny: "quid pro quo"? 16:10
phenny masak: "quid pro quo" (fr to en, translate.google.com)
masak dang :)
phenny: "hein"? 16:11
phenny masak: "eh" (fr to en, translate.google.com)
jnthn phenny: "I can haz cheezburger? kplzthnxbai"?
phenny jnthn: The qu to en translation failed, sorry!
masak phenny: "est qu'un tournevis sonique vous avez dans votre poche, ou vous êtes simplement heureux de me voir?"? 16:12
phenny masak: "is a sonic screwdriver you have in your pocket or are you just happy to see me?" (fr to en, translate.google.com)
16:12 patspam joined
jnthn ..."screw"driver... :P 16:12
masak jnthn: you need to watch more Doctor Who :) 16:13
jnthn Who?
takadonet so ya....
tadzik phenny: "powinieneś oglądać więcej Doctor Who :)"?
phenny tadzik: "You should watch more Doctor Who:)" (pl to en, translate.google.com)
tadzik nice 16:14
masak phenny: "trop de hors-sujet?"?
phenny masak: "too off-topic?" (fr to en, translate.google.com)
masak :)
tadzik phenny: "ani trochę"?
phenny tadzik: "or some" (pl to en, translate.google.com)
mindos1 masak : Thanks. You guys are really miracle-maker.
tadzik :(
phenny: "nie, wcale"? 16:15
phenny tadzik: "not at all" (pl to en, translate.google.com)
masak mindos1: thanks for what? goofing off?
16:15 Chillance joined
tadzik phenny: "quidquid latine dictum sit, altum videtur"? 16:17
phenny tadzik: The la to en translation failed, sorry!
masak that's true, though. 16:18
tadzik yep
masak tadzik: did you take Latin in school? 16:19
rakudo: say elems 1, 2, 3 16:24
p6eval rakudo c548b8: OUTPUT«3␤»
masak \o/
tadzik masak: nope 16:28
masak: it's the only sentence I know, besides a few from Asterix
masak Asterix++ 16:30
tadzik phenny: "Ale głupi ci Rzymianie"? 16:31
phenny tadzik: "But those stupid Romans" (pl to en, translate.google.com)
masak rakudo: say "foo foo bar foo bar".trans( ["foo" => "one"], ["bar" => "two"]) 16:33
p6eval rakudo c548b8: OUTPUT«foo one.perl is not a Pair␤ in <anon> at line 2344:CORE.setting␤ in 'Cool::trans' at line 1␤ in main program body at line 22:/tmp/KFpN_QzIip␤»
masak huh?
jnthn wtf... 16:34
:)
I blame the last person who patched trans. ;)
masak I'm innocent. :)
didn't touch that line.
as far as I'm concerned, it never worked.
tadzik star: say "foo foo bar foo bar".trans( ["foo" => "one"], ["bar" => "two"])
p6eval star 2010.09: ( no output )
masak it did .perl in interpolation, but had no parens.
16:34 Woodi left
masak recompiles locally and tries again 16:35
16:36 ggoebel left
masak std: sub foo { ['a', 'b' 'c'] } 16:38
p6eval std a194beb: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/FQULxUMKtY line 1:␤------> sub foo { ['a', 'b' ⏏'c'] }␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 121m␤»
masak rakudo: sub foo { ['a', 'b' 'c'] }
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
masak submits LTA rakudobug
ash__ rakudo: say $*PERL<version>
p6eval rakudo c548b8: OUTPUT«2010.10-21-gc548b87␤»
ash__ rakudo: say $?PERL.version
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Symbol '$?PERL' not predeclared in <anonymous> (/tmp/0JeYsoEooC:22)␤»
ash__ S28 has a mistake i think 16:39
or $?PERL isn't right
dalek odel: 826917e | jonathan++ | dotnet/compiler/ROADMAP.txt:
[dotnet] Remove a couple of completed ROADMAP items.
odel: 4f8333c | jonathan++ | dotnet/compiler/ (2 files):
[dotnet] Get JnthnNQP able to parse and compile explicit invocants in method signatures.
odel: 14e2274 | jonathan++ | dotnet/compiler/PAST2DNSTCompiler.pm:
[dotnet] Tweak initialization ordering; build constants table a bit earlier on.
odel: 8f4d667 | jonathan++ | common/NQP/P6Objects.pm:
[common] Add a multi method Str(Mu:U $self:) { ... } to Mu so type objects can stringify. Finally! \o/
masak ash__: both are right, AFAIK.
ash__ oh
masak ash__: $?PERL is the Perl compiler.
ash__ so you can do $*PERL or $?PERL ?
masak ash__: $*PERL is the Perl runtime.
ash__ hmm okay
masak it makes sense, I promise :P
ash__ then, is $? not working right? 16:40
rakudo: $?PERL.version
masak we don't have much of $?
p6eval rakudo c548b8: OUTPUT«===SORRY!===␤Symbol '$?PERL' not predeclared in <anonymous> (/tmp/yCFPdOapBd:22)␤»
ash__ okay
jnthn nah, do not haz.
masak generally, we don't have much of compiler-time goodness.
s/compiler/compile/
16:41 hax joined
ash__ jnthn, i am blatantly coping you btw, trying to see if i can use your Perl 2 C# compiler to get a parser for nqp 16:41
jnthn :) 16:42
16:42 Axius left
jnthn Nice to be working on soemthing people find worth copying. :) 16:42
ash__ after digging through your code, PAST and POST make a lot more sense
hmm, wonder why the $*PID of parrot is always 0 for os x 16:45
16:47 Trashlord left
masak ash__: if you find out, you're eligible to comment on an RT ticket. :) 16:47
16:49 Trashlord joined
mindos1 masak: Replied to the greeting message. :P 16:49
It seems I can start from migrating CPAN modules. 16:50
16:51 mila__ joined
masak start small. Perl 6 is a bit different to Perl 5, and it's easy to get in over one's head. 16:52
I know I did, many years ago when I began. 16:53
16:53 ch3ck joined
masak I was going to port Getopt::Long, line by line. 16:53
that must have been before Perl 6 has MAIN, because after that it wouldn't have made that much sense. 16:54
moritz_ instead of just using sub MAIN :-)
masak s/has/had/
16:54 mila_ left
mindos1 I got the idea. 16:58
masak oh. my point was that I never finished the Getopt::Long portage. I got stuck in a sea of regexps.
and I didn't have a TDD habit back then, so I had no way of orienting myself. 16:59
mindos1 I meant, the idea of ``start small''
masak I think being motivated to reach some goal or other is the important part. I don't think I was particularly motivated to actually finish porting Getopt::Long. it was just a random way to try to contribute. 17:01
dalek kudo: 015d77b | masak++ | src/core/Cool-str.pm:
[Cool-str.pm] improved error reporting

There was a () missing on a .perl in an interpolation. This can never have worked properly. Does now.
17:02
mindos1 masak: I have tried to find some place to start doing something, otherwise never start. 17:04
masak mindos1: are you a student? or employed? what do you do for a living? 17:05
mindos1 s/start/get started./
masak : I am currently employed as a programmer. 17:06
masak mindos1: and do you write Perl 5 scripts to solve problems at work?
17:07 tylercurtis joined
mindos1 masak : Sometimes, very simple ones. 17:07
masak then maybe that's a good place to start with Perl 6 as well.
it's a way to put yourself into the picture, and make Perl 6 directly relevant to what you're already doing.
17:09 sylwek joined 17:10 sylwek left, Woodi joined
mindos1 masak : I will try to rewrite scripts in Perl6. Though it's a good starting point, but the intersection is quite small. 17:16
17:16 laler joined, jferrero joined
masak mindos1: yes. do keep us updated. 17:17
mindos1 Then I have chance to built rakudo on windows. :P 17:20
takadonet mindos1: jnth hacks rakudo on a windows machine
17:21 jferrero left
mindos1 masak: It's here, right? sourceforge.net/projects/parrotwin32/files/ 17:22
masak mindos1: jnthn will know. 17:23
jnthn I think they work if you install them in the right place 17:24
Otherwise, easiest toolchain for building it is the MS VC++ + ActivePerl
Or at least, that's what I do it with :)
17:25 Bzek joined
mindos1 jnthn : Thanks. I will try when I get reach to Windows. 17:25
17:26 jferrero joined 17:43 jferrero left, jferrero1 joined 17:52 jferrero1 left 17:59 Trashlord left 18:00 Trashlord joined
dalek odel: ca07d19 | jonathan++ | dotnet/runtime/ (4 files):
[dotnet] A little refactor to s-table to avoid having to do so many calls through lambdas; instead we only do that if dispatch/invocation is specialized in some way and mov ethe common path into a plain old method, which the runtime can better optimize.
18:02
odel: f43762d | jonathan++ | dotnet/runtime/Metamodel/SharedTable.cs:
[dotnet] Start to stub in some type check and type-check cache support.
18:04 laler left
masak rakudo: my $a = *; $a = "foo"; say $a 18:06
p6eval rakudo c548b8: OUTPUT«Whatever()<0x7d4de48>␤»
masak submits rakudobug
takadonet when is pmichaud coming back? 18:12
jnthn takadonet: Hard to know when he'll have loads of tuits, I suspect. I got to talk with hime a little a few days ago. 18:13
*him 18:14
18:14 rgrau joined
jnthn Hopefully soonish...I miss pmichaud++'s company and hacking. 18:14
masak misses pmichaud++ too 18:15
18:16 sftp left 18:17 sftp joined
masak nom & 18:21
18:26 Eevee joined 18:36 silug joined 18:42 molaf_ left 18:44 ash_ joined 18:45 uniejo joined 18:46 ash__ left 18:47 Trashlord left 18:50 uniejo left 18:51 Trashlord joined 19:02 tylercurtis left 19:42 sftp_ joined
tadzik yay, time to merge parrotgit 19:42
19:42 sftp left
colomon \o/ 19:42
tadzik phenny: "awe"? 19:44
phenny tadzik: Language guessing failed, so try suggesting one!
tadzik bah
19:46 Trashlord left 19:48 Trashlord joined 19:52 snearch joined
tadzik gil.di.uminho.pt/users/smash/rakudo-bench.html -- maybe primes should be moved to Heavy Scripts 19:53
sorear good * #perl6 19:58
colomon \o
tadzik: that's where they belong, for sure. but I thought smash was automatically sorting them... 19:59
sorear ash_: as a general rule, if $?FOO is not implemented specially (and very few of them are - $?POSITION comes to mind), it is treated as BEGIN { $*FOO } 20:02
ie it picks up the version of $*FOO visible to the compiler
(how this works if your compiler isn't written in Perl 6 has never been established) 20:03
20:11 wamba left 20:15 ggoebel joined
tadzik hello sorear 20:21
sorear hello tadzik 20:23
20:26 kanishka left 20:56 patspam left
takadonet hey all 21:03
tadzik o/ 21:04
takadonet tadzik: how's your perl 6 coming along?
tadzik takadonet: cool. Fixed few things in Module::Tools and... made Pls work on Module::Tools! 21:06
takadonet tadzik: nice url?
tadzik takadonet: of what? 21:07
takadonet tadzik: of the code? :)
s /\?//
tadzik :) github.com/tadzik/perl6-Module-Tools and github.com/masak/proto/tree/module-tools
takadonet thanks 21:08
colomon tadzik++ 21:09
takadonet indeed tadzik++
tadzik oh :) 21:15
I feel split()ed, every time I help pls, neutro becomes more and more obsolete :P 21:16
but it was its destiny after all :,) 21:17
we'll probably all feel this way when we will be contributing to Perl 7 21:18
moritz_ any objections to merging the parrotgit branch? 21:26
flussence will I have to fix my nightly compile cronjob for that?
moritz_ depends on your compile cronjob 21:27
you might need to rm -rf parrot/
once
flussence all it does right now is blow away everything anyway
moritz_ :-) 21:28
21:28 xinming left
flussence I suppose I can change that part to "git clean -dfx"... 21:28
masak and jnthn back from nom 21:29
colomon \o/
good noms?
takadonet what is noms?
jnthn Very good noms. 21:30
takadonet: It's a completely innocent concept!
tadzik takadonet: tip: nom nom nom
takadonet ....
ok
in other news passing more tests! 21:31
tadzik .u …
phenny U+2026 HORIZONTAL ELLIPSIS (…)
tadzik uhm, I thought that's THREE DOTS
dalek kudo: 3aa3c21 | moritz++ | build/gen_parrot.pl:
use git instead of svn in gen_parrot.pl (incomplete)
21:33
kudo: f0f2d33 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to something that can report a git-describe-ish revision

note that that's currently from a parrot branch (git_describe), so that parrot branch must be merged before we merge this rakudo branch
21:34 dalek joined, ChanServ sets mode: +v dalek 21:35 rgrau left
takadonet blog.laufeyjarson.com/2010/11/ugly-old-perl/ I don't like this guys solutions to 'Ugly old perl' 21:35
dukeleto moritz_: i have a bug in my git describe code for parrot. the cache is not updating
masak takadonet: here's an explanation of "nom": knowyourmeme.com/memes/om-nom-nom-nom 21:37
moritz_ dukeleto: noted 21:38
dukeleto: thank you anyway for implementing it in the first place
takadonet masak: for some reason I completely forgot what it was
hacking on Perl 6 does that sometimes
dukeleto moritz_: will hopefully have a fix soon
Tene .u ⋯
phenny U+22EF MIDLINE HORIZONTAL ELLIPSIS (⋯)
Tene .u ⋮
phenny U+22EE VERTICAL ELLIPSIS (⋮)
masak .u ⋱ 21:40
phenny U+22F1 DOWN RIGHT DIAGONAL ELLIPSIS (⋱)
colomon moritz_: reading your e-mail to p6l made me wonder... what happens to functions which take array arguments? 21:42
diakopter Jon Lang's reply makes the most sense to me. What is a "binding" without a container? 21:44
colomon diakopter: think I'm inclined to agree with that as well. 21:46
I'm just trying to take a step back, and consider what happens when you try to use packed arrays with the rest of p6. 21:47
diakopter is looking the other direction, from packed arrays toward the container(ick)iness 21:48
jnthn The good news about NQP is that it has no containers. :)
Oh, apart from arrays and hashes... 21:49
:-)
But it also has no binding. :)
masak \o/
jnthn Perl 6, otoh... :)
diakopter and yet.. it uses :=
jnthn crap!
It has no *assignment*.
The Cobra was REALLY good at the Indian restaurant...
masak good. assignment is evit.
s/evit/evil/
sorear it's Jon Lang
I have him mentally killfiled 21:50
diakopter :|
masak oh. harsh.
diakopter jnthn: but.. how does nqp have binding without containers? 21:51
TimToady I agree with Jon, actually. It should be assignment, not binding, since it's value semantics
diakopter exhales in relief
sorear TimToady: what does @a[0] return? 21:52
jnthn TimToady: I agree it's right in a touchy feely wya.
TimToady: But that doesn't help me for implementing it.
masak blinks and tries to think of something easier 21:53
jnthn The phrase "no way to bind a variable directly to a value" doesn't make any sense to me.
sorear well, the problem is that @a[0] has to return a container object which aliases the first slot of the compact storage 21:54
jnthn sorear: Well, that's one way
Apart from then we have to create an object
For every single assignment
sorear compact arrays are all about speed; requiring them to be implemented using ties is nonsense
jnthn And throw it away again.
So we'll end up saying "you can do assignment but use binding if you want it to be fast" under that model.
dukeleto moritz_: the but with the sha/git_describe cache not getting cleaned up was fixed, but there may still be more bugs
s/but/parrot bug/ 21:55
sorear And, IMHO, it's better just to forbid assignment
since it'll be a royal pain to code and serve no purpose other than misleading newbies
who will use it, not realizing they've shot themselves in the foot
TimToady I completely disagree. binding is aliasing.
sorear so we'll need a warning to tell people not to use it, which is even more code
TimToady not copying
sorear it's more like ::= 21:56
TimToady it's binding that should fail
sorear it creates an alias to the underlying value
jnthn TimToady: Can you explain *why*?
sorear and since it's an alias, assignment fails
jnthn TimToady: I would much prefer it be that assignment is the right answer here. 21:57
TimToady: I'm struggling with the model.
diakopter wants to explain my understanding, but waits
TimToady if you copy a value, as you must, then =:= cannot possible be true, since you have two different containers afterwards
you have to treat the lvalue as a C-style lvalue to get low-level assignment 21:58
which means it's just a pointer to raw (albeit typed) memory
binding is copying the location of the rvlaue, not the rvalue itself 21:59
I'm gonna have to run off in a bit, so I'll let diakopter take over :P 22:00
jnthn :P
diakopter egads
masak well? we're waiting. 22:01
TimToady bbl &
diakopter jnthn: in terms of implementation (on, say, CLR), I think of a my int @a as having the same value vs. reference semantics as the CLR model's
(as compared to a my Int @b or a my @c ) 22:02
jnthn Well, the way it works there is that you have a bunch of pointers rather than a bunch of values, I guess.
diakopter for which
a, b, or c
jnthn a is bunch of values, b and c it's full of references. 22:03
sorear it's possible to implement @a[0] = ... in the optimizer, sure
but I don't buy that
the optimizer shouldn't be needed to take advantage of low-level code 22:04
diakopter sorear: hang on..
jnthn Do we agree taht @a[0] = ... (pre-optimization anyway) is really &infix:<=>(@a[0], ...)
?
sorear jnthn: yes
22:05 crythias joined
moritz_ yes 22:05
masak yes
diakopter jnthn: sec..
jnthn OK. So @a[0] when evaluated has to return something that can be used as a container.
(if we want @a[0] to be assignable) 22:06
diakopter: go ahead
moritz_ well, if we want to use it on the LHS of a binding operator, it has to return something you can bind to 22:07
can you bind to a native int?
diakopter jnthn: @a[0] = 4; # passed to &infix:<=>(@a[0], 4) as CLR "ref" (equiv), right?
jnthn: sorry, not "ref", I mean that the values in @a aren't copied, the address of @a is sent. 22:08
jnthn diakopter: I wasn't seeing it as a ref equiv...
diakopter: It's just passed using normal Perl 6 semantics (e.g. signature binding) 22:09
sorear There is no &infix:<:=>
jnthn So yes, what's passed is whatever @a[0] produces
sorear: You consider &infix:<:=> as purely syntactic?
sorear yes
diakopter jnthn: in that case, I disagree with that 22:10
jnthn sorear: I'm inclined to agree on that.
sorear diakopter: You can't use CLR refs like that
jnthn sorear: Otherwise - as I think you've pointed out before - an extra level of indirection is needed.
moritz_ rakudo: say &infix:<:=>.WHAT
diakopter sorear: then I've miscommunicated.
p6eval rakudo 015d77: OUTPUT«Multi()␤»
jnthn moritz_: Aye, but Rakudo's binding is kinda wrong.
sorear diakopter: it
diakopter then there is no such thing as a compact array 22:11
masak jnthn: I thought an extra level of indirection *was* needed.
diakopter what's compact about an array of containers
sorear diakopter: it's because of CPS; CLR references can only live on the true stack and can't be saved in a coroutine
jnthn diakopter: I think it's a given that that compact arrays can't be arrays of containers.
diakopter sorear: I've miscommunicated; you're speaking about things that have nothing to do with what I'm talking about.
jnthn diakopter: I started the thread because I'm struggling to unify that and my current grasp (or lack thereof :-)) on assignment. 22:12
diakopter jnthn: my point is is then that you're saying compact arrays can't exist.
jnthn diakopter: Well, or that storage to them involves creating a fake container.
e.g. an on demend container that writes to the right memory location
diakopter sees no distinction 22:13
jnthn But I fear that'll get pricey in terms of execution time / temporary objects.
diakopter: The distinction is what your long-term storage looks like. The "on-demand container" can get GC'd immediately
I'd hope there could be a way to optimize it away too.
sorear Any Perl 6 design that requires more layers of indirection than the corresponding Perl 5 is automatically wrong
masak huh? 22:14
moritz_ sorear: so having a meta object model built in is wrong?
diakopter is thankful these large, tangly issues are [re-]surfacing
jnthn But I'd kinda prefer something that didn't rely on smart optimizations to have a shot at being efficient. Maybe I need to just cope with that though...
22:15 silug left
diakopter my contention is that the synopsis insists on having compact, fast arrays 22:15
masak aye.
jnthn Well, it certaily says compact. ;)
masak :)
sorear moritz_: Perl 5 has a MOP; Class::MOP is just a better API
jnthn But yes, speed matters. 22:16
masak sorear: when you say that Perl 5 has a MOP, which part in particular are you referring to? the blessed hashes?
diakopter compact, meaning the value is stored in them.
jnthn Right.
diakopter otherwise they are no different from non-compact.
lue ohai o/
masak lue: \o
diakopter jnthn: perhaps I see another way to explain @a[0] = 4; (more) 22:17
compiler knows @a is an array of natives, so it sends it to &infix:<=>() as something other than what you said above 22:18
jnthn diakopter: That's perhaps fine for the case where it knows, but it might not know. 22:19
my int @x; sub foo(@y) { ... }; foo(@x);
diakopter ok..? 22:20
masak or, put differently, dynamic method dispatch doesn't square with static special-treating of some of the method calls.
jnthn diakopter: IIUC you're suggesting a compile-time transformation.
diakopter: In the case above, @y is not know to be a natively typed array.
diakopter ah, yes, ok.
masak: yes, I see. 22:21
lue I assume the magic behind ufo is that things in [project]/lib get put in ~/.perl6/lib and so on?
diakopter in that case, it's "=" that must be treated specially
masak lue: nope.
diakopter (to bypass infix:<=>)
(and as a precondition, require that the array be a native one, check for it, and error if it's not) 22:22
lue [or is it just that good?]
22:23 rgrau joined
tadzik lue: it's generating the makefile so you can make/make test/make install 22:23
masak lue: ufo doesn't in itself copy files. ufo analyzes your project directory structure and creates a Makefile.
lue: the Makefile contains instructions for installing things, that is, putting them in ~/.perl6/lib
jnthn diakopter: I suspect there will be too many cases where we just can't know whether we have native or not to make a good guess. 22:24
diakopter I mean, check at runtime.
for any lvalue that ends in a [...]
=
jnthn Ah...
lue Hm. I'll play with ufo until the Makefile I get makes sense.
jnthn ponders that one
diakopter (for the ones not determinable statically)
masak lue: there's only one way to run ufo. you just run it, and it gives you a Makefile. 22:25
lue: if that doesn't work for you, I'd be happy to take a bug report.
lue
.oO(I can't seem to get what I mean to my fingers. hmmm...)
22:27
s/ufo/the project layout/
diakopter jnthn: obviously for loops & recursions, marking the types of variables will ALWAYS help Perl 6's performance tremendously, especially native ones, so it'll be HIGHLY recommended. :)
tadzik lue: there is a blag toast you may want to read 22:28
diakopter (to those who are writing loops and recursions)
tadzik lue: ttjjss.wordpress.com/2010/08/09/so-...-6-module/
masak lue: if you have any questions about how the project layout is "supposed" to look, I can probably give answers pretty quickly. and read tadzik++'s blag toast.
sorear you need to make up your mind quickly, otherwise I'll just ignore you and use my implementor's privelege to force my int $foo ::= 5 on the world
tadzik does anyone happen to own a hakama? 22:29
22:29 masonkramer left, masonkramer joined
diakopter what does ::= mean 22:29
sorear bind variable to read only value 22:31
diakopter ah
how does that help?
(I'm not doubting; I'm wondering)
jnthn diakopter: Yes, a model where adding type annotations allows more efficient code gen sits well with me. 22:32
sorear pugs: my $x; $x ::= 5; $x = 2
p6eval pugs: OUTPUT«*** Can't modify constant item: VInt 5␤ at /tmp/v4ypd9NPdk line 1, column 18 - line 2, column 1␤»
sorear it makes very clear that following assignment won't work
and eliminates aliasing concerns
diakopter how does that help with native array slots 22:33
jnthn diakopter: Maybe that's the answer. If you didn't tell Perl 6 enough that it can generate more optimal code for @x[0] = 5, it will fall back to the "I made you a container" thing. That's much nicer.
Saying "add type annotations to improve performance" is much nicer than "use binding not assignment to improve performance". 22:34
moritz_ where does the coercion in @x[0] = 5 happen?
jnthn moritz_: I expect it's just an unboxing, not a coercion.
moritz_: I've carefully kept those two separated out in 6model so far. 22:35
So @x[0] if @x was declared as int can have Int assigned to it just fine, but not Num. You'd have to coerce yourself in that case.
Just as you would for assigning a Num to a my Int @foo array. 22:36
I'm starting to feel something implementable forming in my head. :) 22:37
diakopter (yay)
sorear yes, this is implementable 22:39
jnthn++
jnthn diakopter++, sorear++, TimToady++, moritz_++, masak++ # hope I didn't miss anyone :)
masak you're welcome :)
22:39 hardik left
jnthn oh, jlang++ from the mailing list too :) 22:39
tadzik *a hand with a cookie comes from outside the stage*
masak tadzik: that was weird. never do that again. 22:40
jnthn tadzik: You just made myself and masak glad we weren't drinking anything at the time you said that... :P
diakopter lol
sorear never give N !%% M cookies to M people
tadzik :)
sorear unless you're a sociology grad student and want to start a fight
masak tadzik: it was like something out of Twin Peaks.
lue somewhat hopes someone'll be able to summarize what just happened to the language in a blag toast. Or be able to find the starting point of it all. 22:42
tadzik hm? 22:43
oh, you mean my "You" habit?
diakopter How is Consensus formed?
lue no, I meant the discussion above ^^^. [ tadzik: your You practice made me feel important. No need to address that :) ] 22:44
masak diakopter: they need to do way instain disagreement. 22:45
jnthn diakopter: When nobody can fright back!
masak who kill their consensus, who can't even frigth back?
tadzik lue: very little men... 22:46
phenny: "doceniać"?
phenny tadzik: "appreciate" (pl to en, translate.google.com)
tadzik ...appreciated that :)
lue
.oO(consensus is formed when everybody who disagrees is too tired to fight it anymore. How I sometimes wish that would happen in the US gov't.)
22:47
jnthn lue: Elect older people. ;)
masak std: 1, 2, 3, given 4 22:48
p6eval std a194beb: OUTPUT«ok 00:01 120m␤»
masak rakudo: 1, 2, 3, given 4
p6eval rakudo 015d77: OUTPUT«Could not find sub &given␤ in main program body at line 22:/tmp/ipNXhbYj50␤»
masak which one's right, STD or Rakudo?
masak submits rakudobug
jnthn rakudo: 42 given 5 22:50
p6eval rakudo 015d77: ( no output )
sorear rakudo: 1,
p6eval rakudo 015d77: ( no output )
jnthn std: given 4
p6eval std a194beb: OUTPUT«===SORRY!===␤Missing block at /tmp/EMboWECD4L line 1 (EOF):␤------> given 4⏏<EOL>␤Parse failed␤FAILED 00:01 118m␤» 22:51
jnthn std: 1, given 4
p6eval std a194beb: OUTPUT«ok 00:01 120m␤»
sorear looks like rakudo is missing terminator:sym<given>
jnthn Ah
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34"); say $/<B><E> # how would I accomplish this? 22:55
p6eval rakudo 015d77: OUTPUT«Method 'TOP' not found for invocant of class ''␤ in 'Grammar::parse' at line 6043:CORE.setting␤ in main program body at line 22:/tmp/SMf6yaxbRy␤»
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/<B><E>
p6eval rakudo 015d77: OUTPUT«Any()␤»
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say ($/<B> ~~ A.C) 22:57
p6eval rakudo 015d77: OUTPUT«Type objects are abstract and have no attributes, but you tried to access &!regex␤ in 'A::C' at line 22:/tmp/aePazrMOlL␤ in main program body at line 22:/tmp/aePazrMOlL␤»
22:57 whiteknight joined
sorear niecza: grammar A { token TOP { < c d > ( \d+ ) } }; say A.parse("c34").[0] 22:57
p6eval niecza 2484b4a: OUTPUT«Unhandled exception: Unable to resolve method say in class Match␤ at line 223 (SAFE say @ 6)␤ at line 1 (MAIN mainline @ 4)␤ at line 954 (SAFE G818ANONC @ 5)␤ at line 954 (SAFE module-SAFE @ 28)␤ at line 954 (SAFE mainline @ 1)␤ at line 0 (boot @ 1)␤ at line 0
..(ExitRu…
sorear niecza: grammar A { token TOP { < c d > ( \d+ ) } }; say ~A.parse("c34").[0]
p6eval niecza 2484b4a: OUTPUT«34␤»
sorear masak: is there any pattern to whether you want to be identified as Carl Mäsak or Carl Masak? 22:59
masak sorear: no; it depends mostly on whether I think the context will withstand the umlauts.
sorear: in IRC, feel more like my nick 'masak' than my last name Mäsak. 23:00
s/feel/I feel/
sorear there was a bit of confusion the other day on which name to use for you in - I think it was parrotgit
but never Maesak :) 23:01
masak preferably not.
23:02 Alias joined
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/($/.keys[0])<E> 23:02
p6eval rakudo 015d77: OUTPUT«invoke() not implemented in class 'Capture'␤ in main program body at line 22:/tmp/TSqsxtFlIv␤»
lue curses, I thought that'd work. 23:03
sorear masak: has the rakudobug been filed yet? 23:04
digging deeper, it looks like the problem is in HLL::Grammar.nulltermish
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); $a = $/.keys[0]; say $/($a)<E>
p6eval rakudo 015d77: OUTPUT«===SORRY!===␤Symbol '$a' not predeclared in <anonymous> (/tmp/tQJiXgbDIu:22)␤»
masak files rakudobug
sorear which doesn't check <?terminator>
masak sorear++
23:26 snearch left 23:27 ilogger2 joined, ChanServ sets mode: +v ilogger2
tadzik oh, that's duckduckgoable 23:29
sorear tadzik: ETAOIN SHRDLU 23:30
masak: I was referring to the 1, 2, 3, given 4
23:30 kanishka joined
masak oh. checking. 23:31
(so many bugs, hard to keep track)
no, didn't submit that one yet.
do you have any last words?
so to speak.
diakopter hee
flussence here's my revised nightly cron thing, in case anyone wants to borrow/criticise it: gist.github.com/675745 23:32
(there's probably a hidden bash thing that makes commands autodie instead of that mess...) 23:33
masak tadzik: hci.stanford.edu/~winograd/shrdlu/
tadzik yeah, found it 23:34
masak cool, eh?
tadzik yeah
masak I first read about it in GEB.
tadzik I think the Thank You - You're welcome part should be fairly easy to implement :)
masak I find it odd and fascinating that there's exactly one such project, and that it's from the early 1970s.
lue using the grammar I used above, trying A.parse("c34", :rule[0]); say $/{$/.keys[0]}<E> failed.
masak p6eval or it didn't happen :) 23:35
23:35 patrickas joined
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); $a = $/.keys[0]; say $/{$a}<E> 23:35
masak patrickas! \o/
p6eval rakudo 015d77: OUTPUT«===SORRY!===␤Symbol '$a' not predeclared in <anonymous> (/tmp/y54iJ6iQdJ:22)␤»
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); my $a = $/.keys[0]; say $/{$a}<E>
p6eval rakudo 015d77: OUTPUT«34␤» 23:36
patrickas LOLITSMASAK !
lue rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/{$/.keys[0]}<E>
p6eval rakudo 015d77: OUTPUT«34␤»
tadzik It's a bug! No, it's a feature! No, it's a masak's report!
masak seems to work fine. 23:37
lue Once again, something incomprehensible went wrong locally the first time [copy'n'pasting what I just p6eval'd into my local copy worked fine. Hmm. :/] 23:40
masak stamps, scowling, on a piece of paper
next!
patrickas masak: I solved two of the three issues we were having with closure ... but I'm pretty sure you'd want to poke your eyes out when you'll see the solution for not calling the closure block :-) 23:41
masak patrickas: sounds interesting.
(and awful, but still interesting)
jnthn puts on glasses to look at it
patrickas hehehe let me clean up and push somewhere 23:42
tadzik btw guys, anyone pulled and recompiled recently? 23:44
masak sorear: I now managed to piece together all your antecedents, so the final bug turned out to be quite informative. thank you.
s/bug/bug report/
lue hopes to finish a semi-usable Pod document viewer by the end of the day 23:45
masak lue: and you'll put it on github, I hope?
(or equivalent)
23:46 ash_ joined
tadzik lue: for Perl6? 23:46
lue masak: of course! tadzik: of course! [it's standalone though] 23:49
masak lue: looking forward to having a look at it. release early and often. 23:50
lue I just don't want to release something that won't run, that's all.
s/run/do its intended purpose to some extent/ 23:51
23:58 takadonet joined
masak lue: 'course. it's about the smallest possible working product. 23:58
sorear flussence: set -e
help set