»ö« | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 25 June 2010.
sorear \$c requires me to actually have capture objects, though 00:02
sorear would like a light weight way to not contextualize an argument
00:07 felliott left
TimToady that's what I think \$c does (though I'm not yet convinced that .item should mean much anything, since every object is already an item...) 00:07
lue y o hai o/ 00:08
TimToady I'm wondering what breaks if simply $c is the minimal contextualization? 00:09
or if we want to hide Parcels and Captures from the eyes of mere mortals, we could just put them outside of Any, and do an auto-thready thing to coerce them to a user-visible type 00:13
then your no-context is simply 00:14
Capture $c or Parcel $p
much like you can work with a bare Junction if you declare Junction $j
it would be really nice if we could keep things like .item out of the hot path of binding 00:15
jnthn: ^^^ might simplify a lot of things, but we'd have to generalize junctional autothreading to Capture/Parcel argument rewriting 00:17
but we've already talked about such a generalization for an Each type 00:18
jnthn TimToady: Generalizing dispatch fail-over doesn't immediately scare me.
phenny jnthn: 14 Jul 22:39Z <masak> tell jnthn &mkdir seems to create the cache/ dir without any permissions whatsoever here. so the fetch fails in proof-of-concept because git doesn't have enough permission.
jnthn phenny: tell masak upgrade to Windows 00:19
phenny jnthn: I'll pass that on when masak is around.
TimToady each is in S09:1063
jnthn
.oO( I'm gonna get smacked for that. )
TimToady: I'm not sure what the fallout would be otherwise.
TimToady: Keeping hot paths hot is, of course, a nice thing though.
TimToady will anything terrible break if we put Capture and Parcel outside of Any
might be worth an experiment 00:20
jnthn TimToady: I expect quite a lot would. (more)
lue jnthn: if pir::issame isn't right, then what is? [looking...]
sorear Why are we hiding Capture and Parcel, anyway?
jnthn TimToady: The question is whether anything breaks in a way that isn't easily patched up by having fallback.
TimToady basically, anything outside of Any is more of a lazy linguistic construct than a normal object
and Parcels and Captures can be viewed as lazy linguistic constructs
like Each and Junction 00:21
jnthn TimToady: It'd be good to get pmichaud++'s input.
TimToady in that case you should mention his nick...oh wait...
00:21 sftp left
jnthn TimToady: He has a better sense than I do of how Parcel fits into the overall model of listy things. 00:22
TimToady: On captures, I'm not sure what the fallback action would be.
TimToady it feels like a simplification to me, in the sense that it could entail removing a lot of introspection, which might be work
sorear Capture already itemizes to itself
00:22 sftp joined
jnthn TimToady: That is, if I pass a Capture where Any is expected, what happens. 00:22
sorear I think the only standard type with a non-identity .item is Parcel
00:23 sftp left
jnthn sorear: Yes, Capture .item's to itself for sure. 00:23
TimToady so maybe only Parcel needs to be considered linguistic
00:23 sftp joined
jnthn Aye 00:23
Passing Captures around is actually quite useful.
sorear but being able to define stuff with interesting item context behavior is useful for user code
TimToady it violates some principle or other 00:24
sorear TimToady: S06:2502? 00:25
00:25 plobsing joined
TimToady that could be handled by grabbing the whole arglist capture 00:26
jnthn TimToady: fwiw, here are the things in Rakudo that define an item method: Iterable, Junction, Parcel, Mu
TimToady and that seems powerful enough to me
sorear I don't understand
I don't see an arglist there
TimToady 1,2,3 is an arglist
jnthn TimToady: The one in Mu is identity 00:27
lue Are there any other comparison ops besides what's at docs.parrot.org/parrot/latest/html/...p.ops.html ?
jnthn TimToady: So is the one in Junction.
lue out of all of them, issame seemed like the 'most right' one.
TimToady Iterable or Iterator?
sorear TimToady: S06:2502 doesn't have 1,2,3? 00:28
jnthn TimToady: That just leaves Parcel (which Seqs it)
And Iterable which...er...I don't understand what that code is doing. :-)
TimToady 2502 is a blank line
jnthn TimToady: Certainly Iterable, not Iterator
TimToady but I see what you're pointing at
sorear jnthn: I understand Iterable.item 00:29
it's a Rakudo-specific hack
variables in Perl 6 can be listy or scalary; Iterable.item is used to clear the list bit 00:30
TimToady Iterable is supposed to just be a role that supplies a way to pull an iterator from a non-iterator
jnthn sorear: It's not really a hack as far as I can tell
sorear: As in, it needs to clear the flatten bit
sorear: That's just how Rakudo represents that information.
TimToady flattening is not really an attribute of an object, it's how it's interpolated and bound 00:31
sorear jnthn: the flatten bit is really part of the ref, not the object; it should be cleared in the binder
jnthn sorear: Note that it's setting the property on the container, not the object. 00:32
TimToady $x := @x, then $x never flattens, @x might iff bound to slurpy
jnthn (setprop, unlike most other v-table methods, is not transparent here)
TimToady: Anyway, it seems there's just two places that .item does something != identity. 00:33
TimToady: So it may not be epic upheavel. 00:34
TimToady: In the multi case we may be able to do some caching junction-style for the speed win too. 00:35
00:35 rgrau` left
jnthn (when Rakudo's multi-dispatcher falls back to exploding a junction, it installs a dispatch cache entry so the next time around it can jump straight to doing that) 00:36
TimToady really, the flatten bit is just an instruction to the next binding, so throwing it away is kinda out of band to the notion of context; it should just always happen in any case 00:39
lue rakudo: my $a = 3; my $b := $a; say "{$a.WHERE}, {$b.WHERE}" 00:40
p6eval rakudo c3f559: OUTPUT«116903632, 116903632␤»
TimToady it could even be done with a hidden arg in the capture that is always skipped and never bound 00:41
or a hidden bitmap in the capture that is thrown out after binding, say 00:42
and then only slurpies need look at the bitmap
and binding $x := @x doesn't raise the danger of propagating a flatten bit 00:43
jnthn Hmm
Sounds at least plausible.
TimToady p6 is all about attaching data to the right spot :)
00:44 justatheory joined
TimToady when you throw away the capture, you automatically throw out the flatten flags with it 00:44
and for 1,2,3 the bitmap can even be empty 00:45
and for a proto without a slurp, the bitmap need not be generated 00:46
lots of room to get down to very fast scalar binding
I've had .item in my crosshairs for some time now, but not a good explanation for why I dislike it
bbl & 00:47
00:49 gbacon joined
sjohnson "#perl6... the friendliest place on Earth (freenode)" -- official #perl6 slogan 00:56
ingy moritz_: you around? 00:57
sorear sjohnson: I approve. 00:58
Is &infix:<//> a macro?
ingy moritz_: how would you feel about ufo building .pir files in a blib/ instead of in lib/ ?
moritz_: the lib thing is annoying me mostly because of tab completion 00:59
ingy actually _uses_ perl 6 ALL DAY LONG!
sjohnson i gotta get into this perl 6 stuff
kind of afraid to try compiling rakudo
gcc and configure scripts seem to dislike me 01:00
ingy sjohnson: really?!
what os?
sjohnson they afraid me
ingy: desktop-wise i am a Win 7 x64 kinda guy... but for actual perl stuff, ubuntu
usually just log in and i built a perl 5 sandbox that i play around in very oftne
often*
ingy nod
sjohnson and my friends $cow, $pig, and $chicken are regulars there 01:01
and @farm; :)
ingy :)
rakudo is a pretty tame build imho
sjohnson adds a bit of fun to perl coding at work
tylercurtis sjohnson: git clone $RAKUDO_URL; perl Configure.pl --gen-parrot; make; # wait for the build to complete; # enjoy the goodness of Perl 6.-$n 01:03
sjohnson nice
wow
Configure.pl
a novel idea!
:thumpsup:
jnthn TimToady: You mentioned in a previous muttering something about Num.REPR (or maybe Int.REPR) as part of the storage constraint. However, if we want Num.REPR to be fixed to e.g. some representation that just stores a numeric value, how does that fit with people then wanting to mix things into it? Could be say that they can only mix things that add methods into such a thing, or subclass Num in a way that adds methods, not stroage? 01:08
lue jnthn: I noticed your comments on the use of issame. As far as I could tell, it's the 'most right' opcode. Any suggestions?
[ I'm wondering if using the .WHERE's is cheating and unreliable... ]
jnthn TimToady: Also further to your spec tweak the other day, I take it we can also assume that if some type T has repr contraint P6Object and S ~~ T, S must also have that same constraint? 01:09
TimToady: (If not, the whole exercise becomes vaguely pointless from the optimization angle, I fear.)
lue: Let me go check what Parrot's issame opcode does.
lue: yeah, it's fail for =:= 01:11
lue: the op does
if ($2 == $3)
$1 = 1;
else
$1 = VTABLE_is_same(interp, $2, $3);
That is, it delegates to the PMC's idea of same-ness rather than just a check on "is this the same thing"
(e.g. a reference-y check)
lue: re .WHERE - it's certainly a better approximation than issame. 01:12
lue: Parrot also has an op eq_addr
lue: or maybe eqaddr
lue rakudo: sub xyzzy($a) { say $a.WHERE }; my $b; xyzzy($b); say $b.WHERE 01:13
p6eval rakudo c3f559: OUTPUT«96505936␤96505936␤»
lue rakudo: sub xyzzy(\$a) { say $a.WHERE }; my $b; xyzzy($b); say $b.WHERE
p6eval rakudo c3f559: OUTPUT«96505936␤96505936␤»
lue > my $a = 3; my $b := $a; $a =:= $b 01:19
1
jnthn TimToady: On another question, how hidden are representations beyond just being a string name? I know that it's spec'd as a string argument to CREATE rather than P6opaque being something that appears as an object a user can play with. Do you envision that changing? It somewhat drastically affects the whole "what is the most primitive thing" question in a sense. 01:20
lue > say 3
Too many positional parameters passed; got 2 but expected 1
I think I broke say and print though :D
jnthn Congrats!
sjohnson jnthn: yo 01:22
lue I don't see how. I only modified src/core/operators.pm and src/cheats/relops.pir ...
01:22 skyheights joined
jnthn sjohnson: hi! 01:22
sjohnson how's that windows-based OS treatin ya 01:23
heh
jnthn TimToady: My feeling at the moment is that they're just something that is name-able from user-space and not much more. I guess this comes down to, is method dispatch more primitive than storage, and we have some object you can make calls on to set up storage, or is storage more primitive and we build on top of it something that can store methods and look them up. 01:24
sjohnson: Just fine. ;-) 01:25
01:25 payload1 joined
jnthn TimToady: Of course, if the repr things are strings it can go either way. If they're meant to be object-y then we kinda somehow probably want to have dispatch as the primitve thing and state is arrived at by those methods containing magical low-level things that can allocate state etc. 01:26
TimToady: I'm liable to call it as "representation is most primitive" since I think that can go faster at first blush, and it likely makes my life easier. But it'd be nice to know your latest thinking on the area. 01:28
lue: diff? 01:29
lue gist.github.com/476369 01:30
jnthn well. wtf. 01:31
lue: The only thing that uses it is RoleToRoleApplier.nqp 01:32
(in Rakudo core)
In src/metamodel/
It'd be odd for that to lead to the issue you've got though. :S
oh 01:33
also taht is nqp code
lue rakudo: say "something to clarify that this is an issue with my code"
p6eval rakudo c3f559: OUTPUT«something to clarify that this is an issue with my code␤»
jnthn which won't compile down to the &infix:<=:=> in Rakudo anyway
lue lemme switch branches and see something [I remembered the branches thing] 01:34
01:36 crythias joined, skyheights left
lue ...well, seems switching branches isn't helping me. It still has changes I put in my local branch. 01:39
jnthn lue: Did you commit them?
lue yes. I commited, then did git rebase xyzzy [local branch name]. Is there a command that could help you [like git status] ? 01:40
jnthn oh, did you want to switch branch? 01:41
lue yes, to see if I screwed up something regardless of my =:= changes
lue considers setting up a junk git repo to practice 01:42
jnthn git checkout master # switches to the master branch 01:44
lue: git takes some learning/getting used to :-)
lue don't you me gitting used to? :)
I am there, and I can tell something went wrong when vim src/cheats/relops.pir doesn't show =:= code I removed. 01:45
jnthn :S
lue lue@twigil:~/rakudo$ git checkout master
Already on "master"
Your branch and 'origin/master' have diverged,
and have 12 and 2 different commit(s) each, respectively.
jnthn And git diff shows nothing
?
lue lue@twigil:~/rakudo$ git diff 01:47
lue@twigil:~/rakudo$
jnthn I'm confused then.
sjohnson eval: print "4 + 4"; 01:48
lue I followed these commands: [branch xyzzy] git add [changed files]; git commit; git checkout master; git pull; git rebase xyzzy
sjohnson buu: how do you get buubot to start speaking in p5?
lue [ I'll ask on #git later, then ]
jnthn buubot: eval print "4 + 4"
sjohnson you haven't pushed
buubot jnthn: 4 + 41
ash_ lue: you have diverged, you need to re-merge the branch with the target branch you were working from
buu sjohnson: eval
sjohnson i tried eval, but no luck
buu What? 01:49
sjohnson buu: works in #perl though
buu buubot: eval: 2+2
buubot buu: 4
sjohnson oh
buu It's in address only mode here
sjohnson oh i c
jnthn lue: shouldn't have even needed the pull and rebase there, btw
sjohnson buu: eval: use v5.10.0
buubot: eval: use v5.10.0
buubot sjohnson: No output.
sjohnson buubot: eval: use v5.14.0
buubot sjohnson: ERROR: Perl v5.14.0 required--this is only v5.10.1, stopped at (eval 39) line 2. BEGIN failed--compilation aborted at (eval 39) line 2.
sjohnson nice
thank yous
lue lue@twigil:~/rakudo$ git merge master xyzzy 01:51
Already up-to-date. Yeeah!
I'll figure it out later, I'm trying to find out how to build my own oscilloscope right now.
jnthn Think it's time for me to sleep.
night all o/
lue goodnight o/ 01:52
sjohnson cya
git is a big deal.
i just got my Pro Git book in the mail today. work will pay for it
probably should have just read it online... buut i like smelling books 01:53
and owning one
01:54 hercynium joined
lue there should be a --navi option or some such, so that when you excecute a command that doesn't do anything, it tries to see what you meant to do :) 01:54
01:55 mikehh joined 01:56 ashleydev left
sjohnson there is a dry run command already 01:56
for some things
--no-commit
use that sucker when you're doing a merge test
oh 01:57
this site says you need something else maybe
stackoverflow.com/questions/501407/...run-option
ive definitely had a merge screw up on live data
and i was spanked
lue > git --navi merge master xyzzy 02:00
Nothing. HEY LINK HEY HEY [ >.< ] 02:01
02:01 cdarroch left, whiteknight left
sjohnson where are you getting navi from 02:02
this link i posted says to use two args, none of which say navi
--no-commit --no-ff
ahh, someone said this still changes stuff
not a true dry run yet
lue sjohnson: have you ever played The Legend of Zelda: Ocarina of Time ? 02:03
sjohnson i played it about a month ago 02:04
and didn't really get into it
busted out the ol n64
not a huge fan of the 3d zeldas
i prefer Zelda I && II for the NES
02:05 stephenlb joined
sjohnson kind the same way i prefer final fantasy 1-6 games, and nothing past 6 02:05
lue If you ever play the whole thing, then Navi's [the fairy's] annoying phrases will be imprinted in your head. 02:06
sjohnson hahaha 02:07
nice
now that makes more sense :) 02:08
git needs --dry-run, and --just-do-it! ... it's opposite
anyways gtg, cya!
lue bai o/
02:13 drbean_ joined 02:16 drbean left 02:18 drbean_ left
tylercurtis rakudo: say "\n\n" ~~ /\h+/ 02:18
p6eval rakudo c3f559: OUTPUT«␤»
02:18 drbean joined
tylercurtis rakudo: say ("\n\n" ~~ /\h+/).Bool; 02:19
p6eval rakudo c3f559: OUTPUT«0␤»
02:26 dukeleto joined
dukeleto hola 02:26
dukeleto is at PDX.pm, where we are having a "Rakudo feet-wetting"
02:26 duckyd joined, notbenh1 joined
tylercurtis hates something that he lives in what is essentially the middle of nowhere. 02:29
02:29 mikehh_ joined 02:30 mikehh left 02:35 drewk joined 02:42 sahadev joined 02:47 felliott joined
dukeleto perl6: say.time().WHAT 02:50
p6eval rakudo c3f559: OUTPUT«␤Method 'time' not found for invocant of class 'Bool'␤ in main program body at line 20:/tmp/n7e8trzSvF␤»
..pugs: OUTPUT«␤*** No compatible multi variant found: "&time"␤ at /tmp/tMPlrvowWL line 1, column 1 - line 2, column 1␤»
duckyd perl6: time().WHAT.say 02:51
p6eval rakudo c3f559: OUTPUT«Num()␤»
..pugs: OUTPUT«Rat␤»
duckyd perlcabal.org/syn/S32/Temporal.html#time
says Int
02:57 destiney joined
ash_ that might be a fossil (in the implementations) Temporal has been getting modified a lot recently 02:57
dukeleto what type should time() return? The spec says Int, Perl6::Doc say Rat and Rakudo says Num 02:58
duckyd ash_: you're thinking it will be Int in the [near] future?
ash_ yea 02:59
02:59 felliott left
duckyd thanks :) 02:59
02:59 felliott joined
ash_ r31678 changed it to an int, that was 12 hours ago 02:59
03:00 snarkyboojum left
ash_ yeah, that was a fairly recent change, it was Num for a long time though 03:00
03:01 isBEKaml left
duckyd cool, thanks 03:04
ash_ i think the correct way of looking at this problem is the spec is correct, the implementations are out of date :P by about 12 hours
03:11 masonkramer joined 03:17 ashleydev joined 03:21 snarkyboojum joined 03:23 snarkyboojum left 03:24 hercynium left
dukeleto how does one add something to proto.perl6.org ? 03:27
sorear commit it to the proto github repository 03:28
hugme: show proto
hugme sorear: the following people have power over 'proto': P⁣erlJam, T⁣imToady, [⁣particle], c⁣olomon, j⁣nthn, m⁣asak, m⁣oritz_, p⁣michaud. URL: github.com/masak/proto/
sorear ping one of those people
03:35 gbacon left 03:37 stephenlb left
dukeleto sorear++ 03:39
03:40 notbenh1 left 03:42 drewk left, felliott left 03:43 felliott joined 03:47 duckyd left 03:50 agentzh joined
tylercurtis .u smile 03:52
phenny U+2323 SMILE (⌣)
tylercurtis .u smiley
phenny tylercurtis: Sorry, no results for 'smiley'.
tylercurtis .u happy face
phenny tylercurtis: Sorry, no results for 'happy face'.
tylercurtis .u smiling face
phenny U+263A WHITE SMILING FACE (☺)
03:55 tedv left 03:56 mikehh_ is now known as mikehh 04:14 jaldhar joined, supernovus joined
mberends sorear: giving neicza a spin here, just had to clear out my own PERL6LIB ("cannot open unicode maps from ...") and it Just Worked through to test.pl. With mono 2.4.4. Kudos! 04:17
supernovus I have found an interesting 'bug' in the REPL. 04:19
If you 'use' a module that exports a subroutine, on its own line, the subroutine is not exported unless you 'use' it twice. 04:22
04:23 sahadev left
supernovus rakudo: use DateTime::strftime; say strftime('%A', DateTime.now) 04:24
p6eval rakudo c3f559: OUTPUT«Thursday␤»
tylercurtis rakudo: use Test; plan 5;
p6eval rakudo c3f559: OUTPUT«1..5␤# Looks like you planned 5 tests, but ran 0␤»
supernovus That works as it is on one line. It also works in a .p6 file on separate lines. But if you try to use it in the REPL on separate lines, it says it cannot find a subroutine named strftime(). Unless you do the "use DateTime::strftime;" twice. 04:26
I tested it with another class I just wrote that exports a subroutine, and the same thing. If you don't "use" the module twice, it doesn't find the exported subroutine. 04:30
04:32 snarkyboojum joined 04:36 crythias left 04:37 ashleydev left 04:40 sahadev joined 04:42 drewk joined
supernovus Bug submitted. 04:42
04:43 supernovus left 04:46 justatheory left
cxreg hm, would be nice to be able to pass a -j option to make in build/gen_parrot.pl 04:50
cxreg patches
sorear mberends: nice! for STD that's pretty good 04:55
mberends sorear: reading your source is also nice. Commented, unlike most @other ;) 04:57
sorear Rather less so than it should be 04:58
I've commented everything that I expect to myself forget
but a lot of the less nasty stuff needs more exposition
mberends It's a good start. Yes, the holes are also evident. 04:59
cxreg :q 05:00
hugme hugs cxreg, good vi(m) user!
cxreg oops
mberends remembers to poke Zavolaj 05:02
sorear er.
mberends: what stage broke? afaict PERL6LIB should always be overwritten
05:03 sahadev left
cxreg meh, this is harder than expected. all opts to that script go directly to parrot's Configure.pl which doesn't care about make opts 05:03
TimToady phenny: tell jnthn I don't think reprs need to be types, but I hesitate to make the strings too simply because we might want to make them objects of their own type someday. So maybe just enum constants so we don't need quotes.
phenny TimToady: I'll pass that on when jnthn is around.
sorear cxreg: if you're doing anything interesting I recommend NOT using --gen-parrot 05:04
build your own Parrot from svn.parrotcode.org sources, perl Configure.pl --optimize, make, sudo make install 05:05
cxreg $interesting ?
TimToady phenny: tell jnthn re deriving with a different repr, I've always assumed if we detected a repr mismatch we'd emulate derivation with delegation at that point somehow, so as long as classes agree, they can optimize together
phenny TimToady: I'll pass that on when jnthn is around.
cxreg sorear: isnt that what gen-parrot does?
sorear: i just read the code, it sure looked that way
TimToady phenny: tell jnthn the same thing presumably happens when we cross repr boundaries that happen to span language boundaries
phenny TimToady: I'll pass that on when jnthn is around.
mberends sorear: with a rogue PERL6LIB niezca make failed at `cd stage0 && ./std CORE.setting` 05:06
sorear ah. that's deep in the STD.pm6 build system
not sure if I can sanely fix it
STD.pm6 is really not designed to be a reusable software component 05:07
mberends right
sorear remembers that mberends is no stranger to this problem (*cough* vill) 05:08
mberends heh
cxreg wonders if jnthn ever got a chance to kick zavolaj
05:08 felliott left
mberends no, zavolaj was last kicked by jnthn in April 05:09
lue hai o/ 05:13
mberends cxreg: if your Zavolaj appears to be br0k3n, is the timestamp on your installed NativeCall.pir older than your parrot? That could be a Bad Thing. 05:14
05:14 snarkyboojum left 05:23 snarkyboojum joined
ingy greetings \o 05:24
tylercurtis Hello, ingy.
mberends \o
sorear Greetings, ingy. 05:25
+o mberends
ingy :)
sorear ok that's a new one.
05:26 sorear sets mode: +o mberends
sorear (/msg #perl6 ...) 05:26
mberends loves the taste of cinnamon buns (@) in the morning.. 05:27
ingy still needs to get his rakudo waiver thing to pmichaud 05:28
cxreg mberends: i rebuilt it a few times
ingy maybe I'll hand deliver at oscon.
sorear What is the correct signature for &infix:<=>
?
ingy _crickets_ 05:32
snarkyboojum chirps 05:34
sorear the crickets around here are all dead. 05:40
snarkyboojum keels over 05:41
mberends cxreg: Zavolaj is broken here too. The symptoms changed after rebuilding NativeCall.pir, most likely because of a recent change in Parrot or Rakudo. I'll try to bribe jnthn++ to take a look. 05:43
moritz_ good morning 05:47
mberends \o moritz_ 05:48
05:48 PZt left
sorear good morning 05:52
moritz_ ingy: re blib/, I'm all for it 05:59
05:59 snarkyboojum left 06:02 cjk101010 joined
cxreg mberends: "expected OpaquePointer but got Failure instead" 06:03
mberends: look familiar?
mberends cxreg: exactly
cxreg mberends: yeah, i already asked jnthn, he had some ideas 06:04
my Failure $self; # emo perl 6 06:06
06:09 cotto left, uniejo joined 06:11 tylercurtis left
sorear Compilation failed: 1012 error(s), 0 warnings 06:14
moritz_ cxreg, mberends: I have two ideas what could be the cause 1) the lexicals/closure fix and 2) different containerization (might need a pir::descalarref__PP($ojb) in some places) 06:17
cxreg it's probably a good opportunity for me to poke a little deeper anyway 06:19
mberends moritz_: those look like good hunches, especially 2) so I'll try a patch 06:22
moritz_ rakudo: say 1
p6eval rakudo c3f559: OUTPUT«1␤»
moritz_ mberends: there's also a suspicious pir::clone in NativeCall.pm6:101 06:23
rakudo: die 1
p6eval rakudo c3f559: OUTPUT«1␤ in main program body at line 20:/tmp/DROjpwICNW␤»
moritz_ rakudo: ...
p6eval rakudo c3f559: ( no output ) 06:24
06:24 snarkyboojum joined
cxreg what's |$c mean? 06:24
moritz_ interpolation of $c into a signature 06:25
cxreg ah
moritz_ rakudo: sub f() { ... }; f(); say "alive";
p6eval rakudo c3f559: OUTPUT«alive␤»
moritz_ ah, it's probably a soft failure 06:26
rakudo: sub f() { ... }; say f(); say "alive";
p6eval rakudo c3f559: OUTPUT«alive␤»
cxreg man, NativeCall is some real wizardry :/
moritz_ but *that* should die
cxreg what is the general consensus for Perl 6 code that uses pir:: stuff, wrt portability and other implementations? should such code be clearly marked "Rakudo ONLY!"? 06:28
moritz_ I'd say that pir:: marks it as Raudo only :-)
I avoid it in high-level modules 06:29
cxreg i guess if someone wanted to be clever, they could write wrappers in the pir:: space that emulated it 06:30
mberends unfortunately pir::based code seldom gets checked by the test suite. It would be very Rakudo specific. 06:31
sorear pir:: stuff isn't Rakudo only; it's Parrot only
pmichaud says that post R* Rakudo is going to become less Parrot-specific 06:32
cxreg hr m
sorear i.e. other VMs will potentially be supported
mberends yes, there might be nqp::stuff in future as well for greater portability 06:33
moritz_ would prefer vm:: 06:35
cxreg vms::
sorear oh dear no not vms::
moritz_ OH NOEZ
cxreg :-)
pugssvn r31692 | lwall++ | [t/spec] mark various tests that intentionally declare things that are not used 06:43
06:45 PZt joined
sorear #OK not used ? 06:45
is that like /*ARGSUSED*/ ?
TimToady it says suppress it if there's a warning like $x is declared but not used 06:52
which STD finds many of in the test suite
because tests are strange that way 06:53
especially tests that are testing binding and multis
std: multi foo (Str $s) { 'Str' } # many tests look like this 06:55
p6eval std 31691: OUTPUT«Potential difficulties:␤ $s is declared but not used at /tmp/oSbqqm2MdC line 1:␤------> multi foo (Str ⏏$s) { 'Str' } # many tests look like th␤ok 00:01 115m␤»
TimToady std: multi foo (Str $s) { 'Str' } # many tests look like this #OK not used
p6eval std 31691: OUTPUT« not used␤ok 00:01 111m␤»
TimToady whoops, looks like theres a debugging message in there somewhere... 06:56
sorear niecza: sub foo($) { 'Str' } 06:57
p6eval niecza: ( no output )
06:57 baest joined
sorear # shouldn't the tests look like these? even my two-week-old compiler supports that 06:58
TimToady sometimes they're testing it both ways
and changing the tests that drastically isn't my main concern at the moment, esp if the arg names are serving as documentation 06:59
and maybe it points out that we need a way to say 'anon' inside a sig somehow 07:00
or maybe they could just turn into :s($) 07:01
but I recognize that #OK is a bit kludgey 07:02
I'll want it for other warnings too though
like testing to see if 000042 has the value 42 :) 07:03
saaki maybe 34? =o 07:06
sorear I'm not terribly opposed to magic comments, but I'd like them to be more recognizable 07:07
all caps and no spaces in the lint(1) tradition is what I'd naturally take
07:08 xabbu42 left 07:11 meppl joined
TimToady #OK is all caps and no spaces :) 07:12
moritz_ rakudo: multi f(Str $) { 'Str' }
p6eval rakudo c3f559: ( no output ) 07:13
TimToady and you can use it by itself to suppress any warning, but it helps to say which warning you're suppressing
moritz_ std: multi f(Str $) { 'Str' }
p6eval std 31692: OUTPUT«ok 00:01 114m␤»
moritz_ std: multi f(Str $x) { 'Str' }
p6eval std 31692: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/gnom0i58_z line 1:␤------> multi f(Str ⏏$x) { 'Str' }␤ok 00:02 111m␤»
07:13 _pid joined
sorear TimToady: under what circumstances is the optimizer allowed to break CALLER::<> ? 07:15
e.g. my $bar; if $foo { CALLER::<$bar> } # should this work? 07:16
sub cow { CALLER::CALLER::<$bar> }; my $bar; if $foo { cow; } # how about this?
07:20 _pid left
TimToady well, technically the caller of the block is statement_control:<if>, which has no $bar 07:22
though I guess caller only really looks at routines 07:23
so nevermind that
sorear I thought statement_control was a macro and had no associated CallFrame
TimToady sure, that sort doesn't matter since caller ignores blocks anyway 07:24
*sorta
but cow has one too many CALLERs in the first place 07:25
and $bar isn't marked as dynamic, so isn't visible anyway
CALLER::<$_> would presumably be visible though, and make it difficult to inline cow 07:26
not impossible though
sorear CALLER skips over blocks?
TimToady S06:2426 07:31
well, 3 lines below that
S04:649 is probably incorrect, if the block is marked as inlined according to S06 07:32
anyway, the larger intent is that only "real" calls get a CALLER scope, for some definition or other 07:34
presumably an inlining optimizer would have to undo CALLER to OUTER or MY 07:35
sorear well, the interesting case is the second one I gave, I think
if $foo { some-function; } # what if some-function calls callframe? can it observe the fact that the if creates a dynamic scope? 07:36
pugssvn r31693 | lwall++ | [STD] fix some 'not used' warning buglets 07:37
TimToady well, something has to decide to run the thunk 07:38
but I don't think we can guarantee that callframe will see every possible frame that the optimizer would like to get rid of
in some sense it just has to deal with what's there, even you've done tail recursion optimization, for instance 07:39
alternately we record some number in the current callframe that says how many are missing :)
in general we want to be identifying call frames by pattern match or id, not by position 07:40
I'm inclined to push the defaults in favor of the optimizer, and require explicit pessimization where required by the foibles of the code 07:42
sorear ehehehe... I had my $x defaulting to 'ro' 07:47
no wonder it exploded when I implemented ro checks
TimToady well, that's good for SSA style, at least :)
I'd better go thunk on my pillow 07:48
sorear 'night
TimToady zzz &
sorear niecza now has all tests passing again
w/ item and list context implemented
dalek ecza: 432a3a1 | sorear++ | Kernel.cs:
Describe structure of new lvalue stuff
07:49
ecza: 4d47d8d | sorear++ | Kernel.cs:
implement new variable + bind handling
ecza: 2e6fcc0 | sorear++ | Kernel.cs:
Eliminate .item

and turns into Seq during fallback.
ecza: cf20652 | sorear++ | (2 files):
rename niecza to niecza_eval to avoid collision with Niecza/ (snarkyboojum)
ecza: aeb0302 | sorear++ | (10 files):
Yak shave until it builds. Tests still somewhat broken.
ecza: b9f8bd4 | sorear++ | (2 files):
my $x really shouldn't default to ro. All tests pass again
07:50 plobsing left
sorear moritz_: you can pull again; note that the niecza runner script has been renamed for HFS+ compatibility 07:51
moritz_ pulls 08:05
pugssvn r31694 | moritz++ | [evalbot] track name change in niecza 08:09
dalek ecza: f68a8eb | sorear++ | CodeGen.pm:
Separate codegen ops into internals, primitives, and derived
08:13
moritz_ evalbot control restart 08:15
08:15 p6eval left 08:16 p6eval joined
moritz_ niecza: say 2 08:16
p6eval niecza: OUTPUT«2␤»
moritz_ so it picked up the new executable name
08:17 sorear sets mode: +o p6eval
sorear er 08:17
08:17 sorear sets mode: -o+v p6eval p6eval
sorear niecza: 1 = 2; # NEW FEATURE 08:18
p6eval niecza: OUTPUT«␤Unhandled Exception: System.Exception: assigning to readonly value␤ at Niecza.Kernel.AssignC (Niecza.Frame th) [0x00000] in <filename unknown>:0 ␤ at Niecza.Frame.Continue () [0x00000] in <filename unknown>:0 ␤ at EntryPoint.Main () [0x00000] in <filename unknown>:0 ␤"mono --de…
moritz_ sorear: should I filter out these over-long backtraces in p6eval? 08:20
sorear moritz_: if you want. I consider them a bug
moritz_ back when rakudo emitted parrot backtraces, I would simply cut off after the first line
sorear niecza doesn't use the CLR stack, so the fact that it uses CLR exceptions is broken 08:21
but I don't have the p6 stack unwinder working yet
08:21 Mowah joined
sorear niecza: 2.cow # watch as the exception unwinder itself crashes! 08:22
p6eval niecza: OUTPUT«␤Unhandled Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.␤ at System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) [0x000a8] in /home/p6eval/perlesque/mono/mono-2.6.4/mcs/cla…
sorear aww, it cut off before showing the 'Throw' in the backtrace
moritz_ sorear: I'm curious, what's your overall plan for niecza? slap on more features and attract users? or explore some cornerns of the spec? speed? all of them?
sorear in the very long term, all of them 08:23
in the merely long term, I'm trying to get STD.pm6 to run on it
moritz_ so, bootstrapping 08:24
sorear yes
moritz_ likes that
sorear lists are a big priority right now because of regex backtracking
moritz_ (not that I have any say in it...)
sorear once lists are working, other things that STD definitely needs are roles, multimethods, and regexes 08:27
and packages
08:32 Mowah left
cxreg Perl 6: There's An Op(erator) For That(tm) 08:37
08:48 dakkar joined 08:50 Mowah joined, thebird joined 08:56 timbunce joined, clintongormley joined, xabbu42 joined 09:01 ejs joined 09:12 dimid_ joined, xabbu42 left, christine left, HarryS left, pnate left, zachy left, szabgab left, snarkyboojum left, uniejo left, drewk left, lue left, Lorn left, pmichaud left 09:13 zachy joined 09:14 HarryS joined 09:18 pugssvn joined, christin1 joined, hudnix joined, snarkyboojum joined, uniejo joined, drewk joined, christine joined, lue joined, Lorn joined, proller joined, pnate joined, szabgab joined, pmichaud joined, BinGOs joined, gabiruh joined, Juerd joined, m6locks joined, phenny joined, cxreg joined, frodwith joined, wolverian joined, Woody2143 joined, lestrrat joined, ingy joined, meteorjay joined, DemoFreak joined, jnthn joined, card.freenode.net sets mode: +ovoo pmichaud phenny ingy jnthn 09:19 christine left 09:21 xabbu42 joined 09:24 Guest79408 left 09:33 timbunce_ joined 09:34 ejs left 09:35 timbunce left, timbunce_ is now known as timbunce 09:37 dju left 09:39 dju joined 09:40 dju left 09:41 dju joined 09:42 dju left, dju joined
jnthn morning o/ 09:43
phenny jnthn: 05:03Z <TimToady> tell jnthn I don't think reprs need to be types, but I hesitate to make the strings too simply because we might want to make them objects of their own type someday. So maybe just enum constants so we don't need quotes.
jnthn: 05:05Z <TimToady> tell jnthn re deriving with a different repr, I've always assumed if we detected a repr mismatch we'd emulate derivation with delegation at that point somehow, so as long as classes agree, they can optimize together
jnthn: 05:05Z <TimToady> tell jnthn the same thing presumably happens when we cross repr boundaries that happen to span language boundaries
moritz_ \o morning 09:45
sorear morning jnthn 09:48
arnsholt std: sub foo is bar { ... } 09:50
p6eval std 31694: OUTPUT«ok 00:01 111m␤»
arnsholt std: sub foo is bar, blech { ... }
p6eval std 31694: OUTPUT«===SORRY!===␤Malformed block at /tmp/lLRSVqu1wH line 1:␤------> sub foo is bar⏏, blech { ... }␤ expecting any of:␤ circumfix␤ routine_def␤ trait␤Parse failed␤FAILED 00:01 107m␤»
arnsholt std: sub foo is bar, blech { ... }
p6eval std 31694: OUTPUT«===SORRY!===␤Malformed block at /tmp/aeACtafx1w line 1:␤------> sub foo is bar⏏, blech { ... }␤ expecting any of:␤ circumfix␤ routine_def␤ trait␤Parse failed␤FAILED 00:01 107m␤»
arnsholt Whoops. Hit arrow up instead of shift.
09:54 dju left 10:03 Ross joined, xabbu42 left 10:04 lestrrat is now known as lest_away
xinming hmm, Maybe a dumb quesiton, Since perl 6 is still in design phase, Which means there might be a big change on syntax, How about rules? Is rules stabilized as I found parrot use it extensively. 10:04
moritz_ xinming: grammars/rules are rather stable these days 10:05
mathw We're well past the stage where the syntax is being modified
moritz_ xinming: they are not frozen (ie no guarantuees), but most changes these days are minor 10:06
mathw: *cough*
xinming Oh, ok, thanks, In fact, I found I need to learn more regex, which reminds me perl 6 rules. :-)
mathw moritz_: in any large-scale significant manner, most days :P
moritz_ "Mastering Regular Expressions" is a great book
xinming That's why I asked. :-)
mathw but I don't think we're in danger of suddenly upping sticks and rewriting Perl 6 to use s-expressions 10:07
moritz_ mathw: yeah, that's true
xinming moritz_: So, the rule engine is now implemented by parrot already, right?
in c
moritz_ xinming: not in c
xinming: there's a compiler for a subset of Perl 6, called npq-rx 10:08
xinming hmm, well, maybe I missed something.
sorear there is no rule engine
moritz_ it supports some basic Perl 6, and many regex features
sorear rules are compiled to the same bytecode as all other perl 6 syntax
moritz_ and it's mostly written in nqp-rx, so it's bootstrapped
sorear a*b just means $¢.STAR(-> $¢ { $¢.one('a) }).map(-> $¢ { $¢.one('b') }) 10:09
(in the abstract; also the method names used are NOT spec) 10:10
moritz_ ugh. Perl 5 syntax.
jnthn Opinions on rt.perl.org/rt3/Ticket/Display.html?id=76514 ? 10:25
Tempted to reject as "not a bug".
Default values should be subject to checking too.
moritz_ +1 10:26
jnthn (and sticking in the Range type object is just a kinda default value)
moritz_ the correct solution is to supply a custom default value, of cause
jnthn OK, thanks. :-) 10:30
TiMBuS id think the typecheck would only be ran if an argument was passed? 10:33
moritz_ rakudo: say 5 div 2
p6eval rakudo c3f559: OUTPUT«2␤»
moritz_ TiMBuS: why?
jnthn TiMBuS: No, it should apply to the default value too. 10:34
TiMBuS: Otherwise you can't trust what the constraints in the signature say.
moritz_ TiMBuS: a type check is there to ensure that the value conforms to some expectation of the routine
violating these expectations at a whim seems like a very bad idea to me
jnthn Same here.
TiMBuS maybe I have it wrong. does a '?' denote an optional parameter 10:35
jnthn And as I mentioned in the ticket, there's two easy solutions.
TiMBuS: Yes.
TiMBuS: But note that if not passed, it has to take up *some* value.
TiMBuS: And the default value it takes up needs to be in line with the type constraints placed on the parameter.
Otherwise we get wonders like 10:36
sub foo(Int $x = "oh lol") { }
rakudo: sub foo(Int $x = "oh lol") { } 10:37
p6eval rakudo c3f559: ( no output )
moritz_ fun for the static type checker if we ever write one :-)
jnthn rakudo: sub foo(Int $x = "oh lol") { }; foo()
p6eval rakudo c3f559: ( no output )
jnthn rakudo: sub foo(Int $x = "oh lol") { }; foo(); say "alive"
p6eval rakudo c3f559: OUTPUT«alive␤»
moritz_ oh ouch
jnthn Oh..
moritz_ now *that's* a bug
jnthn I still have that ticket open in my browser window as in progress :-)
I thought I'd finished fixing it
I think I only got half way. 10:38
TiMBuS I didnt take default declarations into account. That makes sense
jnthn rakudo: sub foo(Int $x?) { say $x }; foo()
p6eval rakudo c3f559: OUTPUT«Int()␤»
jnthn Yeah, I fixed that half of the problem.
Which is pre-req to fixing the other one.
rakudo: say *.WHAT 10:39
p6eval rakudo c3f559: OUTPUT«_block65␤»
jnthn I guess .WHAT is macro-ish and shouldn't curry. 10:40
dalek ecza: 750e66a | sorear++ | (2 files):
Remove premature and heavily code duplicating Op context optimization
10:50
ecza: 040a58b | sorear++ | (5 files):
Add a new tree-based IR between Op and CodeGen

syntax for low-level code, and allow more CodeGen refactoring.
10:59 gbacon joined 11:13 sahadev joined
sorear What's the list method for sorting and removing duplicates? 11:17
sorear perl6 -e '.say for slurp("Decl.pm").comb(/"CgOp::" w+/)' | sort -u 11:18
sorear is starting to naturally use p6 in the toolkit
jnthn sorear: .uniq 11:19
sorear awesomes 11:20
11:21 pmurias joined
jnthn > sub circumfix:<` `>($n) { say 'oh lol ' ~ $n }; `42` 11:21
oh lol 42
sorear out. 11:30
sbp rakudo: sub circumfix:<` `>($n) { say 'oh lol ' ~ $n }; `42` 11:34
p6eval rakudo c3f559: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 90␤===SORRY!===␤syntax error ... somewhere␤»
jnthn sbp: ENOTYETPUSHED ;-) 11:37
11:37 arnsholt left
sbp WINSTANTGRATIFICATIONREQUIREDINMODERNAGE 11:38
jnthn rakudo: say INIT 42 11:44
p6eval rakudo c3f559: OUTPUT«␤»
11:47 masonkramer left 11:48 masonkramer joined 11:49 seeee joined, sahadev left 11:50 seeee left 11:54 agentzh left, pmurias left
mberends hai jnthn, seen the Zavolaj breakage discussion? I tried some NativeCall tweaks, without success. 11:55
jnthn mberends: Ah. :/
mberends: Any idea where it's broken?
mberends: Just return values, or is it not making calls at all? 11:56
mberends it's probably the return value, because an error sometimes only appears on a second native call. 11:57
jnthn OK 11:58
frettled mberends: O hai, Hai!
mberends \o frettled
11:59 envi^home joined
mberends
.oO( would anything stop us calling fork() using Zavolaj? )
12:00
12:00 JimmyZ joined
jnthn mberends: ew! 12:00
12:00 isBEKKaml joined
jnthn mberends: Technically, no. 12:00
12:01 isBEKKaml left
jnthn mberends: However, quite what'd happen after that is a whole different matter. 12:01
mberends jnthn: no, not you! just Un*x users!
jnthn :P
12:01 isBEKaml joined
isBEKaml hi, #perl6! :) 12:01
jnthn mberends: Doesn't you has portable Makefile foo?
*fu
12:02 rlb3 joined
jnthn mberends: I started getting pls to work on Win32 yesterday 12:02
mberends: And got to the point where it's busted 'cus the generated makefile also is.
(Uses unportable features.)
mberends jnthn: it brings back memories of porting proto to Win32. nmake, dmake schmake. 12:03
12:03 takadonet joined, xabbu42 joined
takadonet morning all 12:03
jnthn mberends: My other thought was "why generate a Makefile, why not just run commands"
mberends jnthn: for many tasks ExtUtils::Command is enough 12:04
jnthn: but you drifted very close to the "let's design yet another make replacement" meme 12:05
isBEKaml memes must die! :) 12:06
jnthn mberends: I accidentally the suggestion, but I've no idea how ideal toolchain is formed.
mberends jnthn: some say world domination by one system is the answer 12:07
jnthn mberends: seriously though, saying "we're gonna run these series of commands" rather than "we're going to write a Makefile that runs these series of commands" hardly feels like re-inventing make. :-)
12:08 skids joined
mberends jnthn: :-) pls is the new make. There needs to be a Plsfile spec. 12:10
pugssvn r31695 | jnthn++ | [t/spec] wtf? How'd this end up as Multi, not multi? Corrected test. 12:12
jnthn mberends: :P
12:13 Kodi joined
jnthn mberends: Well, at the moment pls either (1) runs the Makefile that it finds or (b) generates a Makefile and runs that. 12:13
mberends jnthn: it's fine to eliminate make from (b) 12:14
jnthn mberends: Would you consider that more desirable than trying to teach pls to write portable makefiles? 12:15
pugssvn r31696 | Kodi++ | [S32/Temporal] Permit day-of-month on Dates. 12:18
mberends jnthn: no, I would rather teach pls to write portable makefiles. Despite the general correctness ufo, there are cases where a Makefile template is useful and hard to replace. 12:19
moritz_ uhm, isn't day-of-month just .day?
Kodi: ^^
Kodi moritz_: Yes.
moritz_: So why, you ask, does it exist? 12:20
moritz_: Because masak likes it, basically.
jnthn mberends: OK.
moritz_ Kodi: as long as .day continues to exist, works for me :-)
Kodi I figure, if we're gonna have it all, it should allowed on both DateTimes and Dates.
jnthn mberends: I'll see what I can do in that directoy - help welcome.
mberends: I think you're more clueful than I on such things.
mberends Kodi, moritz_ : but Tene doesn't like aliases: irclog.perlgeek.de/perl6/2010-07-14#i_2554867 12:22
Kodi mberends: Yeah, I'm not so crazy about them either.
dalek kudo: 3615ece | jonathan++ | src/Perl6/Grammar.pm:
First cut at implementing custom circumfixes. Also, for things we don't know how

syntax error.
kudo: 727782e | jonathan++ | src/Perl6/ (2 files):
Add term:sym<circumfix> as found in STD, which we were missing in the Rakudo
12:25 felliott joined
mberends jnthn: portable Makefiles seems to involve guesswork and trial/error about what @other-make-utils are prepared to swallow. The lowest common denominator functionality is usually too low, then it becomes a gamble whether a particular command/function will fly everywhere. 12:26
jnthn mberends: joy. 12:28
mberends jnthn: surprisingly, $(shell yada) (from zavolaj's Makefile) has not had any complaints
mathw Make is not a cross-platform system 12:29
It relies too much on the underlying platform to do stuff
It's pretty awesome though :)
colomon wasn't there a make functionality replacement tool in CPAN? 12:30
isBEKaml hmm, ExtUtils::MM doesn't work right here?
MakeMaker?
12:30 JimmyZ_ joined 12:31 mariano__ joined
jnthn mberends: I should take a look at that one 12:31
moritz_ ExtUtils::MakeMaker abstracts away system commands 12:33
12:34 JimmyZ left, JimmyZ_ is now known as JimmyZ 12:44 mariano__ left 12:45 mariano__ joined 12:51 timbunce left 12:52 dju joined 12:56 dju left, dju joined
dalek kudo: 3d0399a | jonathan++ | src/Perl6/Actions.pm:
Should not curry .WHAT and other interogative macros.
12:57
kudo: 9819740 | jonathan++ | src/pmc/p6role.pmc:
One more role type-object undefinedness fix.
takadonet git pulls, perl Configure.pl and time make -j6 12:59
12:59 lest_away is now known as lestrrat
moritz_ takadonet: how many cores? 13:00
parallel build speeds up parrot compilation quite a bit, but rakudo not so much
13:00 JimmyZ left
moritz_ it takes long to compile the setting, and so far we haven't found a way to split it up 13:00
takadonet takadonet: I have 8 cores :) 13:01
i know but I love doing make -j6 while still running two virtual machines
jnthn rakudo: say "a {} b" 13:02
p6eval rakudo 727782: OUTPUT«a b␤»
jnthn rakudo: say "{}"
p6eval rakudo 727782: OUTPUT«␤»
moritz_ another Null PMC access fixed :-)
jnthn moritz_: giving you the ticket
moritz_ jnthn: ok
isBEKaml rakudo: say 4 = Any 13:03
13:03 timbunce joined
isBEKaml huh? 13:03
p6eval rakudo 727782: OUTPUT«4␤»
isBEKaml rakudo: say (4 = Any)
p6eval rakudo 727782: ( no output ) 13:04
[Coke] moritz_: thank you for reminding me to split up partcl's NQP files. =-)
isBEKaml isn't that a bug? lvalues cannot be literals, right?
rakudo: say (4 = 2)
p6eval rakudo 727782: ( no output ) 13:05
isBEKaml rakudo: 1 = 2;
13:05 bcubas joined
p6eval rakudo 727782: ( no output ) 13:05
jnthn oh, it's p6eval acting up I think
> 1 = 2;
Cannot modify readonly value
> say 4 = Any 13:06
4
Cannot modify readonly value
isBEKaml Oh
13:07 masonkramer left
isBEKaml Sorry, disregard what I said. False alarm. :/ 13:08
13:08 pmurias joined 13:11 dju_ joined, dju left 13:24 M_o_C joined 13:28 felliott left 13:32 gbacon left 13:38 albert__ joined, albert__ left 13:51 uniejo left, tylercurtis joined 14:12 arnsholt joined 14:13 plainhao joined 14:20 timbunce_ joined 14:23 ashleydev joined
jnthn 2 files changed, 21 insertions(+), 51 deletions(-) # I like these kinds of patches :-) 14:23
14:24 timbunce left, timbunce_ is now known as timbunce
moritz_ indeed :-) 14:24
takadonet jnthn: what did you fix?
14:25 dju_ left
jnthn takadonet: More refactored than fixed 14:25
14:25 sahadev joined
jnthn takadonet: Was making BEGIN handling fit into the overall phasers model 14:25
14:25 dju_ joined
jnthn Which meant making that a bit smarter, and then tossing lots of duplicate stuff. 14:25
takadonet nice
jnthn However, I now can say INIT 42 and it says 42 :-)
So those bits are fixed at least. 14:26
14:26 unixdaemon left
jnthn Time for a break. 14:26
rakudo: class A { say (method foo { 23 }).WHAT }; 14:27
p6eval rakudo 727782: OUTPUT«Code()␤»
jnthn ESTILLRONG
moritz_ time for a break - what do you want to break today? :-)
jnthn Well, want to is a bit strong, but it seems I did break t\spec\S04-phasers\rvalue.rakudo :-( 14:29
ooh
rakudo: INIT { say 42 } 14:30
p6eval rakudo 727782: OUTPUT«Could not find sub &say␤ in main program body at line 20:/tmp/gw4ucFuXEr␤»
jnthn I had a hack for BEGIN that evidently I need to port into the general phasers code. :-)
Eh well, after break. 14:31
14:31 M_o_C left
mberends eated a fresh stroopwafel. Thursday afternoon is local market time :) 14:31
arnsholt is jealous
moritz_ too 14:32
14:33 cotto joined 14:38 _mpu joined 14:40 felliott joined
frettled My teeth are not jealous. :) 14:45
14:46 rgrau` joined 14:48 justatheory joined 14:52 M_o_C joined 14:55 Mowah left
jnthn mberends: Mmmm :-) 14:57
mberends jnthn: you'll have to be here on a Thursday afternoon... 14:58
jnthn mberends: Maybe the Thursday afternoon before OSDC in Paris. ;-)
mberends perfect :) 14:59
Juerd FYI: I'm removing "consolekit" from feather. I don't know why we'd need it, and its "console-kit-daemon" has a memory leak.
arnsholt In fact, I'm so jealous I'm gonna pop out and get some hot buns instead
pugssvn r31697 | pmurias++ | [STD-dist] change files names from .pmc to .pm as the .pmc are handled
r31697 | strangely by the toolchain
Juerd If anyone knows why it'd be important, please let me know.
pugssvn r31698 | pmurias++ | [smop] do not use pthread, -g , enable SMOP_HUNT_NULLS
r31699 | pmurias++ | [mildew] use Test works
15:04 gbacon joined, Mowah joined
pugssvn r31700 | Kodi++ | [t/spec/S32-temporal] Reorganization and many additions. 15:04
15:07 Mowah left, hercynium joined 15:09 kensanata joined 15:13 pragma_ left, sukria joined 15:14 baest left 15:15 envi_home2 joined
Juerd And something makes Apache use lots of memory 15:16
moritz_ too many open workers at once?
the default config starts far too many for most casual users
PerlJam scrap apache for lighttpd or nginx or something :) 15:17
Juerd moritz_: No, lots of memory *per* process.
PerlJam: I'd love that, but it's probably things like mod_perl that cause this.
I think svn is to blame 15:18
Hard to test without shutting it down. 15:19
15:19 envi^home left
moritz_ then shut it down 15:21
won't hurt very much if it's only 2 or 5 minutes
Juerd I guess that's true
It's something else. 15:22
moritz_ commitbit/jifty? 15:23
dukeleto moritz_: could you add me to proto? i have some projects that I would like to add to projects.list 15:25
Juerd It appears to be svnweb
feather.perl6.nl/server-status
9671 www-data 20 0 124m 88m 6100 S 80 3.7 0:36.42 apache2
7-0967124/24/24C46.540505872.50.070.0766.249.71.119feather.perl6.nlGET /svn/pugs/view/t/spec/S32-temporal/DateTime-strftime.t?rev= 15:26
moritz_ hugme: add dukeleto to proto
hugme moritz_: ERROR: Can't add dukeleto to proto: 404 Not Found 15:27
Juerd And a googlebot IP again, of course
moritz_ dukeleto: what's your github ID?
hugme: add moritz to svg
hugme moritz_: sorry, I don't know anything about project 'svg'
moritz_ hugme: add moritz to svg-plot
hugme hugs moritz. Welcome to svg-plot!
dukeleto moritz_: leto
moritz_ hugme: add leto to proto
hugme hugs leto. Welcome to proto!
bbkr is away for 1 week. Czech roadtrip!
dukeleto moritz++
Juerd diakopter: Could you please find out why svnweb is using so much memory, and fix that? 15:28
jnthn bbkr: Oh awesome! Enjoy it. Especially the pivo!
bbkr jnthn: thanks :)
15:28 bbkr left 15:29 ashleydev left
[Coke] bah. are nicks ascii only? 15:33
moritz_ yes 15:34
[Coke] *&%!
Kodi An excellent choice of nick.
15:34 PerlJam left, phenicsl joined
[Coke] (was hoping I could use Cöke or something.) 15:35
TimToady though someone might accidentally swear your real name and do magic on you
15:35 PerlJam joined, ash_ left
tylercurtis [Coke]: IRC servers aren't written in Perl 6. 15:36
Kodi tylercurtis: Yet!
Juerd svnweb is mod_perl. Everytime I see huge apache processes, mod_perl is somehow involved :(
[Coke] tylercurtis: but clÆrly they cåån handle ünicode elsewhere. Þ 15:37
Juerd Should've known.
15:37 aubreyja joined 15:38 macdaddy joined 15:39 macdaddy is now known as Guest41149, arnsholt left
TimToady if they allow latin-1, you might be able to fake it with the UTF-8 encoding of characters 15:39
[Coke] TimToady: Cöke isn't allowed, even. 15:40
Juerd Only 64 ascii characters are allowed iirc
a-zA-Z{|}~`[\]^_ 15:41
Still missing some, or I remembered the number wrong.
dalek kudo: c9b7229 | jonathan++ | src/ (2 files):
Make phasers implementation able to remember value produced by phaser.
15:42
kudo: 8ce9aff | jonathan++ | src/ (2 files):
Remove special handling of BEGIN and make add_phaser a littler smarter about
kudo: d51e99a | jonathan++ | src/Perl6/Actions.pm:
Put the 'run in lexical scope of the setting' hack that was in the old BEGIN
cxreg set phasers to lexical 15:43
jnthn Weather cooler. Can patch again. Phew.
Juerd 2rfc.net/1459#2.2 # Interesting. For IRC, uc("{}|") is "[]\"
15:43 azert0x joined
cxreg jnthn: wrt zavolaj, moritz_ mentioned a suspicious pir::clone in NativeCall.pm6:101 15:43
it's all greek to me though
jnthn cxreg: Yes, I was expecting to toss that clone 15:44
15:44 azert0x left, azert0x joined
Juerd Which makes sense if you look at an ASCII table, but on a normal US keyboard they're the wrong way around, shiftwise. 15:44
jnthn cxreg: Greek? huh? I thought I'd written it in Russian...
;-)
cxreg heh
15:46 cjk101010 left
[Coke] jnthn: shouldn't *.WHAT say "EVER"? ;) 15:48
PerlJam jnthn: does that mean that say is available in roles now? If not, could the same hack work for that? 15:49
jnthn PerlJam: I'm currently trying to pick my any(<fix hack>) for that :-) 15:50
[Coke]: Oooh. :-)
sahadev greetings, all.
jnthn o/ sahadev
sahadev hi jnthn
jnthn PerlJam: At least I've now done the refactor to BEGIN I told pm I'd do two weeks ago though. :-) 15:51
sahadev trying to setup proto. getting errors: 15:52
maximum recursion depth exceeded
in 'Any::postcircumfix:<{ }>' at line 1
in 'Any::postcircumfix:<{ }>' at line 1631:CORE.setting
...
Kodi submits his Temporal patch (finally!).
[Coke] isn't pls now favored over proto?
sahadev [Coke]: don't know about pls. let me check.
github.com/masak still shows 'proto', but not 'pls'. Is it somewhere else? 15:54
moritz_ sahadev: it's in a branch in the proto repo 15:55
[Coke] pls?
moritz_ yes
afk 15:56
[Coke] infobot?
15:57 Kodi left 16:01 ruoso joined 16:03 helterskelter joined, helterskelter left 16:05 phenicsl left 16:15 masak joined
masak oh hai, #perl6! 16:15
phenny masak: 00:19Z <jnthn> tell masak upgrade to Windows
masak hugme: hug jnthn
hugme hugs jnthn
TimToady oh hai oh
masak loliblogged! use.perl.org/~masak/journal/40447
it's a bit on the gutsy/gory side, but I had a lot of fun thinking about phasers, and I wanted to share. :) 16:16
jnthn GORE!
rakudo: say INIT { say 4; 2 }
p6eval rakudo 981974: OUTPUT«Could not find sub &say␤ in main program body at line 20:/tmp/wDu86wuXym␤»
jnthn ETOOSOON
16:18 tadzik joined
jnthn masak: nice post 16:19
masak++
masak thankz.
I wrote the post in POD, then wrote a simple Perl 6 filter to format it as use.perl.org wants it :) 16:20
jnthn :-)
I need to write my Last Post to there at some point.
TimToady ooh, an action item :) 16:21
masak eeew, 'mid($r, $l)' ! 16:23
jnthn masak: mid brings back memories of QBasic
masak eeew! 16:24
but yes. it does.
16:24 cdarroch joined, cdarroch left, cdarroch joined
jnthn iirc it was for getting stuff out of the middle of a string :-) 16:25
masak hm, which one wins between an infix and a circumfix? seems to me "LTM" is the first-approximation answer, but they might still tie on that.
jnthn: yes. there was LEFT, RIGHT and MID.
jnthn masak: I'm not sure tbh 16:26
rakudo: sub circumfix:<` `>($n) { say 2 * $n }; `21`
p6eval rakudo 981974: OUTPUT«42␤» 16:27
jnthn rakudo: sub circumfix:<| |>($n) { say 2 * $n }; |21|
p6eval rakudo 981974: OUTPUT«===SORRY!===␤Confused at line 20, near "|21|"␤»
jnthn The opening | is equal length to prefix | I guess
rakudo: sub circumfix:<{| |}>($n) { say 2 * $n }; {|21|} 16:28
p6eval rakudo 981974: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 20␤»
jnthn Grr
Think we're hitting on LTM issues there.
16:29 Mowah joined
masak cognominal: "in essence there is no value to test" -- this is manifestly false in Perl 6. for example, an optional array or hash parameter starts its life as an *empty* array or hash if none is sent in. not as an undefined one, but as a defined-but-empty one. 16:29
tylercurtis masak: do use.perl.org journals have RSS feeds?
moritz_ yes
masak tylercurtis: yes, I believe so.
tylercurtis: or you can go with Planet Perl 6.
moritz_ otherwise planetsix couldn't pick up the postings :-)
masak well, theoretically...
jnthn moritz_: Is there any issue with planetsix re Wordpress blogs these days?
I seem to remember colomon++ had some "fun" 16:30
moritz_ jnthn: works now
jnthn \o/
moritz_: Good good. I'm moving my blogging to a Wordpress blog.
It's so much more fun to use.
And will probably lead to me blogging more. 16:31
isBEKaml hey guys, ops like +=, -=, *= don't work?
jnthn ?
rakudo: my $x = 40; $x += 2; say $x; 16:32
p6eval rakudo 981974: OUTPUT«42␤»
isBEKaml rakudo: sub postfix:<y>($n) { my $foo *= $_ for 1..+$n; say $foo; }; 6y; #some factorial, really
p6eval rakudo 981974: OUTPUT«720␤»
isBEKaml wow!
I got something different locally. But I tried it with vim's ! escape. 16:33
tylercurtis masak: Nevermind. I'm subscribed to Planet Perl 6... Google Reader just was failing at updating.
masak ah.
moritz_ isBEKaml: www.perlmonks.org/?node_id=839112
16:34 sahadev left
isBEKaml moritz_: ah, yes. I remember reading this a while ago. I occasionally follow posts on PM. :) 16:36
moritz_++
dannnit! vim recognises the $_ ?? 16:38
moritz_ why not?
masak gentletwitterer @uasi is concerned about the "Dispose pattern" in Perl 6: twitter.com/uasi/status/18602349670
isBEKaml Malformed my at line 1, near "*= /usr/bi"
when I tried it with vim's shell escape to perl6, this was what I got. $_ got expanded to /usr/bin/ something. :| 16:39
masak isBEKaml: don't do that, then. 16:40
tylercurtis moritz_: I tried making a method-based thing similar to that(although also with units for type-checking unitted math), but it doesn't work because of this:
jnthn masak: Can be shortened to given open('file');
er 16:41
given open('file') -> $f { ... LEAVE { $f.clonse } }
isBEKaml masak: escape all $s. :D
masak jnthn: aye.
tylercurtis rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; } }; say 5; say 5.k; say 5.k.k;
p6eval rakudo 981974: OUTPUT«5␤5000␤Method 'k' not found for invocant of class 'Integer'␤ in main program body at line 20:/tmp/zCsehWrJAO␤»
masak jnthn: I'm not sure the LEAVE'll actually trigger if there's an exception, though.
jnthn masak: I'd have to re-check S04
masak me too.
there's some wording there about stack rollback. 16:42
jnthn However, I'd rather go for a stroll in the park right now. :-)
bbiab for more Rakudo hacking
masak I'm going to go see if someone made me some nom. :)
16:42 masak left
tylercurtis masak: LEAVE is supposed to trigger on any exit, no? 16:42
tylercurtis has bad timing.
isBEKaml tylercurtis: something to do with what the method returns, I guess. 16:44
rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; }; }; say 5; (5.k).WHAT.perl.say; 16:45
TimToady LEAVE always run; KEEP and UNDO look at the return
p6eval rakudo 981974: OUTPUT«5␤Int␤»
TimToady oh, that method :)
tylercurtis isBEKaml: it's a known bug with augmenting Int iirc.
16:46 kensanata left
isBEKaml tylercurtis: oh, I was thinking - maybe the return type didn't match or something. 16:46
turns out not the case. Happy to be wrong. :)
moritz_ just listened to the perlcast interview with Stevan Little 16:47
16:47 ashleydev joined
tylercurtis rt.perl.org/rt3/Public/Bug/Display.html?id=75114 16:48
TimToady but someday it'll just be: given open('file') -> $f will leave {.close} {...}
isBEKaml tylercurtis: but it worked for 5.k ? 16:50
tylercurtis: maybe, it's chaining?
tylercurtis rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; } }; say 5; say 5.k; say (5 * 1000).k; 16:51
p6eval rakudo d51e99: OUTPUT«5␤5000␤Method 'k' not found for invocant of class 'Integer'␤ in main program body at line 20:/tmp/zDhDrtJEVH␤»
isBEKaml rakudo: use MONKEY_TYPING; augment class Int { method foo { say "OHHAI"; }; }; 5.foo; 16:52
p6eval rakudo d51e99: OUTPUT«OHHAI␤»
isBEKaml ?
tylercurtis isBEKaml: The problem appears to be that (5*1000) doesn't actually return Perl 6's Int but the bare Parrot Integer.
isBEKaml tylercurtis: yes, return type mismatch. so, I was not too far off the first time. 16:53
TIL P6 Int and Parrot Integer are different types. :)
as seen by rakudo, ofcourse.
rakudo: say (5*100000).WHAT 16:56
p6eval rakudo d51e99: OUTPUT«Int()␤»
tylercurtis rakudo: say 5.WHAT =:= 5.1000.WHAT; 16:57
p6eval rakudo d51e99: OUTPUT«0␤»
isBEKaml it's still printing Int while actually seeing bare Integer.
tylercurtis rakudo: say 5.WHAT =:= (5 * 1000).WHAT;
p6eval rakudo d51e99: OUTPUT«1␤»
[particle] i'm curious about that typing, a bit, if the input to * is lhs Int vs rhs Int vs both Int
tylercurtis rakudo: say &infix:<+>.signature 16:58
p6eval rakudo d51e99: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub'␤ in main program body at line 1␤» 16:59
[particle] rakudo: say Int(5) * 1000; say 5 * Int(1000); say Int(5) * Int(1000); say Int(5 * 1000);
p6eval rakudo d51e99: OUTPUT«Could not find sub &Int␤ in main program body at line 20:/tmp/gq3y4_LqJU␤»
[particle] crap, forgot WHAT
isBEKaml rakudo: say 5.Int; say Int(5); 17:00
p6eval rakudo d51e99: OUTPUT«5␤Could not find sub &Int␤ in main program body at line 20:/tmp/dX2CghbALe␤»
tylercurtis rakudo: say &infix:<+>.^methods.perl
p6eval rakudo d51e99: OUTPUT«[{ ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ...
..}, { …
isBEKaml rakudo: say 5.Int * 1000; say 5 * 1000.Int;
p6eval rakudo d51e99: OUTPUT«5000␤5000␤»
[particle] rakudo: say (5.Int * 1000).WHAT; say (5 * 1000.Int).WHAT; say (5.Int * 1000.Int)WHAT; say (5 * 1000).Int.WHAT;
tylercurtis rakudo: say &infix:<+>.^methods
p6eval rakudo d51e99: OUTPUT«===SORRY!===␤Confused at line 20, near "say (5.Int"␤»
rakudo d51e99:
..OUTPUT«multicandidatesnamewrapcandounwrapassumingcandidatesACCEPTSaritycountsignaturereturnsperldoofassumingcallwithStrnewmultinamecotancosechatan2ucfirstcombtanatancosacosfmtevaltranschoprindextanhsubstNumericchompindexchracotanhtrim-trailingfrom-radianscapitalizepredatanhcosecexplcp5cho…
tylercurtis rakudo: say &infix:<+>.^methods.join(' ') 17:01
isBEKaml tylercurtis: sort, join, perl. :)
p6eval rakudo d51e99: OUTPUT«name multi candidates cando unwrap assuming candidates wrap arity count ACCEPTS name signature returns perl do of assuming callwith Str new multi cosh cosec succ chars sign roots ucfirst samecase tan log10 cos capitalize fmt bytes flip lc p5chop to-radians Numeric asinh acotan
..cota…
tylercurtis rakudo: say &infix:<+>.signature
p6eval rakudo d51e99: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub'␤ in main program body at line 1␤»
tylercurtis Should that be happening?
[particle] parrot shouldn't bleed through
17:02 PZt left
TimToady I don't know what rakudo is doing with =:=, but it isn't spec. just use === to compare values. =:= should blow up on non-conatiners 17:04
*ta
tylercurtis rakudo: say 5.WHAT === (5 * 1000).WHAT 17:06
p6eval rakudo d51e99: OUTPUT«1␤»
17:11 dju_ left, tadzik left, dju_ joined, Mowah left 17:13 PZt joined 17:14 thebird left
Tene phenny: tell masak that I'd like to chat with him about synonyms/aliases/whatever. 17:14
phenny Tene: I'll pass that on when masak is around.
sorear good * #perl6 17:15
isBEKaml What exactly are immutable types? That is, if we do any operation on a variable of an immutable type, we should be getting a new variable and not the same variable mutated to the state as done by the operation. Going by that, what immutable types do we have in P6?
sorear Int, Num, Str, Rat, etc 17:16
Role
TimToady S02:1238
isBEKaml rakudo: my Int $foo = 25; say $foo++;
p6eval rakudo d51e99: OUTPUT«25␤»
17:17 perlrocks joined
isBEKaml rakudo: my Int $foo = 25; say ++$foo; 17:17
p6eval rakudo d51e99: OUTPUT«26␤»
isBEKaml geez...
TimToady rakudo: 25++
sorear [Coke]: To be super pedantic, IRC nicks are required to be in the old 7-bit Finnish character encoding, which looks like ASCII but replaces [ \ ] { | } with ä ë ö Ä Ë Ö. Now you know why trigraphs were invented!
p6eval rakudo d51e99: ( no output ) 17:18
TimToady ah, so it's really C]ke :)
sorear Maybe
I don't actually remember the order of the vowels 17:19
isBEKaml rakudo: say 25++
17:19 Mowah joined
p6eval rakudo d51e99: ( no output ) 17:19
17:19 envi_home2 left
isBEKaml rakudo: say ++25; 17:19
TimToady p6eval is refusing to report the error
sorear isBEKaml: p6eval doesn't do errors
use a real installed perl6
p6eval rakudo d51e99: ( no output )
moritz_ sorear: that's not quite correct 17:20
TimToady I think p6eval should report errors (again).
moritz_ rakudo: die 24
p6eval rakudo d51e99: OUTPUT«24␤ in main program body at line 20:/tmp/hMWH5lqQHF␤»
pmurias ruoso: hi
pugssvn r31701 | lwall++ | [STD] allow leading whitespace on charnames 17:21
tylercurtis rakudo: my $/ = { foo => 5 }; say :$<foo>; 17:22
p6eval rakudo d51e99: OUTPUT«===SORRY!===␤Redeclaration of symbol $/ at line 20, near " = { foo ="␤»
tylercurtis rakudo: $/ = { foo => 5 }; say :$<foo>;
p6eval rakudo d51e99: OUTPUT«===SORRY!===␤Confused at line 20, near "say :$<foo"␤»
tylercurtis rakudo: my $foo = 5; say :$foo 17:23
p6eval rakudo d51e99: ( no output )
moritz_ :$<foo> is probably not allowed
17:23 pragma_ joined
moritz_ std: :$<foo> 17:23
p6eval std 31700: OUTPUT«===SORRY!===␤Bogus statement at /tmp/hJpRDS8q85 line 1:␤------> <BOL>⏏:$<foo>␤Parse failed␤FAILED 00:01 113m␤»
moritz_ should it? :-)
17:24 pragma_ is now known as Guest96912, Guest96912 left, Guest96912 joined
pugssvn r31702 | lwall++ | [S06] ss/is context/is dynamic/ fossil 17:24
17:24 Guest96912 is now known as pragma_
TimToady well...$<> is special form anyway, so it doesn't have to behave exactly like $/<> 17:25
sorear masak++ 17:26
tylercurtis std: class Foo { has $.a; method bar ($.a) { $.a; } };
p6eval std 31700: OUTPUT«ok 00:01 111m␤»
tylercurtis rakudo: class Foo { has $.a is rw; method bar ($.a) { $.a; } }; my Foo $foo .= new; $foo.bar(5); say $foo.a; 17:27
p6eval rakudo d51e99: OUTPUT«5␤»
[Coke] sorear: my nick is currently [Coke] - why is not rendering as äCokeö ?
isBEKaml [Coke]: unidirectional, not bidirectional. ;) 17:28
[Coke] if I can't use them, and I can't see them, I question their existance. =-) 17:29
17:29 dju_ left, dakkar left
tylercurtis I just thought :$<foo> might work like with other twigils. Although I'm not really sure if the spec actually specifies that :$.a === a => $.a 17:30
17:30 dju_ joined
moritz_ tylercurtis: if the spec doesn't, the test suite fills that gap :-) 17:30
isBEKaml so immutable types are meant to work with value identity in === and work well with literals being ro? 17:31
17:31 xabbu42 left
pugssvn r31703 | moritz++ | [evalbot] try not to loop infinitely on errors 17:32
17:32 p6eval left, p6eval joined
moritz_ isBEKaml: I don't know if that holds for all immutable types, but it's true for things we call "value types" 17:32
tylercurtis moritz_: What do you mean? 17:33
moritz_ I meant what I said :-)
which point is unclear?
pmurias rakudo: { die "hi";CATCH {default {} };say "there"; };say "here";
p6eval rakudo d51e99: OUTPUT«here␤»
tylercurtis Are you saying that there are tests for :$.a and such? 17:34
moritz_ yes
I'm not sure if all cases are tested, but there should be quite a few
S06-signature/named-parameters.t
though maybe they really belong into S02-literals/pairs.t 17:35
isBEKaml moritz_: ok, thank you.
sorear [Coke]: because most IRC clients pretend the wire encoding is ASCII 17:36
[Coke]: you can observe it through case mapping
tylercurtis moritz_: ah. There's my problem. I was looking at S02-literals/pairs.t.
sorear [Coke]: try /whois {Coke}
17:36 dju__ joined, dju_ left
TimToady tylercurtis: thing is, . is a true twigil, and < isn't, so $<foo> would need to be special-cased specialler than it is 17:38
17:38 dju_ joined 17:39 dju__ left
pugssvn r31704 | lwall++ | [STD] don't carp 'not used' about dynamic vars 17:39
r31705 | lwall++ | [caller.t] use 'is dynamic' instead of 'is context' 17:40
r31705 | change old readonly policy to use ::= instead
17:41 SmokeMachine joined
tylercurtis TimToady: Which twigils do have the special :$a/:$.a behavior? All of them except for $<a>? Or are there more that don't? Perhaps that could use some clarification somewhere in S02? 17:43
17:44 patspam joined
tylercurtis std: :$*foo 17:45
p6eval std 31703: OUTPUT«ok 00:01 110m␤»
17:45 perlrocks left
tylercurtis std: { :$^foo } 17:45
p6eval std 31703: OUTPUT«ok 00:01 107m␤»
tylercurtis std: { :$:foo }
p6eval std 31703: OUTPUT«ok 00:01 107m␤»
tylercurtis std: { :$?foo }
p6eval std 31703: OUTPUT«Potential difficulties:␤ Unrecognized variable: $?foo at /tmp/eDZ5dmOdRq line 1:␤------> { :$?foo⏏ }␤ok 00:01 107m␤»
tylercurtis std: :$=foo 17:46
p6eval std 31703: OUTPUT«ok 00:01 107m␤»
tylercurtis rakudo: say ({:$^foo }).(5) 17:47
p6eval rakudo d51e99: OUTPUT«foo 5␤»
tylercurtis std: :$~MAIN;
p6eval std 31703: OUTPUT«ok 00:01 107m␤»
17:50 isBEKaml left
[Coke] sorear: there is no such nick {Coke} 17:51
sorear weird. 17:52
it works here.
12:52 [freenode] -!- [Coke] [~coke@cpe-72-228-52-192.nycap.res.rr.com]
[Coke] I get that for [Coke], not {Coke} 17:53
sorear I get it for both.
I guess maybe one of the freenode servers has finally moved into the 21st century 17:54
[Coke] in /any/ case, none of that helps me with my basic premise: IRC sucks, and freenode doubly so. =-) 17:55
sorear that's my premise too.
IRC needs to die, it's stupidly designed in more ways than I can count
it's a pity none of the replacements have critical mass
pmurias what's an acceptable irc replacement? 17:57
sorear I don't know yet
pugssvn r31706 | lwall++ | [STD] recognize :$<foo> as if < were a real sigil
17:59 sorear sets mode: +oooo pmurias dukeleto [Coke] tylercurtis, sorear sets mode: +vv p6eval pugssvn
pugssvn r31707 | lwall++ | [t/spec] more warning suppressions 17:59
PerlJam sorear: you'd have to make something that speaks the IRC protocol, but works better/faster/shinier in some way so that you can co-opt the existing IRC servers/clients into your new world order
tylercurtis TimToady++: ooh. That works, too.
PerlJam sorear: sort of like git: it speaks http, but the git protocol is much better
tylercurtis .u smiling
phenny U+263A WHITE SMILING FACE (☺)
[Coke] we have the same problem with lily, something developed at RPI in the 80s. has a dedicated core community but no one will leave it for new and shiny.
so any plans to replace it require coopting either the look and feel or the protocol. 18:00
sorear the IRC server protocol is a lost cause 18:04
it is basically designed entirely around the notion that the connection graph has no redundancy
cxreg $ perl6 -e '(1,4,9...100).join(", ").say' 18:05
Unable to figure out pattern of series
tee hee 18:06
[Coke] I think there's plenty of wiggle room in XMPP to build something nice.
but that's a discussion for another channel. =-)
18:07 ashleydev left
moritz_ unless you build it with Perl 6 :-) 18:09
pugssvn r31708 | Util++ | [t/spec] Restore one line erroneously removed by r31692. Fixes slurpy-params.t compile failure. 18:10
r31709 | lwall++ | [STD] don't complain about state vars that are not used 18:11
18:13 PerlJam left 18:17 PerlJam joined
TimToady Util: that line should not be necessary; the class decl should introduce its own name immediately as a type name 18:17
and, in fact, it should be carping about a redeclared class
unless the first def has ... 18:18
moritz_ TimToady: 'X' ne 'Y'
I didn't notice it at first sight either
TimToady
.oO(never could tell the difference between zip and cross ops :)
18:19
that would explain why STD isn't carping about it too :)
moritz_ and 'Y' ne 'Z' :-) 18:20
TimToady thinks he should make a noise like a hoop and roll away
[Coke] hoop noise? 18:21
TimToady sorry, a Lord Peter Wimsey allusion 18:24
and, in fact, if I'd looked at the snaptest run I did after that, I'd've notice it complaining about 18:25
In parameter declaration, typename 'X64814' must be predeclared (or marked as declarative with :: prefix) at /home/larry/pugs/t/spec/S06-signature/slurpy-params.t line 241:
pmichaud good morning, #perl6 18:27
18:29 tadzik joined
PerlJam pmichaud: good afternoon :) 18:30
Util TimToady, moritz_: So, the removal of the X64814 line was a thinko (that I thought was a typo), but restoring the line has completly resolved the issue? 18:32
18:33 uniejo joined 18:36 xabbu42 joined
sorear good * pmichaud 18:36
TimToady Util: yes, it's fine as it was 18:39
one never knows on which day one is going to make his Bad Mistake of the Week on... 18:40
pmichaud I thought my Bad Mistake was going to be on Monday, but I was mistaken about that.
[Coke] TimToady: if you're me, it's really just all of them.
18:41 ashleydev joined
tadzik is fakedbi renamed to minidbi? 18:42
pmichaud tadzik: I believe so, yes.
pugssvn r31710 | lwall++ | [t/spec] more warning suppressions; remaining STD warnings are mostly bugs in test or STD
pmichaud it was decided that "fake" was too strong a word.
tadzik sounds more marketingy :)
PerlJam good 18:43
(perl has needed some good marketing for a while :)
tadzik sure it does :) 18:44
tadzik will be agitating Perl6 on local Perl workshop in a few days
18:44 xabbu42 left, xabbu42 joined 18:47 xabbu42 left
tylercurtis At least some of the FakeDBI stuff isn't fake anymore iirc. 18:47
18:50 jakk joined, jakk left 18:51 M_o_C left
pugssvn r31711 | moritz++ | [t/spec] unfudge tests for custom circumfixes 18:51
18:53 baest joined
pugssvn r31712 | moritz++ | [t/spec] RT #76382, role type objects should be undefined 18:58
19:00 kensanata joined
pugssvn r31713 | moritz++ | [t/spec] test for RT #76234, interpolating empty block into a string 19:01
19:01 xabbu42 joined
jnthn back from noms 19:01
hi pmichaud :-) 19:02
pmichaud aloha jnthn! :-)
jnthn pmichaud: Still sunny and beautiful over there?
pmichaud jnthn: yes. A bit sunnier today than yesterday, even :-) 19:03
jnthn Nice :-)
moritz_ is glad that today wasn't as sunny as yesterday :-)
jnthn Here it's also sunny, but thankfully not so hot and stuffy. I can actually concentrate long enough to write a patch now. :-)
pmichaud: You'll be delighted to know that BEGIN now works through add_phaser again :-) 19:04
pugssvn r31714 | moritz++ | [t/spec] tests for RT #73460, Whatever stars and variables
19:04 cono left
lue ohai o/ 19:04
pmichaud jnthn: I'm delighted to hear that!
jnthn \o/
rakudo: say INIT 42 # this works too
moritz_ jnthn: and I've closed the tickets that you handed to me today :-)
p6eval rakudo d51e99: OUTPUT«42␤»
jnthn moritz_: yay!
moritz_++ 19:05
pmichaud outstanding! I should go on vacation more often. :-)
moritz_ rakudo: my $x; say $x; INIT { $x = 5 };
p6eval rakudo d51e99: OUTPUT«Lexical '$x' not found␤ in main program body at line 20:/tmp/I5pWUqrLCZ␤»
jnthn I didn't fix *that* one yet. :P
moritz_ well, one can always hope and try :-)
jnthn I hope to fix it and I'm sure I'll try at some point. :-)
19:06 cono joined
jnthn pmichaud: I'm srsly pondering a branch that s/loadinit usage/add_phaser/ 19:06
pmichaud: For one because I'm pretty sure I can fix the whole roles not seeing the setting thing with it.
pmichaud jnthn: I think it'd be worth experimenting with, yes. I'm not sure it's a good idea pre-R*
jnthn: if it works out cleanly, though, I'd say go for it :) 19:07
jnthn pmichaud: We *have* to fix the setting not visible from role bug somehow.
(Before R*.)
pmichaud (you still end up with loadinit stuff, it's just that the loadinit stuff triggers phasers instead of doing it directly)
jnthn It's a major fail.
pmichaud anyway, I say it's worth a try (and not hard to do) 19:09
jnthn Aye 19:10
pmichaud but I think the problem may be related more to the composition logic than the loadinit stuff.
jnthn The problem boils down to, we take closures from within a loadinit
pmichaud we'll still be doing that with phasers
unless you do something other than BEGIN
jnthn Yeah but phasers have a hack to deal with that.
pmichaud they do? 19:11
jnthn rakudo: BEGIN { say "huh" }
p6eval rakudo d51e99: OUTPUT«huh␤»
19:11 masak joined
pmichaud oh, okay. 19:11
jnthn pmichaud: Er, they do now. ;-)
pmichaud pulls, checks.
jnthn pmichaud: I took it from the stuff I did with BEGIN before.
lue Where is the code for &say and &print [things like say 'hi']? I broke it, and need to check on it. 19:12
pmichaud lue: src/core/IO.pm
jnthn pmichaud: And now it's just in add_phaswer
pmichaud jnthn: I don't see it in add_phaser
masak Tene: ok. don't know exactly what you're referring to, but it sounds interesting.
phenny masak: 17:14Z <Tene> tell masak that I'd like to chat with him about synonyms/aliases/whatever.
jnthn Line 592 19:13
19:13 baest left
pmichaud in actions.pm? 19:13
jnthn Yes
pmichaud oh
jnthn oh. :-)
pmichaud I thought you meant !add_phaser
jnthn sub add_phaser($/, $bank) {
No no :-)
19:15 xabbu42 left 19:16 plainhao left
pmichaud oh. 19:16
jnthn I said it was a hack
pmichaud you chose to have Actions.pm fire the BEGIN phasers instead of phasers.pir ?
jnthn OTOH, I'd prefer to have one hack in one place
pmichaud: Yeah (more)
I'm not convinced that we will *always* want to have BEGIN stuff run immediately. If I'm going to put class-y things in using BEGIN we wanna wait until we compiled and run them after that. 19:17
pmichaud: I'm thinking of giving add_phaser an optional $run_now = 0 arg. 19:18
pmichaud: And the real BEGIN blocks throw along a "1" there
19:18 pyrimidine joined
pmichaud "wait until we compiled and run" sounds more like CHECK than BEGIN 19:19
jnthn Well, here's the nasty we have.
pmichaud -1 to the $run_now arg. that feels even more hackish.
jnthn We can't just run BEGIN blocks at compile time.
pmichaud I'd rather just issue the explicit call to !fire_phasers
jnthn We need them to end up in the PIR too 19:20
pmichaud I understand that part.
jnthn So is your premise that maybe class construction wants to go at...INIT?
pmichaud CHECK.
CHECK comes before INIT.
jnthn Oh, yes
pmichaud although currently it's LIFO instead of FIFO 19:21
afk for a bit
jnthn k
pmichaud oh, I have another answer
(will take a bit to explain -- bbi5
masak phenny: tell moritz_ that he has an unclosed <code> somewhere in perlgeek.de/blog-en/perl-6/contribu...subst.html 19:26
phenny masak: I'll pass that on when moritz_ is around.
moritz_ goes looking 19:27
phenny moritz_: 19:26Z <masak> tell moritz_ that he has an unclosed <code> somewhere in perlgeek.de/blog-en/perl-6/contribu...subst.html
19:28 Trashlord left
Tene masak: like this: irclog.perlgeek.de/perl6/2010-07-14#i_2554862 19:28
masak moritz_: also, looking through your list at perlgeek.de/blog-en/perl-6/rakudo-s...-list.html , I think the "same list or iterator twice" bug has been shown to be Not Dead Yet by colomon.
Tene: looking. 19:29
moritz_ rakudo: say <a b c>.kv.kv.perl
p6eval rakudo d51e99: OUTPUT«Cannot resume dead coroutine.␤ in 'Any::join' at line 1␤ in 'List::perl' at line 2522:CORE.setting␤ in main program body at line 20:/tmp/d9x_Y7gxGI␤»
masak Tene: ah, those synonyms. yes, I'll happily talk about those.
pmichaud jnthn: nm, my idea won't work anyawy
masak I thought about them a bit when reading the backlog.
pmichaud actually, it might
sorear TimToady: Is it reasonable to be wanting some sort of conditional compilation for p6?
Tene masak: What's the utility? That seems to just increase confusion, for negligible benefit, to me. 19:30
pmichaud anyway, you can attach to $*UNITPAST.loadinit
but I think that might end up being very first instead of very last.
masak Tene: we're actually removing a lot of the synonyms from CPAN's DateTime.
pmichaud jnthn: really, though, the question is "when should class construction take place?" 19:31
masak Tene: I kept this pair because I saw a use case for each of the forms.
19:31 cls_bsd left, cls_bsd joined
masak Tene: namely, .year/.month/.day is symmetrical, so we want to keep that one. but sometimes you want extra clarity, or want to contrast .day-of-week with .day-of-month, so we want to keep the latter. 19:31
19:31 chitragupt left
jnthn pmichaud: I've been pondering this quite a lot. (more) 19:31
masak Tene: I would never want this with a CORE(tm) module, but DateTime is only almost core. 19:32
19:32 chitragupt joined, rv2733 joined
jnthn pmichaud: One of the things I'm going to need to be able to do for the work I plan under my grant is interact with meta-classes of things at compile time. 19:32
Tene masak: Sure, but then someone's reading the code, and sees the two forms used in different places, and assumes they must mean different things.
jnthn Or to get decent optimizations anyway
Where "compile time" is a bit blurry :-) 19:33
Tene Or you're searching for uses of one form, and miss uses of the other.
pmichaud jnthn: sure, makes sense.
jnthn pmichaud: Anyway, I increasingly wonder if we're going to be able to hang on to our whole-file-in-one approach to compilation.
pmichaud I don't understand "whole-file-in-one" approach.
jnthn pmichaud: We take a whole file and translate it all down to, e.g. PIR. 19:34
pmichaud: As opposed to, we say "ah, we're done with this class, let's compile it" and then fix up outer links later on.
pmichaud: I'm not particularly advocating we switch to the second, because it's going to be annoying. 19:35
pmichaud I'm pretty certain we can keep the whole-file-in-one approach. PAST may need to come up with some better mechanisms for .loadinit stuff.
Tene masak: Okay, I think I understand your reasons now.
jnthn pmichaud: That's also entirely possible, yes.
masak Tene: I'm not fundamentally opposed to just keeping one of the forms. I guess .day-of-month'd go in that case.
pmichaud I do agree with the idea that it should all happen with phasers. 19:36
masak Tene: I understand yours, too. it's all a matter of taking opposing forces into account.
jnthn pmichaud: I do worry about things like class Foo { }; BEGIN { Foo.new } though.
pmichaud: I'm not sure how legal (or otherwise) that is.
pmichaud if the BEGIN for class Foo takes place at the closing brace, it's probably okay.
masak Tene: your 'searching' argument could equally be applied to things like the .{} and .<> syntaxes.
ENOTENE 19:37
jnthn pmichaud: Right, but that's what I mean about not being able to compile the whole program in one chunk.
pmichaud: Anyway, that's a much bigger discussion.
19:37 skangas joined
pmichaud jnthn: we can still come up with a single .PIR that has the results of the compilation (more) 19:37
jnthn: but yes, during compilation we may also be invoking specific chunks 19:38
(which we do now for a variety of things)
jnthn Aye, true.
Anyway, that's certainly too big a change for pre-R*. :-)
Probably one of those things that YAPC::EU would provide a good chance to bat around. :-)
masak pmichaud: ooc, what's your estimation of the difficulty/ETA of rt.perl.org/rt3/Ticket/Display.html?id=73608 ? 19:39
19:39 Tene joined
pmichaud masak: I'm still planning pre-Parrot release. 19:40
masak ok.
Tene: [re-posted] your 'searching' argument could equally be applied to things like the .{} and .<> syntaxes.
dalek ecza: 4fcb9ab | sorear++ | (4 files):
Move Decl to CgOp
ecza: 6dac3ce | sorear++ | (6 files):
Move everything else to CgOp
pmichaud likely this Sunday.
masak \o/
jnthn pmichaud++ # yay!
pmichaud that's one of those things that I think has to be done for R*
masak that's one of the more serious remaining bugs.
jnthn Aye, me too
Tene masak: Yes, but those are functionally different.
masak Tene: please elaborate. 19:41
Tene masak: <> quotes its arguments.
masak pmichaud: this one is quite important as well: rt.perl.org/rt3/Ticket/Display.html?id=66782
19:42 Ross left
jnthn masak: Is it a problem for .subst or just .= ? 19:42
masak Tene: oh, sure. right. they're not identical, like .day and .day-of-month are.
pmichaud .subst, I suspect. I suspect $/ still isn't being bound properly.
masak aye, .subst
jnthn OK
pmichaud that one is particularly tricky.
masak Tene: but to keep the analogy intact, I wouldn't use .day and .day-of-month interchangably either. 19:43
19:43 Ross joined
masak Tene: (even though they return the same thing) 19:43
pmichaud because we really have to monkey with the lexpads to get it even close to right. last time moritz++ and I looked at it we ended up in a catch-22 situation, iirc.
masak ok. keywords "monkey" and "catch-22" make me set my hopes not-too-high for that one. :)
guess we can handle *one* FAQ on the channel. :P 19:44
19:45 kbenson left
jnthn pmichaud: Is it essentially that $/ normally comes from outer, but in this case we want it to go in dynamically? 19:45
pmichaud I think there's a design hole there somewhere that likely needs addressing. Let me see if I can dig up the relevant discussion.
jnthn: somewhat. It's not just dynamically either. 19:46
19:46 kbenson joined, kbenson left
[Coke] pmichaud: there's planning? I thought I was just going to pull a trigger and boom. 19:47
masak bah, p6l werves into Temporal discussion that was settled months ago. how will I be able to read this and not lose interest or blow a fuse? :)
pmichaud hopes there's a :-) missing from Coke's message :)
jnthn masak: You could always not read it. ;-)
masak jnthn: right... :) 19:48
19:49 IRSeekBot joined
jnthn masak: I read p6l quite selectively. :-) 19:49
TimToady .subst is always supposed to set CALLER::<$/>
just like everything else is, if you assume that regex matches always have helper routines
pmichaud but by default, closures tend to look at OUTER::<$/>
masak (Mark J. Reed)++ # has apparently googled, AND read Temporal.pm, AND read ISO 8601.
19:49 nimiezko joined
masak I feel better now. 19:49
TimToady closures are supposed to have their own $/
pmichaud which defaults to... ? 19:50
TimToady which defaults to outer
jnthn masak: oh wow! :-) \o/
pmichaud so how does that work, then?
jnthn TimToady: Oh, so essentialy
masak yary-- # wanting to add more bikeshedding to an already large shed
TimToady $/ is always scoped to the current block, but defaults to a copy of its outer match
jnthn say $x.subst(/(\d+)/, { $/ + 42 });
.subst sets CALLER::<$/> 19:51
pmichaud TimToady: right, that's what we have now.
TimToady which is OUTER to the closure
jnthn And that caller is the outer of the closure?
(We assume that it is..)
TimToady that's the plan
pmichaud wait
I need to find the example that failed for that. 19:52
lue masak: maybe I should comment on this recurring discussion about time, but I'd have to do some research first :)
masak lue: you would, or you'd have to answer to me. :>
pmichaud okay, I was thinking of a different problem.
lue [ not to mention the part where I can afford to ignore my email for a couple of days, so I haven't noticed it's going on :) ] 19:53
masak lue: I've only used my cinnamon bun once, and that was during a Temporal discussion.
19:53 jnthn sets mode: +o masak
masak 哈哈 19:53
pmichaud same is true for .match ? 19:54
TimToady yes
pmichaud looking
TimToady if m// uses match internally, it'll have to hoist $/ an extra level
19:54 gbacon left
TimToady same for any helper that delegates to .match or .subst that wants to set user's $/ 19:55
pmichaud right
I think that .subst uses .match internally, so it has to do the same.
lue masak: just don't expect me to give ISO money to read up on ISO-8601 :) 19:56
TimToady but as with $!, the intent is to clobber the caller's variable so it persists after the call
jnthn Heh. Maybe it's time for me to implement CALLER::
19:56 pyrimidine left
TimToady well, callframe.my<$/> will do :) 19:56
jnthn ooh, yes :-) 19:57
TimToady er, callframe(Routine,1).my maybe
jnthn Something like that
TimToady go to the current Routine callframe and one out from there
masak lue: ISO money? I'm picturing square coins which look like rhombuses because the angle is sorta weird. :)
lue very punny :) 19:58
sorear lue: google around a bit, almost all of the interesting ISO and ANSI standards have legal free versions floating around the net
TimToady I think S06 finesses the definition of caller to work for non-inline lambda calls too, though
but if you know you're in a Routine, that's probably good enough
19:58 Sarten-X left
tylercurtis masak: Wouldn't a "square" with the angle sorta weird be a rhombus and not a square? 19:58
masak lue: what sorear said. I certainly haven't paid any ISO money. I basically read the Wikipedia article, which was goodenuf. 19:59
tylercurtis: nono, they're squares, but they're lying flat on a table or something, and viewed from a non-straight-above angle. 20:00
tylercurtis masak: Oh. Okay.
lue I know. I'm only saying don't expect me to go that far to seem knowledgeable :)
masak tylercurtis: en.wikipedia.org/wiki/File:IsometricFlaw_2.svg
jnthn And Microsoft paid for it to be spec'd that way, and have a patent on the angle. 20:01
masak lue: this is the Internet. I'm not expecting anything. :)
20:01 kensanata left
lue "I have bought a hard copy of every single ISO standard in existence!" "Have you read any of them?" "...maaaybee." 20:03
20:07 c1sung joined 20:10 masak left 20:11 aubreyja left 20:15 eternaleye joined
moritz_ the w3 xhtml validator is funny: I removed 28 errors by adding 4 missing closing tags 20:15
lue .oO[ either they overcount, or it's just to scare you into fixing it :) ] 20:17
pmichaud class LexPad is Associative { 20:18
o_O
"is Associative"?
moritz_ uhm
should be 'does', I assume :-)
jnthn Yes :-)
TimToady or is Hash :)
pmichaud why isn't it just "is EnumMap", ooc?
moritz_ changes, and spectests
sorear wonders how to turn off 'two terms in a row'
pmichaud I have other changes to make there. :)
moritz_ what would we gain from that?
pmichaud I would expect all of the methods available for EnumMap to be available for LexPad 20:19
moritz_ pmichaud: ok, then I'll let you do it
pmichaud like .pairs, and the like.
moritz_ and Associative doesn't provide .pairs?
pmichaud no.
moritz_ I kinda expected it would, in the end
pmichaud .pairs tends to come from Any-list 20:20
Tene sorear: what would you be trying to achieve by doing that?
pmichaud EnumMap overrides that.
TimToady wonders why sorear++ thinks turning off 'two terms in a row' would be anything close to a good idea 20:21
moritz_ a Mathematica-style 2 x to mean 2 * x
TimToady since that's the main thing that keeps Perl grammars from descending into a mazy of twisty little error messages, all wrong
sorear TimToady: because I'm working in a subgrammar with entirely different rules, and it's just confusing me 20:22
moritz_ but... right, we'd lose most error messages
sorear is trying to use STD.pm6 to parse s-expressions
moritz_ uhm
but you're not using a precedence parser for that, are you?
TimToady okay, well, if you're parsing a different language, I'll note that STD::Regex can juxtapose terms
but you'll note that most Regex error messages are "Couldn't find the ]" or some such 20:23
pmichaud does LexPad need to be its own type? How about if we just used an EnumMap for it? 20:24
moritz_ I guess they won't be much more advanced for s-exprs :-)
TimToady you can't turn it into an EnumMap till you're done compiling the scope
pmichaud TimToady: this is at runtime, atm.
moritz_ pmichaud: I saw that Stash is a type of its own... but currently it doesn't need to be one (where it = LexPad)
20:25 Cyrus joined
TimToady it's mostly to get methods on it in P5 :) 20:25
pmichaud callframe(0).my.WHAT # ?
20:25 clintongormley left
TimToady == MY.WHAT 20:25
pmichaud ...and that would be? ;-)
20:25 japhb joined
moritz_ Stash? LexPad? Hash? 20:26
pmichaud Hash implies mutability of keys; not sure we want that.
TimToady you do at compile time
pmichaud good point.
TimToady or when constructing an EnumMap in general...
20:27 lorev joined
TimToady well, .my is kind of a fake hash that looks up in the stash but really returns the current lexpad's entry 20:28
pmichaud I think I'll just make it a Hash for now in Rakudo.
TimToady probably a hash of offsets into the frame's associated lexpad 20:29
so maybe written .my('$foo') rather than .my<$foo> so that you don't have to synthesize an array that is just a wrapper 20:30
maybe close over the lexpad and return a fake hash if they just ask for .my() though 20:31
sort of a pessimal thing to want
20:32 ashleydev left
dalek ecza: e32cb27 | sorear++ | (3 files):
Add a concrete syntax for CgOp
20:34
ecza: e9e5685 | sorear++ | (3 files):
Start moving setting to Q:CgOp
20:36 Cyrus left, Cyrus joined 20:38 uniejo left
lorev .my is msia 20:39
ok nvm
pmichaud locally: 20:40
> $_ = 'food for thought'; say .subst(/o+/, { $/.chars }, :global);
f2d f1r th1ught
spectesting.
jnthn \o/
TimToady \ö/ 20:41
pmichaud rakudo: $_ = 'food for thought'; say .subst(/o+/, { $/.chars }, :global);
p6eval rakudo d51e99: OUTPUT«Method 'chars' not found for invocant of class ''␤ in <anon> at line 20:/tmp/gO5gzpz3Qw␤ in 'Cool::subst' at line 2068:CORE.setting␤ in main program body at line 20:/tmp/gO5gzpz3Qw␤»
pmichaud right.
(making sure I actually fixed something :-) 20:42
jnthn pmichaud: I can patch up the s/// form if your patch doesn't make that work too :-)
pmichaud example using s/// form?
does it automatically make a closure out of the second // ?
jnthn Yes
oh wait 20:43
More itneresting is
tadzik hmm. Is division by zero no longer a bad thing?
jnthn my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x;
moritz_ it's bad, but not necessarily fatal
pmichaud jnthn: did that work before? 20:44
jnthn sure it doesn't
pmichaud fsvo work?
moritz_ rakudo: say (1/0).perl
p6eval rakudo d51e99: OUTPUT«1/0␤»
jnthn rakudo: my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x;
p6eval rakudo d51e99: OUTPUT«Method 'chars' not found for invocant of class ''␤ in <anon> at line 20:/tmp/STnN8NtWLc␤ in 'Cool::subst' at line 2068:CORE.setting␤ in 'Substitution::ACCEPTS' at line 5472:CORE.setting␤ in 'infix:<~~>' at line 411:CORE.setting␤ in main program body at line
..20:/tmp/STnN8NtWLc␤»
tadzik moritz_: then you should update your exceptions chapter :)
(in Perl 5 to 6)
pmichaud > my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x;
f2d for thought
moritz_ \o/ 20:45
ship it!
jnthn \o/
Oh, it'd want to me s:g[o+] ... for all of them.
pmichaud > my $x = 'food for thought'; $x ~~ s:g[o+] = $/.chars; say $x;
Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 1
...can't have everything just yet. :)
moritz_ s:g parsing considered non-trivial 20:46
jnthn my $x = '1 2 3'; $x ~~ s[\d+] *= 2; say $x; # how about this?
oh, I think I dind't implement parsing of that yet
moritz_ rakudo: s[a] += 2;
p6eval rakudo d51e99: OUTPUT«===SORRY!===␤Missing assignment operator at line 20, near "+= 2;"␤»
jnthn Aye
Heh
May do that, it's cute.
[Coke] \ő/ 20:47
20:47 eternaleye left
pmichaud I get a fail in action-stubs.t 20:47
20:48 mariano__ left
pmichaud method TOP($/) { 20:48
"a\nb".subst(/\n+/, '', :g);
what should happen here?
does .subst rebind CALLER::<$/> or does it assign to it? 20:49
moritz_ return "ab"
pmichaud ($/ is readonly here)
moritz_ I'd kinda hope it gets its own $/
pmichaud no, TimToady++ said above that .subst modifies CALLER::<$/> 20:50
moritz_ ok
pmichaud changes it to TOP($/ is rw) for now to pass the test. 20:51
moritz_ +1
jnthn pmichaud: Sounds sane.
moritz_ tadzik: fixed
tadzik++ # pointing out outdatedness in my posts 20:52
tadzik heh, yw. It's still the most reading-friendly docs for Perl 6 imo 20:53
moritz_ I kinda toyed with the idea of making a mini-book out of them 20:54
tadzik I'd love some KnR style book. Nothing fancy, just explaining the language step by step, with some easy examples 20:56
[Coke] tadzik: have you looked at the perl6 book in github? 20:57
tadzik yep, but it's not exactly what I'm looking for. It's nice though, I'm watching its progress 20:58
20:59 whiteknight joined
jnthn rt.perl.org/rt3/Ticket/Display.html?id=68752 # closable now? 21:07
moritz_ +1 21:08
21:12 tadzik left
lorev just curious 21:12
OT
russians invented trinary coding ?
is this true?
21:12 ashleydev joined
jnthn Хуй знает, може быть 21:14
:-)
lorev any idea folks?
mberends lorev: no. and it's handly useful. en.wikipedia.org/wiki/Trinary_logic 21:15
*hardly
[Coke] Хуй?
lorev mberends: what do you mena? it's not very useful? 21:16
jnthn [Coke]: "Хуй знает" together is like "Hell knows"
lorev mberends: much was done to prevent russians from using it 21:17
[Coke] jnthn: has a more interesting direct translation. =-)
lue meh, I go for quantum logic :)
jnthn lorev: Having on or off turned out to be a bunch simpler than trying to differentaite 3 levels with noise margins. :-)
[Coke]: <innocent look>
[Coke] FAIL. 21:18
lorev jnthn: nods
21:18 ejs joined
lue rakudo: say !False ~~ True 21:18
p6eval rakudo d51e99: OUTPUT«1␤»
jnthn lorev: Looks like Polish from the article mberends++ linked. 21:19
lue rakudo: say !rw ~~ readonly
p6eval rakudo d51e99: OUTPUT«Could not find sub &readonly␤ in main program body at line 20:/tmp/na1Z0TMnlq␤»
lorev jnthn: polish?
jnthn Wow. Back in the days when Lvov was part of Poland, even. :-)
21:19 ejs left
jnthn lorev: en.wikipedia.org/wiki/Jan_%C5%81ukasiewicz 21:20
lorev ok mberends pasted this en.wikipedia.org/wiki/Trinary_logic
not sure where you got that link from
:P
mberends lorev: compared with binary, which is easy to make and gives us so much value, ternary/trinary seems more complex to implement and solves only a small number of problems.
jnthn lorev: From the aritcle mberends linked ;-) 21:21
pmichaud I think I'm going to regress on RT #71514.
lue rakudo: say (True&False) ~~ (False&True) 21:22
p6eval rakudo d51e99: OUTPUT«0␤»
lue \o/ quantum-compatible
jnthn woo, back down to 650 RT tickets 21:23
oh, 649 even
pmichaud about to go back to 651 :-)
mberends \o/ a very patchy Rakudo HTTP::Server::Simple::PSGI just said Hello World to a browser, bringing a Perl 6 Dancer a few steps closer
lorev jnthn : ah
jnthn 650 :P
pmichaud 650 even. :-)
lorev mberends: indeed
jnthn pmichaud: Gonna leave trying to fix taht role outer bug until tomorrow. 21:24
pmichaud jnthn: wfm
jnthn pmichaud: It seems that it happens because we do the clone in a loadinit 21:25
pmichaud: At a time when the block never got captured.
pmichaud: er, a get_closure I guess in current terminology 21:26
pmichaud: And that's not directly in a load init, but in a call chain has a loadinit in it.
21:26 rv2733 left
pmichaud jnthn: right. 21:27
that's what I meant by "I think it's more than just a loadinit issue"
jnthn pmichaud: Well, we need to make closures or our role variants'll get messed up. 21:28
21:28 timbunce left
pmichaud they are closures 21:29
jnthn Right.
pmichaud the problem is when the closure gets initialized.
jnthn Yes, which is from a load init.
pmichaud when does the body of a role or class get executed?
jnthn Given 21:30
role R { }
class C does R { }
pmichaud currently the spec says (iirc) that the body acts like a bare block.
jnthn Part of the call to build class C is
trait_mod:<does>($class-we're-making, R)
And it's within there
So it's within the code that creates C
The problem is that a role body can't be a bare block.
pmichaud so, if i have 21:31
jnthn Consider role R[::T] { say T }
pmichaud role R { say 'hello' }
right
jnthn So roles have to be different from classes in that sense.
pmichaud so, it gets executed whenever ... ?
jnthn whenever the role is done 21:32
That is
class C does R { } compiles down to two things
Something we do a loadinit time that makes all the meta-class calls. Including the trait_mod:<does> call that forces R's body to run and produce a role
*at loadinit time
And the other thing is the bare block. 21:33
pmichaud and R is currently scoped where?
21:33 pmurias left
pmichaud i.e., where does the body of R get placed in the PAST tree? 21:33
if the body of R is in the loadinit, that's probably wrongish.
jnthn No, it shoudln't be at all
I'm sure it's just as if you'd written multi R { } or so 21:34
pmichaud Istr thinking "the role body is in the wrong place" when working on the closure stuff.
21:34 timbunce joined
jnthn Oh 21:34
Let me check
My *intention* at least is that it's just like a class's bare block, but it's a sub rather than a bare block.
pmichaud that seems reasoanble. 21:35
*reasonable.
lorev sorry
but anyone understands german here?
es ist ziemlich hier jetzt, Wunder warum, <- what does this mean?
jnthn pmichaud: It's correct
21:35 ruoso left
jnthn pmichaud: The outer of the role body is just the main program body in a "role R { }" example. 21:36
pmichaud but it gets executed via a .loadinit, yes? 21:37
jnthn Yes
It's dynmaic chain is a loadinit
pmichaud that's likely an issue.
jnthn It's static one is not
pmichaud: Compare:
pmichaud because at the point it gets invoked, the main program body hasn't been set_outered to the setting yet.
jnthn rakudo: role Foo { method m { say 42 } }; class C does Foo { }; C.new.m
pmichaud (indeed, the main program body isn't compiled yet)
p6eval rakudo d51e99: OUTPUT«Could not find sub &say␤ in 'm' at line 20:/tmp/lZXCGXQjLm␤ in main program body at line 20:/tmp/lZXCGXQjLm␤»
jnthn rakudo: my role Foo { method m { say 42 } }; my class C does Foo { }; C.new.m
p6eval rakudo d51e99: OUTPUT«42␤» 21:38
21:38 Mowah left
jnthn (my classes are not set up in a loadinit) 21:38
Or even
rakudo: role Foo { method m { say 42 } }; my class C does Foo { }; C.new.m
p6eval rakudo d51e99: OUTPUT«42␤»
pmichaud jnthn: see above.
mberends lorev: something like "it is fairly here now, wonder why". It may make more sense in context.
lorev mberends: thanks:)
jnthn pmichaud: Right, that's exactly the case.
pmichaud I don't know how to fix that. 21:39
jnthn Me either. :-(
pmichaud I mean, the role body needs an outer context at the point where it's executed, but its outer isn't finished compiling yet.
wait 21:40
jnthn pmichaud: Well, it's been compiled, but the lexical relationshipos haven't been set up, that's for sure.
pmichaud with "class C does Foo { }"
when does the .loadinit for C get invoked? 21:41
21:42 timbunce left, timbunce joined
pmichaud jnthn: I think we need to just think about it some more :-) 21:43
jnthn pmichaud: The code to set up C goes into a .sub "!class_init_10" which is called from a loadinit attached to the main program body.
pmichaud jnthn: and it assumes that the role body has already been compiled, yes? 21:44
jnthn What do you mean by "compiled"?
But yes, it assumes that.
pmichaud already converted to PIR and loaded.
21:44 DemoFreak left
jnthn Just as class A is B { } assumes that B is already compiled in that sense. 21:44
pmichaud i.e., if you switched the class init to be BEGIN, it wouldn't work.
21:44 DemoFreak joined
pmichaud because the role wouldn't be compiled yet (unless it was also done via BEGIN) 21:44
jnthn Right, it relies on the class and the role being compiled in the same "stage" (e.g. both in BEGIN or both in INIT) and the calls to the code to set them up being made in the order that they appear in the program. 21:45
I mean, with classes it's also the case that the outer isn't really set up either. 21:46
pmichaud okay, I think I have a partial answer, here.
21:46 gbacon joined
jnthn rakudo: INIT { C.m }; my $x = 42; class C { method m { say $x } } # curious 21:46
p6eval rakudo d51e99: OUTPUT«Could not find sub &C␤ in main program body at line 20:/tmp/ojV72FrLc5␤»
jnthn oh duh
pmichaud C not declared.
jnthn rakudo: my $x = 42; class C { method m { say $x } }; INIT { C.m } # this ;-)
p6eval rakudo d51e99: OUTPUT«Lexical '$x' not found␤ in 'C::m' at line 20:/tmp/5TkBcjmdhz␤ in main program body at line 20:/tmp/5TkBcjmdhz␤» 21:47
jnthn pmichaud: That is an exhibition of probably the same issue
pmichaud I'm thinking the solution is to have a very early .loadinit that sets the mainline's outer.
so that it's done before the other .loadinits take place.
jnthn pmichaud: We just get lucky with classes because need to pre-declare = usually they don't get used until we got a pass over the class body to capture_lex 'em. 21:48
pmichaud right.
anyway, early .loadinit on mainline sounds like what we need.
jnthn So it's not that classes lack the problem so much as it's less apparent.
Yes, that sounds promising.
pmichaud since I just refactored the startup sequence I'm familiar with it -- I'll give it a try.
21:48 SmokeMachine left
jnthn pmichaud: Great - I haven't sync'd my branes up with the refactoring there yet. 21:49
pmichaud right
jnthn Guess this is a good time for me to read through it though.
pmichaud it's pretty simple now, although it may become more complex after this fix.
but it still won't be overly complex.
but yes, if we get the mainline set_outer'd properly before the other loadinits take place, I think that may solve it. 21:50
jnthn Wow, $*SETTING_MODE survived your refactoring. :-)
pmichaud it wasn't in my way :-)
I get rid of things that get in my way :)
21:52 lorev left 21:57 HarryS left 21:58 HarryS joined
pmichaud okay, we now have trouble that with $x .= subst(/l/, 'o'); the caller of subst isn't the thing that has $/ 21:59
or, more to the point
$x .= subst(/o+/, { $/.chars } ) 22:00
subst's caller isn't the closure's outer
jnthn pmichaud: Yeah, the .= helper needs to be a tad more invisible.
pmichaud (its caller is the .=)
22:00 timbunce left
Tene does a .subst set $/ in the context of the call? 22:01
pmichaud it sets $/ of the caller to .subst
jnthn pmichaud: .= is perhaps tweakable to deal with this.
Tene pmichaud: and the caller of .subst is the outer of the {}
jnthn pmichaud: Though not sure if that's the right approach. 22:02
pmichaud Tene: in the normal case, yes.
Tene That's how I always thought that that would work.
pmichaud but as currently implemented in rakudo, $x .= subst(...)
the caller of .subst is the &infix:<.=>
which is not the outer of the closure.
Tene ahh
.= isn't just syntactic?
I guess it wouldn't be. Huh. 22:03
22:03 HarryS left
pmichaud foo() .= subst(...) # can't be purely a syntactic transformation 22:03
well, it *can*, but it's not simply foo() = foo().subst(...) 22:04
Tene Right.
Save the result in a temp, and then mutate.
jnthn Yeah, I've done it syntactically before and it's just messy.
Tene nods.
jnthn Do-able though, for sure.
pmichaud we also have to deal with .*subst and .?subst and the like 22:05
Tene You could also check the caller, and walk a step further out if it's .=, but that's kind of evil.
pmichaud so I don't think the answer is to simply fix .=
TimToady or callframe(Mumble,1).my needs to have a proper Mumble that skips metas
22:06 bkeeler joined
Tene pmichaud: could you have .= bind its caller's $/ ? 22:06
pmichaud TimToady: does .subst assign to $/ or rebind it?
22:07 IllvilJa left
pmichaud Tene: .= rebinding $/ to be its caller might work, yes. 22:07
TimToady depends on whether the defaulting to OUTER::<$/> is an alias or a copy
pmichaud currently the defaulting is an alias 22:08
not a copy
TimToady so if you assign, the inside $/ leaks outward
further than it should
pmichaud correct.
Tene That wouldn't quite work in general, though, as any other method that referred to a CALLER:: would potentially break.
TimToady if it were copied in, you could assign
but with alias, I think bind is needed
to unalias it 22:09
pmichaud so, if we have
22:10 Guest20767 joined
pmichaud 'abc' ~~ /./; 'def'.subst(/e/, { 1 }); # $/ is set to 'e' 22:10
22:10 nimiezko left
pmichaud 'abc' ~~ /./; { 'def'.subst(/e/, { 1 }); } # $/ is set to 'a' 22:10
TimToady maybe there's a 'is service' trait that refrains from allocating $_, $/, or $!, and CALLER always skips those
pmichaud TimToady: does what I just wrote seem correct? i.e., .subst setting $/ doesn't leak outside of the block? 22:11
TimToady or just starts searching for those dynamic variables, and doesn't find 'em, so keeps on going to the user's code
we already have search for dynamic vars, I presume 22:12
pmichaud if we have some way of designating a sub/block that doesn't have a $_, $/, or $! that helps a bit
because we can indeed use dynamic vars there.
we've run into some issues where converting a helper sub to core/p6 has introduced an unwanted $/ dynamic var
TimToady well, how 'bout 'is helper' or some such 22:13
and you always have to write everything explicitly in helpers
pmichaud seems reasonable
TimToady that seems like a cleaner course to me 22:14
pmichaud so then .subst always sets the dynamic $/ ?
(excluding its own, of course)
TimToady .subst itself could be marked 'helper'
pmichaud true
but it still sets the dynamic $/ ? 22:15
and is that an assign or a bind? ;-)
TimToady if we know $/ is dynamic, then it would always just look for where it occurs innermost
22:15 Guest20767 left
pmichaud I thought that $/ was always dynamic. (It was at one point) 22:15
S02:2695 22:17
" (C<$_>, C<$!> and C<$/> are always
dynamic, as are any variables whose declared names contain a C<*> twigil.)
"
TimToady yes, but the new trick is not to create one every level
pmichaud right
no problem there.
so then my question is still "assign or bind"?
TimToady and may answer is still, depends on how it's initialized to OUTER 22:18
pmichaud okay
and we don't know that yet?
TimToady you said it's an alias, so you need a rebind
pmichaud (currently we have $/ = OUTER::<$/>, almost like a parameter bind
er
TimToady if it were a copy, you could assign
pmichaud $/ := OUTER::<$/>
22:19 HarryS_ joined
pmichaud I guess my question is really "do you think it should be a copy or an alias?" 22:19
i.e., if I have:
TimToady well, alias is cheaper when it works, but if so, we have to be able to rebind a dynamic var in place 22:20
pmichaud 'abc' ~~ '.'; if $other { 'def' ~~ /./ }; say $/
or even
'abc' ~~ '.'; if $other { $/ = 'hello'; }; say $/
TimToady that should keep the outer $/ the same, yes
I think... 22:21
pmichaud and I meant /./ above, not '.'
TimToady nod
pmichaud and "outer $/ the same" meaning "result of the match, not of the inner assignment"?
c.f.
TimToady yeah, sorry
sbp (cf.)
pmichaud $_ = '3'; if $other { $_ = '4' }; say $_;
TimToady but that kinda implies not an alias
or some kind of COW 22:22
pmichaud well, "alias" is really something along the lines of "is rw"
"not an alias" is really something along the liens of "is copy"
*lines
TimToady can we make subst's $/ := match rebind the caller's lexical $/ slot? 22:23
pmichaud yes, I think so.
I mean, I know we can do it in rakudo. 22:24
(might have to do some tricks, but yes.)
TimToady so dynamic variables are bvalues, potentially
$*ENV := my_new_env
pmichaud oh, I see what you're saying.
TimToady that's what it implies
pmichaud we do have a store_dynamic_lex opcode available to use, yes.
it rebinds the symbol itself, as opposed to the container.
so yes, I can do bvalue there 22:25
TimToady considering you had to look it up in a name space somewhere, it had to have traversed its bvalue somehow :)
pmichaud well, looking it up is find_dynamic_lex
and it just gives me the container, not the the pad
but yes, I can rebind it. :-)
TimToady you'd need the pad to replace the pointer to the container
pmichaud store_dynamic_lex replaces it in the pad
TimToady maybe doing that needs a MONKEY_PATCHING equivalent 22:26
or permissing from the var
*sion
or we just say its erroneous if the optimizer has assumed a particular binding and you change it 22:27
I think certainly we shouldn't allow rebinding of a dynvar that is intialized with ::=
pmichaud is that true for vars in general or only dynvars? 22:28
TimToady doesn't know, but likes generality when it doesn't get in the way
22:28 IllvilJa joined
pmichaud well, last interpretation of ::= that I had was that vars could be rebound. 22:29
since it's the same as parameter binding
(read-only parameter binding, taht is)
TimToady right
I'm pretty consistently inconsistent. :)
pmichaud anyway, your current feeling is that setting of $/ by .subst and .match shouldn't leak into outer scopes? 22:30
TimToady perhaps there's an 'is rebindable' trait that is default on for parameters
pmichaud I can make that work for now and see what happens.
TimToady but could default to off in other places; but it would be on for $/ and $! and $_ too 22:31
pmichaud seems like is rebindable would be defaulted on for most everything
except dynvars, maybe.
TimToady the optimizer might like it off for most lexicals
pmichaud right
22:37 HarryS_ left
pmichaud time for lunch here 22:37
bbl
22:39 ashleydev left 22:40 HarryS joined 22:41 skids left 22:52 kfo joined 22:53 kid51 joined 22:55 kfo_ left 23:04 cbk left 23:05 DemoFreak left, DemoFreak joined 23:06 kfo left, lestrrat is now known as lest_away 23:07 masonkramer joined, DemoFreak left, jimk joined, kid51 left, DemoFreak joined 23:09 Guest41149 left
dalek kudo: 98163f7 | jonathan++ | src/Perl6/Actions.pm:
Fix generation of attribute initializers so that the generated anonymous method

we have attribute initializers inside parametric roles that reference the role parameters too.
23:11
23:11 xabbu42 joined 23:12 eternaleye joined
TimToady rakudo: module Foo; class A is export {} 23:18
p6eval rakudo d51e99: OUTPUT«===SORRY!===␤Could not find sub &chars␤» 23:19
jnthn ...uh.
Looks like a meta-error. :S 23:20
TimToady I can't rewrite TrigTestSupport to be happy to STD without exporting classes, sigh
jnthn Oh? 23:21
colomon what's up with it?
jnthn looks at it
TimToady well, currently it just pokes some packages into global that aren't related to the name of the file
so STD picks up the first package name, and saves a AngleAndResult.pm.syml file 23:22
jnthn TimToady: Is that STD limitation or Rakudo fail?
TimToady so I try making it a module TrigTestSupport;, and then I have to export
jnthn TimToady: Rakudo looks in the namespace and and spots the typenames.
TimToady STD uses the package name, not the file name, because otherwise it doesn't know where in foo/bar/baz/blech.pm the module name starts 23:23
could be blech, or baz::blech, or bar::baz::blech
jnthn Ah, OK
TimToady so it assumes all modules have a class name matching the 'use' name
23:23 Ross left
TimToady (or module name, package name really) 23:23
but TrigTestSupport breaks that
colomon would it work if it were renamed AngleAndResult.pm? 23:25
TimToady no, because then the other classes wouldn't show up in the .t
sorear is what TrigTestSupport does considered good form? 23:26
TimToady probably not PBP :)
23:27 meppl left
sorear P6BP? 23:28
TimToady the more fundmantal problem is that rakudo is treating the argument to 'use' as primarily a filename rather than primarily a module name 23:35
23:38 azert0x left
TimToady there is a piece of data out there named 'module Foo::Bar;' and 'use Foo::Bar;' needs to find that piece of data regardless of how that name gets mapped onto storage, which might not even be a file system 23:39
iow the module name space is intended eventually to be completely independent of filesystem names in the same sense that URLs are 23:42
23:42 patspam left
ingy greetings! 23:44
TimToady: wanna help me design a language?
jnthn TimToady: Well, we already have module location and module loading factored out into different classes, which are called from the actions. So it's already separated out somewhat.
ingy TimToady: I need an infix operator for `index` 23:45
TimToady so write one :)
ingy TimToady: I'm just askin for that TimToady feel, man
it's not for p6 23:46
it's an assertion op for testml. this string contains that string... 23:47
TimToady well, there's always 'this string' ~~ /that string/ 23:48
if you only care about whether
jnthn ~.. (at start of string), ..~ (at end of string), ..~.. (somewhere in the string) ;-)
Tene .u ELEMENT OF
phenny U+2208 ELEMENT OF (∈)
Tene Why not that?
TimToady er, cause strings aren't sets?
Tene Eh, I guess.
.u CONTAINS AS A MEMBER 23:50
phenny Tene: Sorry, no results for 'CONTAINS AS A MEMBER'.
lue they can be if you look at them as a series of bytes :)
ingy I was considering ~~, but this is a DumpMatch™
grr
DumbMatch™
jnthn lue: Nooooooooo!!!!! :-) 23:51
ingy lue: sets have unique elements 23:52
lue "hello there".powerset # muhahahahahahaha
ingy is probably wrong :)
lue now has an idea to create infinite cardinals in P6 (again) 23:53
23:56 Psyche^ joined, Patterner left, Psyche^ is now known as Patterner
sorear I wonder if it would make any sense to declare that final classes don't have undefined type objects. 23:59