pugscode.org/ planetsix.perl.org/ | nopaste: sial.org/pbot/perl6 | evalbot: perl6: say 3; (or rakudo:, pugs:, elf:, etc) | irclog: irc.pugscode.org/ | ~330 days 'til Xmas
Set by mncharity on 25 January 2009.
Tene hi 00:00
shinobi-cl rakudo is a cool name for perl6, even better than perl6 i think... 00:08
sounds like some kind of martial art
00:11 sri_kraih_ left 00:20 vixey left 00:24 ayrnieu joined 00:37 rabbits77 joined 00:39 legis joined 00:42 andrew_ joined, wknight8111 left 00:45 rabbits77 left 00:49 silug joined 00:53 s1n joined
shinobi-cl i've read somwhere (cant remember where) about a perl6 feature called "shape" 00:53
what happened to that? and, what was the idea? 00:54
TimToady see S09:288 01:04
shinobi-cl thanks! 01:05
01:06 hanekomu left, SamB joined
shinobi-cl thats would be great for voxel models 01:07
TimToady nobody actually implements it yet, of course... 01:08
but jnthn++ sez that rakudo is getting close
shinobi-cl the ";" is still the dimension separator? 01:09
TimToady yes 01:10
shinobi-cl ouch
TimToady allows slices in each dimension
slices are important :)
you can always use the [][][] notation too, but that's even uglier 01:12
and doesn't parallelize as easily 01:13
shinobi-cl oh cool :) thats good to know. i agree that [][] is uglier, but i always relate ; with end of sentence.... is just one of those things that are hard to forget. 01:14
TimToady the lists in [list;list;list] are independently lazy
well, the lists in [list][list][list] are also indendently lazy, but it's harder to see 01:15
shinobi-cl perl6 will be the best toy ever :) i had sooo much fun with "roles" today. Is so great that is hard to think "how do i live all those years without them".... 01:16
TimToady allowing statements in there also gets us list comprehensions for free
shinobi-cl shapes seems to be fun also, cant wait to start playing with that
TimToady my @foo = @bar[$_ if * % 2 for 1..*] # all the odd elements 01:19
shinobi-cl noted 01:20
TimToady though @foo = @bar[1,3,5...*] might be easier to grok
01:23 shinobi-cl left
TimToady hmm, @foo = @bar[1,3,5..*] would be an epic fail :/ 01:29
01:29 andrew_ left
diakopter (1..*).odds 01:30
frew why would it be an epic fail?
TimToady to get 1,3,5,6,7,8,9 when you wanted 1,3,5,7,9...
just because you left out one .
frew ah 01:31
I couldn't see it
TimToady indeed
frew is that part of perl6?
TimToady yes
frew that style syntax?
haha, that's cool
although I can't see myself using it ever
it would be nice, but how often do I just use odd numbers? 01:32
TimToady a specialization of 1,1 ... { $^a + $^b } # fibonacci
frew maybe for like, server side zebra striping
wow
does that work?
TimToady it's specced
frew ah, ok 01:33
so not yet
diakopter std: 1,1 ... { $^a + $^b }
p6eval std 25101: OUTPUT«00:04 72m␤»
frew so if I wanted factorials I could do 1,2 ... { $^a * $^b } ? 01:34
anyone else here agree with masak's journal about wishing we had irb in perl6?
TimToady well, you could, but [\*] 1..* is shorter 01:37
perl6: say [\*] 1..10
p6eval rakudo 36127: OUTPUT«Statement not terminated properly at line 1, near "1..10"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
..pugs: OUTPUT«126241207205040403203628803628800␤»
..elf 25101: OUTPUT«/home/evalenv/pugs/misc/STD_red/match.rb:117:in `block in to_dump0': undefined method `to_dump0' for nil:NilClass (NoMethodError)␤ from /home/evalenv/pugs/misc/STD_red/match.rb:117:in `map'␤ from /home/evalenv/pugs/misc/STD_red/match.rb:117:in `to_dump0'␤ from
../home/evalenv/pugs/...
frew that's kinda a bizarre syntax
why the \? 01:38
TimToady it's a triangle
frew ???
pugs: say [+] 1..5; say [*] 1..5
p6eval pugs: OUTPUT«15␤120␤»
frew Why not just do that?
TimToady each result tends to get longer, and if you print one on each line...
you were defining a list of all the factorials, not just one 01:39
frew oooh
TimToady pugs: say join ' ', [\*] 1..10
p6eval pugs: OUTPUT« ␤»
frew so if I want a sum I should do [\+] 1..5
TimToady pugs: say join(' ', [\*] 1..10) 01:40
p6eval pugs: OUTPUT« ␤»
TimToady pugs: my @x = [\*] 1..10; say ~@x
p6eval pugs: OUTPUT«1 2 6 24 120 720 5040 40320 362880 3628800␤»
frew rakudo: say join(' ', [\*] 1..5)
TimToady there you go
p6eval rakudo 36127: OUTPUT«Statement not terminated properly at line 1, near "(' ', [\\*]"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
frew ok 01:41
so [\opp] means gimme a bunch of lists
and [opp] is vanilla reduce
TimToady yes, \ gives all the partial results
frew ok
I can see wanting that
TimToady and since almost no infix operators start with \...
frew right 01:42
TimToady it's hard to get the triangle effect in irc though
frew should I type it in vim or something 01:43
TimToady 1
2
6
24
120
frew oooooh
TimToady 720
frew gotcha
TimToady 5040
40320
362880
3628800
that's the triangle 01:44
diakopter TimToady: how about octal..
TimToady everyone 8's octal
diakopter )
TimToady 8) 01:45
^ kermit
std: :( 8) it's not easy being green 01:47
p6eval std 25101: OUTPUT«############# PARSE FAILED #############␤Syntax error (two terms in a row?) at /tmp/mVRfF480kk line 1:␤------> :( 8) it's not easy being green␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤
..terminator␤00:04 63m␤»
TimToady 8> # gonzo 01:51
01:51 hercynium joined
pugs_svn r25102 | lwall++ | [S02] reserve PERL and FILE lexical scope names 01:54
01:54 eternaleye joined 01:55 jhuni joined
pugs_svn r25103 | lwall++ | [delete.t] there is no delete function 01:55
r25104 | lwall++ | [STD,t] next,last,redo,break,goto can now be parsed as ordinary functions/listops 01:57
r25105 | lwall++ | missing comma 01:59
frew I am in ord_and_chr.t and I am skipping a for loop 02:01
and the skip thinks I am skipping 2 02:02
but I am skipping something like 200
how can I tell it that?
02:03 lambdabot joined
TimToady put the skip inside the loop? 02:04
frew ah, clever.
TimToady or there's always emit
s1n frew: could always just say exactly how many you're skipping after the skip 02:05
grep for skip, you'll find it eventually
frew eh, this works
I like to think that these skip things are temporary so trying for elegance in them is a waste of my time 02:06
02:06 DemoFreak left
s1n #?rakudo 200 skip 'bleh' 02:06
TimToady that's skip the next 200 linear tests
won't work on a loop 02:07
frew well, it's a dynamic number
ah
ok
so still, in the loop works best apparently
s1n could also put the test in a block and skip the block
frew but then my plan is wrong.
because it only sees 2 tests
but there are 200
because it's a loop
Tene so fix your plan.
TimToady the plan's not wrong :) 02:08
s1n are plans dynamic?
02:08 aindilis` joined
frew this one is 02:08
plan 36*@maps*2;
er 36+@maps*2l
gracious
s1n oh, yeah that's fine
i was asking about changing the plan after-the-fact 02:09
frew 36+@maps*2;
anyone know if you can do vertical splits in screen?
Tene frew: with the latest version you can 02:10
^A |
frew hoho
that's great
thanks
s1n TimToady: are you familiar with rakudo's version of STD.pm? (languages/perl6/src/parser/grammar.pg) 02:11
frew vimsplits and screen splits make using a single 15 inch monitor totally bearable :-)
s1n TimToady: or any of the other parser/* files for tha tmatter 02:12
TimToady s1n: no, I try to stay away from everyone else's implementations for their own good. :)
s1n heh okay, thanks 02:13
02:13 aindilis` left
s1n anyone else in here familiar with rakudo's parser? i'm trying to find something 02:13
02:13 alester_ joined
pugs_svn r25106 | frew++ | [t] Added named arg tests for ord and chr 02:14
TimToady decommuting & 02:15
s1n jnthn: i see you name on the commit of grammar-oper.pg, can you help me find something? 02:16
frew how is this syntax supposed to work: %h<b>:delete 02:22
02:22 aindilis left, aindilis` joined
frew I realize that it's deleting b from %h 02:22
but I just don't see how the syntax makes
sense, vs %h.delete <b> 02:23
Ok, it looks like :delete isn't a method but something else entirely 02:27
Someone let me know at some point if I'm right
s1n i believe :delete would be the adverbial form, which triggers the delete 02:31
frew k, I don't think that needs named arg testing 02:33
02:35 pmichaud joined
s1n pmichaud: ping 02:38
pmichaud pong
s1n i'm playing with Ranges, and I want to modify the parser, i was wondering if you could point me in the right direction 02:39
where are the infix/prefix methods defined? 02:40
i found them in the src/parser/grammar-oper.pg, but i don't see where the protos turn into anything else
pmichaud grammar-oper defines the tokens 02:43
the actual functions are probably in src/classes/Range.pir
how are you wanting to modify the parser?
s1n i'm learning PIR, rakudo internals and all, so i figured i'd add :by to Range 02:45
pmichaud the adverbs are actually part of the other parts of the parser, not part of the token
as far as the functions are concerned, it'll just be a named parameter.
s1n right, i have it added to Range.pir as a named parameter, but i need to add the adverb to the parser 02:46
pmichaud that would involve adding adverbs to the entire parser, not just for ranges.
02:46 aindilis joined
s1n is that not supported yet? anywhere? 02:46
pmichaud not in rakudo
we'd need to look at how it's handled in STD.pm
s1n heh okay
well i definitely bit off more than i could chew 02:47
frew can someone tell me if this method sig foo "(%bar ; $baz)" is a typo?
pmichaud looks like adverb handling in STD.pm is handled by expression parser
loop { # while we see adverbs
s1n pmichaud: hmm, that sounds like more than i understand right now 02:48
pmichaud it's a bit out there for me as well. 02:49
s1n well, crud
pmichaud although I'm glad I didn't try to tackle adverbs before now, since it's changed quite a bit since last time I looked at it ;-)
s1n not wasting time/effort is always good
well, i'm getting more familiar with PIR
still getting a grasp on the lay-of-the-land though 02:50
i'd like something i could start working on
i'm just unsure what needs huge amounts of work and what is possible now 02:51
the calm is eerie 02:59
frew s1n: agreed
s1n frew: i was wondering if i was in irc purgatory 03:00
03:00 aindilis` left, aindilis left
frew well, if you are I am too? 03:00
03:00 aindilis joined
s1n hmm dunno 03:01
i was mid-conversation with pmichaud and either he went afk suddenly, or i'm out in the void now 03:02
frew maybe he had to get dinner
or she, I dunno
s1n he, heh
ahh, the dalek bot in #parrot leads me to think he just went afk 03:03
frew well, I read somewhere on use.perl.org someone said something about audrey tang and they said that "you are a free spirited guy" or something like that
and she was like, "Yeah, I am a free spirited girl" 03:04
it was funny
s1n dude named audrey? man, that child would be tomented to no end 03:05
literal what does sial.org/pbot/perl6 use for highlighting? 03:07
03:07 jferrero left
literal it doesn't work very well... 03:07
frew literal: no clue, but I found another weird issue with vim with perl6.vim
literal what issue? 03:08
frew check S29-list/end.t
it's weird because it's really short
literal what's weird about it? looks fine here
frew but if you load the file (with the filetype set) at the end everything looks fine, but after scrolling up just a few lines it gets all comenty
mm
maybe I should add those commits you did today 03:09
literal yeah, when you open the file anywhere else but at the top, that can happen
don't know why
frew well, it's kindav expected
s1n frew: i've seen vim get confused with the filetype before, i.e. scrolling quickly over PIR
frew what would be best would be if vim could get the AST from perl6 or something
literal frew: vim doesn't allow that 03:10
frew s1n: yeah, it happens to me at work with js all the time
literal but other editors do, like Padre
frew literal: yeah, I know
well, Padre is written in perl right?
literal yeah
frew so it doesn't count :-)
literal you could probably do it with emacs, I hear it's more programmable than vim
frew steve yegge wrote an entire javascript engine in emacs 03:11
but he said it was a pretty terrible experience
s1n he write it in lisp/scheme? 03:12
that would be a terrible experience
frew yeah
emacs lisp
which I read is not as nice as other lisps?
pugs_svn r25107 | frew++ | [t] added named arg test to end
s1n isn't that just scheme?
frew steve-yegge.blogspot.com/2008/11/ej...emacs.html
no clue 03:13
I've not delved into lisp or scheme more than a little
03:14 hercynium left, kid51 left 03:17 Limbic_Region left
pugs_svn r25108 | frew++ | [t] added named arg test for first 03:25
r25109 | frew++ | [t] added named arg test for grep 03:28
03:30 aindilis` joined
aindilis` emacs lisp is somewhat archaic 03:36
03:44 aindilis left 03:53 simcop2387 joined 03:54 simcop2387-vnc joined 04:10 aindilis` left 04:11 meppl joined 04:33 ChrisDavaz left 04:38 shinobi-cl joined 04:39 kisu left 04:44 shinobi-cl left 04:46 ChrisDavaz joined, shinobi-cl joined 05:12 meppl left 05:25 ChrisDavaz left 05:38 stephenlb left, kisu joined 05:42 shinobi-cl left 05:43 mtnviewmark joined 05:45 mberends joined 06:03 frew left 06:10 aindilis joined 06:18 shinobi-cl joined 06:28 frew joined 06:36 justatheory left 06:44 ashizawa joined 06:51 aindilis` joined 07:01 meppl joined 07:03 araujo joined 07:04 aindilis` left 07:05 aindilis` joined, aindilis left 07:10 mberends left 07:17 shinobi-cl left 07:36 aindilis` left, kisu left 07:43 masak joined 07:46 iblechbot joined, mtnviewmark left 07:54 kisu joined 08:00 ejs joined
masak if I want to build a .new constructor with mandatory named arguments, how do I write? 08:04
method new( :mandatory! ) { ... } # something like this? what's the '...' supposed to be?
08:08 alester_ left 08:10 ejs left, DemoFreak joined
moritz_ call bless, if I got that right 08:12
(and maybe CREATE) 08:13
perlcabal.org/syn/S12.html#Construc...ialization
masak danke. 08:16
08:19 DemoFreak left 08:25 zamolxes joined 08:26 pbuetow joined 08:27 DemoFreak joined 08:29 pbuetow left 08:39 hanekomu joined 08:45 |jedai| joined 08:52 DemoFreak left, DemoFreak joined
masak if anyone would like to try and follow the new installation instructions at github.com/masak/druid/ I'd much appreciate it. 08:53
09:05 km2 left 09:18 ejs joined
masak is putting a concrete default implementation into a role advisable? 09:31
moritz_ yes
masak what about if it requires an attribue?
moritz_ roles are for code reuse
then you add an attribute to that role
masak \o/ # just as I hoped!
moritz_ classes are for interfaces
masak moritz_: I'm doing the Observer pattern for Druid. which one would you prefer, Druid::BoardObserver or Druid::Board::Observer? 09:32
moritz_ the latter 09:35
Matt-W definitely the latter 09:36
masak I'm glad I asked, then. :)
Matt-W Does anybody test Parrot/Rakudo on OpenSolaris? 09:37
moritz_ Matt-W: not according to smolder.plusthree.com/app/public_pr..._reports/8 09:38
Matt-W that could be interesting then
my new home server will be running opensolaris
moritz_ nice 09:40
Matt-W wouldn't be hard to run up parrot on it from time to time 09:41
moritz_ heard a talk about Nexenta (Debian+Opensolaris) at debconf
pugs_svn r25110 | moritz++ | [irclog] no monkey-patching, rg++ 09:44
Matt-W yeah I looked at nexenta
as I'm really after the kernel's ZFS support
but it doesn't really seem mature enough
opensolaris itself is only just there 09:45
moritz_ aye, don't think nexenta is really usable 09:46
masak rakudo: role A {}; class B is A {} 09:54
p6eval rakudo 36139: OUTPUT«Null PMC access in get_string()␤current instr.: '!meta_trait' pc 18676 (src/builtins/guts.pir:551)␤»
masak submits rakudobug
don't we have tests for these things? :/ 09:55
moritz_ masak: yesterday I tried to write tests for similar things, and they all suffered from assertion failures that eval() didn't catch 09:56
masak moritz_: good to know that someone at least had the idea to test it.
masak ponders writing a random Perl 6 code generator that creates syntactically correct garbage, and just running it constantly against Rakudo 09:57
std: role A {}; class B is A {} 10:00
p6eval std 25110: OUTPUT«can't create lex/STD/termish.store: Permission denied at Cursor.pm line 534␤00:05 79m␤»
masak something's slightly wrong with the STD eval today. 10:01
moritz_ ORLY? :-) 10:04
std: role A {}; class B is A {}
p6eval std 25110: OUTPUT«00:04 58m␤» 10:05
masak moritz_++
10:07 ejs1 joined
moritz_ first the svn bot gives me karma for writing crappy code, and then you give me karma for repeatedly cleaning up the mess I made before ;-) 10:10
10:10 jhuni left
masak moritz_: you've just described most of the development I do. :) 10:11
so protoobjects are defined? 10:13
rakudo: class A {}; my A $a; say $a.defined
p6eval rakudo 36139: OUTPUT«1␤»
masak didn't know that 10:14
how do I distinguish a protoobject from a .new-ed one?
moritz_ well, that's wrong
masak submits rakudobug
moritz_ my $a; say $a.defined
perl6: my $a; say $a.defined 10:15
p6eval rakudo 36139: OUTPUT«0␤»
..elf 25110, pugs: OUTPUT«␤»
moritz_ perl6: class A { }; my A $a; say $a.defined
p6eval rakudo 36139: OUTPUT«1␤»
..elf 25110, pugs: OUTPUT«␤»
moritz_ stringifying False to '' seem so perl 5ish
masak hah, two against one :) 10:16
10:17 ejs left
moritz_ perl6: class A { }; my A $a .= new(); say $a.defined 10:18
perl6: class A { method b ($x, :$y) { say "$x, $y" }}; A.new.b(2, :y<3>, :z<4>);
p6eval pugs, rakudo 36139: OUTPUT«1␤»
..elf 25110: OUTPUT«␤»
elf 25110: OUTPUT«$x, $y␤»
..pugs: OUTPUT«2, 3␤»
..rakudo 36139: OUTPUT«too many named arguments - 'z' not expected␤current instr.: 'parrot;A;b' pc 167 (EVAL_19:70)␤»
10:18 riffraff joined
moritz_ masak: care to submit a rakudobug? 10:19
jnthn morning all
moritz_ hi jnthn
irclog.perlgeek.de/perl6/2009-01-28#i_870566
"methods ignore unrecognized nameds, but subs don't"
jnthn: want to add that to your dispatcher?
masak moritz_: there already is one for that.
moritz_ ah, ok
jnthn moritz_: We don't want it in the dispatcher, but rather just want to generate an implicit *%_ parameter, I think. 10:20
For methods.
That shouldn't be too hard. 10:21
masak jnthn: ahoj.
jnthn masak: Ahoj! Vienna.pm are giving me more Rakudo days! The fight back against your ticket filing insanity begins shortly. ;-)
moritz_ jnthn: ah, maybe that's better
woah
masak jnthn: good luck.
moritz_ Vienna.pm++
jnthn Indeed. :-) 10:22
moritz_ can't say it often enough ;-)
jnthn masak: Yeah, I'm sure you'll be filing plenty more to keep me busy if I ever look like I'm making a dent in it. ;-)
masak jnthn: you bet.
but I don't mind a bit of resistance.
ah, here: rt.perl.org/rt3/Ticket/Display.html?id=61480 10:24
rakudo: class A {}; my $a; say $a === A 10:25
p6eval rakudo 36139: OUTPUT«0␤»
masak ah, no such luck :/
10:25 |jedai| left
jnthn masak: Why would that work? 10:25
10:25 |jedai| joined
jnthn Erm, why woudlnt' it give that result, that is? 10:25
masak no, I can't think of a way to distinguish protoobjects from initialized ones.
jnthn rakudo: class A {}; my A $a; say $a === A 10:26
p6eval rakudo 36139: OUTPUT«1␤»
masak jnthn: oh!
thanks. :)
jnthn ;-)
masak almost missed a perfectly good workaround.
jnthn I totally don't understand what problme you're trying to solve, but I'm happy to provide a solution anyway. ;-)
masak rakudo: class A {}; my A $a .= new; say $a === A
p6eval rakudo 36139: OUTPUT«0␤»
10:26 Caelum joined
jnthn masak: Right, because then it's not the proto-object in $a, but rather an instance. 10:27
masak jnthn: I'm working around #62894
jnthn oh, hmm
jnthn will be mostly disappearing for a few days again 10:29
It's for a Perl workshop this time, though. ;-)
masak that's almost excusable. :)
10:29 DemoFreak left
masak lunch & 10:30
10:33 rafl left 10:45 bacek joined 11:00 ChrisDavaz joined, ChrisDavaz is now known as TheOrz 11:09 riffraff left 11:19 jhuni joined 11:26 ejs1 left 11:27 ejs1 joined, hanekomu left 11:41 riffraff joined 11:46 [particle] left 11:47 [particle] joined 11:58 iblechbot left 12:04 ashizawa left 12:05 shinobi-cl joined 12:14 shinobi-cl left 12:22 hanekomu joined 12:29 gazz_ joined
pugs_svn r25111 | moritz++ | [t/spec] test that methods allow addtional named arguments 12:30
12:30 smtms left 12:34 broquaint joined
masak I've found another blocker: #62898. 12:42
masak tries to summon pmichaud
moritz_ congratulations :( 12:43
masak this means I'm blocked in two places in Druid.
but oh well.
moritz_ in the old days you'd just worked around it 12:44
masak moritz_: I'd complain less it that were possible.
I always try to work around things.
moritz_ masak: sure it is. name your class A_ iinstead of A
masak moritz_: oh! of course! thanks. :)
moritz_ digitizer.sourceforge.net/ that's some cool software 12:45
12:46 iblechbot joined 12:48 broquaint left
masak rakudo: role A::B {}; say 42 ~~ A 12:48
p6eval rakudo 36143: OUTPUT«invoke() not implemented in class 'NameSpace'␤current instr.: '_block14' pc 65 (EVAL_19:40)␤»
masak submits rakudobug
note how I managed to avoid the rethorical question about test converage this time. :) 12:49
s/conv/cov/
rakudo: role A::B {}; A
p6eval rakudo 36143: OUTPUT«invoke() not implemented in class 'NameSpace'␤current instr.: '_block14' pc 59 (EVAL_19:38)␤»
12:52 broquaint joined 12:53 xinming left 12:54 xinming joined
masak rakudo: class A::B {}; my A $a 12:57
p6eval rakudo 36143: OUTPUT«Scope not found for PAST::Var '$a' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)␤»
masak rakudo: class A::B {}; role C { has A::B $!ab }; class D does C { method foo { say $!ab === A::B } }; D.new.foo 13:06
p6eval rakudo 36143: OUTPUT«0␤»
masak submits rakudobug
13:07 iblechbot left
Matt-W masak: that should have said true? 13:08
masak IMO, aye.
rakudo: class A {}; role C { has A $!a }; class D does C { method foo { say $!a === A } }; D.new.foo
p6eval rakudo 36143: OUTPUT«0␤»
masak oh, that case is simpler
rakudo: class A {}; my A $a; say $a === A 13:09
p6eval rakudo 36143: OUTPUT«1␤»
Matt-W attributes aren't initialising to the correct protoobjects then
moritz_ masak's last example is correct
masak Matt-W: they seem to be.
moritz_ undefined objects with type annotations should be initialized with the protoobject 13:10
masak moritz_: they seem to be.
they're just not ===-equal to each other
oh, even simpler: 13:12
rakudo: class A {}; class D { has A $!a; method foo { say $!a === A } }; D.new.foo
p6eval rakudo 36143: OUTPUT«0␤»
masak I should go back to minimizing first and spam the channel later.
moritz_: how do I work around this one? :) 13:13
moritz_ masak: with an init method that assigns the prototype to $!a 13:14
masak (the funny thing is that the place where I'm doing that already contains two workarounds)
moritz_: ah ha ha! 13:15
masak tries
moritz_: no, that doesn't quite cut it. the check is part of a few lines of code that calls an init method (because I don't want to do it manually from the calling code). as far as I can see it's a Moment 22. 13:17
13:17 jhuni left
masak um, Catch 22. 13:18
guess I'll just have to call the init method manually, then. 13:19
13:20 |jedai| left 13:23 |jedai| joined 13:28 riffraff left
jnthn masak: Type annotations on attributes stopped functioning during rvar merge IIRC...we were going to fix them up shortly after the merge, but it didn't happen yet. :-| 13:41
ETOOFEWHANDS
Matt-W TOOFEWJNTHNS 13:43
hmm where did the E go
masak jnthn: ok, good to know the cause isn't thoughtlessness. 13:44
I'm using object/role hierarchies for the first time, so I'm bound to run into these things. 13:45
13:47 shinobi-cl joined 13:48 shinobi-cl left 13:50 shinobi-cl joined, shinobi-cl left
jnthn masak: Oh, for sure. There are quite a few roles tests by now, but of course there will be edge cases, and how it handles (or doesn't handle) things that are incorrect. 13:54
rakudo: class A is B { }
p6eval rakudo 36143: OUTPUT«The type B does not exist. at line 1, near "{ }"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
jnthn Whee. :-)
pmichaud good morning 13:55
jnthn I thought there was a ticket for that giving a bad error before, but I didn't find it...
pmichaud: Morning
How's things?
masak morning!
pmichaud pretty good.
moritz_ jnthn: there was, and it mostly happens in evals
jnthn moritz_: Ah, I closed an eval ticket. 13:56
pmichaud so far (still reviewing one or two emails) it looks like we'll move Rakudo to git.
jnthn moritz_: As in, testing that in evals.
Matt-W afternoon!
pmichaud so that's my task for the morning.
jnthn pmichaud: OK. :-)
pmichaud actually, my task for the day, since we'll also have to update all of the instructions.
jnthn pmichaud: I'm flying to Bulgaria tomorrow, and then giving a talk on Rakudo on Saturday.
moritz_ jnthn: unfudge the tests in t/spec/S02-literals/types.t, and try to run it - you'll see waht I mean
jnthn So updated instructions for then is good!
Matt-W pmichaud: it's going to need some careful checking isn't it
pmichaud oh, I don't know about careful checking. We'll get bug reports quickly, I suspect. 13:57
release early + often
Matt-W lol 13:58
pmichaud we may need to come up with daily tarballs somewhere, though.
Matt-W Between the occupants of #perl6 we'll probably figure out the problems pretty fast I'd guess
where's it going to be hosted?
pmichaud if moving to git, I expect to host the repo on github for now.
but we'll have a DNS entry that moves around so that people don't have to know where that is. 13:59
moritz_ I will, but likely only on Sunday and later
jnthn (DNS entry)++
moritz_ (testing, that is)
Matt-W makes sense
and github should provide sufficient capabilities for now
pmichaud if it doesn't, I'm told that it's very easy to move git repos to other locations.
moritz_ it is indeed.
pmichaud of course, I'm also told that git also cures cancer and makes you look younger, so we'll see. :-) 14:00
Matt-W disturbingly easy
masak git cures a lot of things. 14:01
Matt-W a few of us at work are trying to get the idea that git is better for our working model than subversion to propogate into the solid concrete which makes the decisions about software systems
pmichaud in other cool news, my new laptop arrived. It's 33% faster than my desktop at building Parrot. :-) 14:03
Matt-W when they start talking about every team having a branch, and a global trunk that we merge into and from regularly, and feature development branches from the team branches, you start to think DVCS...
pmichaud ...which makes me wonder about my desktop.
Matt-W heh
don't get stuck in the upgrade loop
it's not good for the bank balance 14:04
pmichaud well, since my previous laptop was over five years old, it was time for a new one.
Matt-W quite probably
what did you get?
pmichaud HP EliteBook 2530p
masak pmichaud: does that mean that you'll be 33% more productive from now on? :P
pmichaud masak: it might mean that I'll be using my desktop as a terminal into the laptop instead of vice-versa :-P 14:05
jnthn pmichaud: I have the Slovak class now...back later on today
pmichaud jnthn: okay -- I'll probably be in progress on the migration by then
14:05 shinobi-cl joined
pmichaud (although I have an $otherjob meeting in 1:55) 14:06
Matt-W pmichaud: wow, that looks like a nice machine 14:07
14:21 shinobi-cl left
pmichaud (nice machine) -- yes, so far I like it very very much. 14:25
14:25 simcop2387-vnc left
pmichaud my only complaint at the moment is the placement of the PgDn and PgUp keys, which I tend to use very frequently. 14:26
but I'll see if I can get used to using the scroll zone on the touchpad instead. 14:27
PerlJam good morning. 14:29
pmichaud good morning, pj
PerlJam pm: did you jsa's email?
er, did you get it
pmichaud pj: yes. I'm booked for the early part of the day, will write up my (long delayed) report late tonight or early tomorrow. 14:30
PerlJam no worries. I just noticed that he sent it to [email@hidden.address] and wondered if that still worked.
pm: so ... git or svn? :-)
pmichaud PerlJam: looks like git, unless I run into major problems this morning. 14:31
PerlJam coolness
pmichaud the only thing that svn seems to have going for it is that we've used it for a long time.
PerlJam well, you can also do partial checkouts in svn and you can't do that at all in git. 14:32
(yet)
pmichaud I don't know that we'll need partial checkouts for rakudo.
I can see that it would be useful for Parrot, but not-so-much for Rakudo.
PerlJam Is rakudo going to bundle parrot or use an installed parrot or what? 14:33
pmichaud yes. :-)
PerlJam heh
14:34 ejs2 joined
pmichaud we'll probably make Configure.pl smart enough to (1) see if rakudo is inside of languages/rakudo of a Parrot tree, (2) use an installed Parrot if detected, (3) obtain a known correct copy of Parrot from somewhere and build/use that. 14:34
(4) let the builder decide.
14:34 kanru joined 14:35 ejs2 left
Matt-W pmichaud: that'll be nice 14:38
this is what you can do when your configure script is written in a proper language :)
PerlJam wait ... who said the configure script was going to be written in perl 6 ? ;-) 14:40
Matt-W perl 5 counts as a proper language when it comes to configure scripts :)
pmichaud I was thinking of using Tcl. :-P 14:43
14:43 ejs1 left 14:44 Exodist joined 14:45 iblechbot joined 14:52 km2 joined
PerlJam Well, using tcl would certainly help out Coke. 14:54
and it could start a resurgence of interest in tcl such that it becomes more mainstream again
(It's good IRC is a a bandwidth limited medium; it was hard typing the above with a straight face :) 14:55
Matt-W I was just thinking, why would you want tcl to become more mainstream again? 14:57
I have a certain nostalgic place in my heart for it... it was the first language I ever wrote a GUI programme on Linux in
15:01 rodi joined, ruoso joined
ruoso HelolO! 15:02
masak ruoso: TSa, is that you? :) 15:03
ruoso still think he is himself, but one can never be sure
Matt-W hi ruoso 15:05
ruoso what's up around here... 15:06
I've been in some weird weeks
and I'm not being able to backlog
Matt-W pmichaud++ is helping rakudo leave the nest 15:07
masak filed a pile of new bugs
and I've been fighting with microsoft's c++ compiler 15:08
ruoso cool 15:11
15:11 kanru left
[particle] matt-w: what's to fight? 15:13
15:16 abra joined
Matt-W [particle]: the stuff it can't do, mostly 15:18
and its sometimes-bizarre error messages
admittedly a lot of this mess is caused by existing code that's not microsoft's fault
15:21 stephenlb joined
PerlJam vienna.pm++ 15:24
Matt-W hmm, FOSDEM... 15:26
15:32 mtnviewmark joined
pugs_svn r25112 | lwall++ | [end.t] remove extra paren 15:35
jnthn is back 15:37
Matt-W jnthn is back!!! 15:39
oh wow
I just crashed visual c++
jnthn Matt-W: Calm down, I was only gone for an hour and a half. :-P 15:40
Matt-W jnthn: yeah but I'm at work...
masak jnthn: rt.perl.org/rt3/Ticket/Display.html?id=62908 15:41
jnthn masak: Do you have _any_ precompilation going on here? 15:42
masak: Also, note that the checks are done at compilation time. 15:43
So if you do:
1) Compile module X
2) Compile module Y against module X
3) Modify module X
(such that module Y would not compile)
4) Compile module Z against compiled module Y, which thinks that module X is fine 15:44
masak jnthn: I see. no I'm pretty sure I didn't modify anything.
jnthn Then I can imagine you'd not see a failure until runtime.
OK
I'll try and re-produce from what you filed, thanks.
masak but the worst thing isn't the failure, it's the faulty success.
that's easy to reproduce.
no precompilation required. 15:45
15:45 finanalyst joined
jnthn masak: OK, thanks, will look into it. 15:45
masak: Maybe I'm just being dumb, but why should this fail?
masak jnthn: maybe it shouldn't... 15:46
jnthn It looks correct to me - module A uses B, which in turn uses C. Thus we have the role C from using that module.
masak jnthn: hm... 15:47
jnthn And then class A does C - but there is a C (since we did use B, which in turn did use C).
masak aye.
that _is_ correct.
and those three modules precompile correctly, as well.
15:48 kanru joined
jnthn masak: OK. So that ticket is bogus? 15:48
masak jnthn: the main point of it is. 15:49
I could perhaps save it by tracking down that precompilation thing.
jnthn :-P
diakopter ruoso: hi 15:55
ruoso: did you look up that exported function in your smop lib? 15:59
16:00 eternaleye left 16:06 vixey joined
alester ping pmichaud 16:10
16:10 justatheory joined
pmichaud alester: pong 16:14
alester rakudo.org ain't gonna be ready by FP
No way no how.
pmichaud alester: okay.
alester Got too much book to do.
It'll be tops on my list when I get back, though.
Well, after the 9th.
Which is my drop dead on my book.
pmichaud I may take diakopter up on his offer for using perlsix.* then, at least temporarily. 16:15
alester I'll work on it immediately AFTER FP2009
mtnviewmark wonders what FP is...
PerlJam What's needed to make rakudo.org ready?
alester and what I was going to ask is what we can ask people to help with at FP
PerlJam mtnviewmark: Frozen Perl
pmichaud FP == "Frozen Perl"
alester PJ: Getting Drupal on it
TimToady Frozen as in Oslo, I presume 16:16
16:16 gbacon left
alester As in Minneapolis 16:16
pmichaud Frozen as in Minneapolis
TimToady ah
PerlJam I was going to volunteer to help, but drupal is on my ick list along with cobol.
mtnviewmark hmmmm... is that some date by which we think perl6 will be nailed down? or is it a Perl conference in Antiarctica?
alester PJ: Tragic.
pmichaud Feb 7-8 16:17
jnthn TimToady: Oslo likely won't be *that* cold. :-)
mtnviewmark So thanks to global warming, it should now be called: Chilly Perl?
pmichaud Minneapolis might be that cold, though :-)
TimToady Perl 6 will be nailed down by Christmas :)
alester PerlJam: I'm please to see that your priorities are in order.
s/please/$&d/
Frozen Perl is www.frozen-perl.org/mpw2009/ 16:18
mtnviewmark I'll be sure to save a spot under my tree!
TimToady I'm thinking about simplifying the X...X metaoperator down to X...
and chaning the new - to R
*changing 16:19
pmichaud R +1
the '-' doesn't "read" properly imo
mtnviewmark actually, I like the postfix tick idea: <=>'
TimToady to hard to seee
pmichaud I liked the gel and >=< idea :-P
PerlJam alester: Well, I could help, but I don't know how helpful I'd be given that I've avoided drupal for many months now.
pmichaud but insufficiently meta.
mtnviewmark I like circumfix X --- it seems very mnemonic of what it does
TimToady I actually though of gel some days ago and decided not to mention it :)
alester flickr.com/photos/petdance/2392949742/ is me driving back from last year's FP
PerlJam: I wouldn't want you to have to work with software that you've avoided for many months now. 16:20
mtnviewmark see, that's what you get by inviting the likes of me in! ;-P
jnthn TimToady: What's the usecase for R meta-op?
TimToady reverses the two arguments
mtnviewmark $a R<=> $b 16:21
TimToady generalizes the - metaop I added a day or two ago
jnthn TimToady: That's what it _does_.
I wanted more to know the design rationale.
pmichaud alester's picture looks like a slightly heavier version of what we were seeing here this morning :-)
mtnviewmark I think the problem is that typographically, the capital R doesn't combine well with graphic characters
TimToady you can talk about it without generating a new closure
mtnviewmark: eh? R isn't usually known to have kerning issues... 16:22
T or Y maybe
mtnviewmark it wasn't a kerning issue, just looks ugly to my eye -- the R doesn't combine well
PerlJam Isn't there some appropriate unicode charcter? :)
mtnviewmark where as $a X+X does
TimToady symmetry is overrated
and the problem with two X's is that it implies things cross over twice, when they only cross once :) 16:23
alester pmichaud: so what I'm thinkin' is that we make some kind of list of areas we can use the help
and actually, that would be first thing we'd put up on rakudo.org
and heck, we could have physical sign-up sheets at FP
mtnviewmark The issue is that people scan letters and adjacent graphic chars as distinct units --- how many languages ... not to mention <.ws> handle things this way
pmichaud (phone)
mtnviewmark so the surrounded Xs tie the element into a single form
alester big easel pads and markers. Low-tech, but get people to want to sign up 16:24
pmichaud alester: sounds good
masak rakudo: ([1,2,3] ~~ (("foo" / (42 ~~ [1,2,3])) ~ /foo/))
TimToady anybody writing real code will use X* with whitespace around it
p6eval rakudo 36145: OUTPUT«Non-dwimmy hyperoperator cannot be used on arrays of different sizes or dimensions.␤current instr.: 'die' pc 16844 (src/builtins/control.pir:204)␤»
[particle] will R desugar to .reverse ?
<=>.reverse
mtnviewmark The surrounded Xs also parallels the surrounded angle quotes of hyper
[particle] surely operators are objects, too 16:25
TimToady you can't call a method on an operator :P
alester TimToady: Can you confirm for me that Perl 6's does not / will not include any of the toolchain?
Perl 6's spec
masak TimToady: can you call methods on infix:<< <=> >> ?
mtnviewmark infix:< <=> >.reverse ?
TimToady that's still wrong
masak ok.
jnthn infix:<=>.signature I expect may work
TimToady &infix:... 16:26
jnthn Ah, yes.
Of course.
16:26 Tene_ joined
TimToady alester: we reserve the right to spec anything that needs speccing across implementations, but otherwise, no 16:27
mtnviewmark well - at the least, postfix meta R... maybe even (gasp) r?
$a <=>r $b or $a <=>R $b
alester TimToady: One of the things I'm going to be talking about at P6 is that we're in a state of great possibilities.
TimToady lowercase is out
mtnviewmark (see I have to look at it to even feel it!)
TimToady too much chance for ambiguity with alphabetic operators
alester and that includes possibly rethinking toolchain, CPAN, everythgin.
PerlJam TimToady: perhaps there's some opportunity for generalization here we're missing: Xop, Rop, <wordchar>op ? 16:28
[particle] please rethink everythgin!
TimToady there are a lot of people who have thought a lot of things about CPAN
mtnviewmark wait wait wait.... how can it be R? why would $a legR $b be parsed as a meta construction and not a single word 'legR'?
16:28 gbacon joined
alester [particle]: Not sure if that's serious or faceitious. 16:29
TimToady I think a cultural pattern of <upper>op keeps metaops psychologically separate and extensible wrt ordinary ops
could have a Z* for instance
[particle] alester: it's both. the misspelling should be rethunked, and it is time to rethink everything, indeed
mtnviewmark ya know, you're going end up making the case for the old, pre-ansi C style of assignment op: 16:30
[particle] ...and it's easier to reserve uppercase letters for prefix metaoperators
mtnviewmark $a =* $b
:-)
TimToady undoubtedly :) 16:31
mtnviewmark !op =op Xop
masak ook!
mtnviewmark the thing is [op], >>op, op<<, >>op<< and friends break that pattern 16:32
or and Rop above
PerlJam mtnviewmark: but those are the good side of things as I see it :)
mtnviewmark the hyper ones are nice as they are very easy to remember, understand and reconstruct
the meta location indicates the type of operator and form of the expression
the others, not so much
TimToady I think it's okay if different common metaops look different from each other 16:33
alester [particle]: I think that people are expecting that on "Day One" of Perl 6 (like there will be a magic release day) that CPAN will Just Work.
[particle] yes, like it did the day perl 1 was released.
TimToady visual distinction is more important than consistency
[particle] erm.
mtnviewmark sure, op= and !op have much cultural baggage -- the later predating even CompSci
16:34 eternaleye joined
PerlJam TimToady: $a <=> $b :reverse # see? visually distinct! :) 16:34
mtnviewmark no, you need the reverse when you want to pass a function w/o the arguments
[particle] wait! will pod formatting codes get in the way?
$a R<=> $b
TimToady sort &infix:<Rleg>, @stuff 16:35
16:35 |jedai| left, abra left
mtnviewmark is still gunning for $a <=>' $b and sort &infix:<leg'> 16:35
16:36 sri_kraih joined
PerlJam mtnviewmark: FWIW, I like the tick suffix too. 16:36
TimToady tick will not be acceptible to me
mtnviewmark thinks of: /foo/ R^fff^ /bar/
TimToady or even acceptable
mtnviewmark or /dog/ Rfff /bark/
:-)
16:37 |jedai| joined, xinming_ joined
ruoso diakopter, in libsmop.so I have only the names with no "_" prefix... 16:37
mtnviewmark off to work..... laters
16:37 mtnviewmark left
TimToady ciao 16:37
16:37 Tene left
TimToady $teen Req $car 16:38
PerlJam $a <>= $b # looks like a swap
$a <>eq $b
[particle] $a O_o $b 16:39
ruoso have some trouble understanding why people just can't write the variables in a different order?
masak doesn't like the R
TimToady sort &infix:<Rleg>, @stuff
good, if you don't like the R, you'll notice it 16:40
the whole point is to notice it
[particle] it's middle name is dangeR
TimToady that's why tick will be unacceptable
PerlJam TimToady: How would I apply the R to my custom comparator?
(in the sort example)
TimToady &infix:<Rcust> 16:41
PerlJam so, sort &cust, @stuff and sort &infix:<Rcust>, @stuff?
that seems ... strange. 16:42
ruoso or maybe Rsort
TimToady one is tempted to define a sigil for operators 16:43
[particle] how about ' ;)
PerlJam heh
TimToady: how about R'op (and Z'op and X'op and ... ) ? 16:44
TimToady Looks like Klingon
masak ...and vim will go wild...
PerlJam TimToady: I keep wanting some other thing in there but I don't know what. A separator or some form of punctuation.
TimToady I think case difference can be sufficient
PerlJam and you can't tell me that isn't visually distinctive
TimToady no, it's just unnecessary 16:45
PerlJam masak: so what, everyone will be using padre anyway :)
masak PerlJam: didn't think of that. :)
PerlJam TimToady: so it'll just have to be an acquired taste I guess. 16:46
TimToady most of the compositions will be with non-alpha operators in any case
16:46 masak left
TimToady @a X* @b 16:46
lambdabot Maybe you meant: activity activity-full admin all-dicts arr ask . ? @ v
TimToady maybe someone should shoot lambdabot 16:47
PerlJam indeed
jnthn He's not as bad as purl ;-)
TimToady Hello jnthn, you fantastic person you!
PerlJam TimToady: Do you mean that composition with alpha ops will rarely make sense, or that because there are fewer alpha ops, there will be fewer compositions with them? 16:48
I would guess the latter
TimToady the latter
PerlJam but perl 6 has more alpha ops than perl 5 and I expect they'll be more commonly used. 16:49
TimToady in which case Rleg will just have to do :)
and the Lleg people will just have to lump it
PerlJam at least we don't still have EQ, LT, GT, etc. :) 16:50
or the fortran versions.
TimToady maybe an operator twigil 16:51
PerlJam how can they have twigils if they don't have sigils? 16:52
TimToady all operators have a & sigil form
PerlJam oh, right.
ruoso TimToady, can we have the Rop thing depedent on a pragma?
and make it more syntatical 16:53
TimToady could steal &<Rop> from matches
16:53 xinming left
TimToady doesn't work so good for &<R<=>> though 16:53
ruoso I mean... do we really need to have all the crazy ideas into the STD language? 16:54
16:54 schmalbe joined
PerlJam ruoso: you think this is just gilding the lily? 16:54
TimToady reversing the args of an infix is not a particularly crazy idea
and is particularly useful for sorting 16:55
ruoso pardon for my ignorance, but how is that different from "reverse sort"
TimToady and if I don't add it as R, someone else will add it as tick, and then where will we be? :)
it lets you reverse subsort criteria 16:56
PerlJam TimToady: we'd be in "all's fair if you predeclare" land I think.
[particle] TimToady: could &R(<=>) work? 16:59
ruoso TimToady, you mean sort by this, then this, then this?
where the last is reversed?
[particle] i'm not sure it's best as a twigil, perhaps &(R<=>)
TimToady &[R<=>] maybe 17:00
since we're getting used to seeing infix ops in [...] for reduce
though it's not a reduce
ruoso .oO( ok, reverse assignment *is* a crazy idea ) 17:01
TimToady and there aren't many operators that use []
but not so far off from what ==> is specced to do
[particle] $a &[R=] $b
TimToady no, just $a R= $b
&[] is how you talk about it
PerlJam that's interesting because reductions are what makes me not like the R [op] looks good and feels right, Rop doesn't look right at all. 17:02
TimToady as a noun
not how you use it
[particle] ah, right-o
i'm distracted, on the phone
ruoso so, the idea is
map { ...}, grep {...}, sort {...}, @1,2,3 R= $b
TimToady reductions will be more common than reversed ops
[particle] does reduction then get a character?
er, prefix character 17:03
i hope not.
TimToady no
ruoso er..
PerlJam I'd take that the other way ... why are reversals huffmanized more than reductions?
ruoso map { ...}, grep {...}, sort {...}, 1,2,3 R= $b
TimToady see my remark above: I have no desire to make all metaops look consistent with each other
ruoso (I don't know where that @ came from)
TimToady esp the common ones 17:04
ruoso: R= cannot parse in reverse
ruoso I'm trying to find a use case for it
PerlJam heh, $a R~~ $b
TimToady and in particular R would not change the precedence of any operator, I think 17:05
and we might just outlaw R= to be ornery :)
PerlJam beware the hobgoblin of foolish consistency (though you apparently don't need to worry about that :) 17:06
TimToady yes, R~~ is particularly interesting when you want $a R~~ $b == $c 17:07
ruoso I'm not able to tell what that means
[particle] R|| is ornery
TimToady it's a chained operator
PerlJam [particle]: which way do you expect the short circuiting to work? 17:08
17:08 schmalbe left
PerlJam actually, R|| seems like it would be a useful thing. 17:08
TimToady usually that's spelled "unless" 17:09
[particle] $a && $b R|| $c
maybe unless should now be Rif
TimToady seems a bit less than spectularly readable
[particle] :)
TimToady *spectacularly
ruoso I just hope we have a paper huge enough to print a precedence cheat sheet 17:10
TimToady R doesn't change precedence
17:10 mtnviewmark joined
TimToady just as ! doesn't 17:10
[particle] the op cheat sheet will be on hyperpaper 17:11
ruoso TimToady, but meta-ops make the ops more likely to be used in places where more code would be written
TimToady huh?
ruoso It's an incredibly power tool
mtnviewmark returns... from work
ruoso which is kinda cool 17:12
mtnviewmark Indeed, but I'm having a hard time finding a reliable supplier of hyperpaper
ruoso but sacrifices the readability to a point I'm not sure it's worth
17:12 eternaleye left
mtnviewmark I think all the meta operators to date, with the possible exception of [op] are pretty easy on the readability 17:13
TimToady some things can be enforced by cultural pressure, but we can refrain from generating reversed operators for troublesome/duplicate ideas
ruoso I mean, we'll have the coolest obfuscations ever
TimToady I think R|| would be disallowed along with any other "thunky" operators
ruoso I'd argue that some meta-ops could require a "use" 17:14
like R
mtnviewmark but even [op] is not too hard to mesh into one's head (perhaps I've been staring atll 150+ of them for too long...)
17:14 schmalbe joined
TimToady people find the [op] pill to be quite readable, I think 17:14
ruoso [op] is readable because it is usually in the beggining of the sentence 17:15
TimToady and it needs the pill because it's where a term is expected
ruoso s/usually/always/
TimToady so it needs the extra pillness to force "I am an operator" in your head
[particle] i like [op]
PerlJam I think everybody likes [op] 17:16
mtnviewmark I like it too, actually -- but then again, I like XopX -- so perhaps I'm just easily conditioned!
TimToady interestingly, if we grab &[op] syntax for infixes, then [op] 1,2,3 becomes reduce &[op], 1,2,3
ruoso one could argue that XopX could also require a pragma
TimToady ruoso: no, this isn't in the same category of dangerous as monkey typing
ruoso so it can have a shorter-name pragma 17:17
;)
TimToady I propose the null name pragma, in which case you can omit the "use" as well.
PerlJam heh
TimToady actually, I think the appropriate pragma is "use v6;" :P 17:18
ruoso "use meta <X R>;" 17:19
;)
jnthn Why would we want to make you write a pragma for them? 17:20
ruoso to give a notice to the code reader about something that is unusual 17:21
PerlJam ruoso: are you going to include Z too?
mtnviewmark what would Zop do? is that map op to each sequential pair from two lists? 17:22
isn't there already a short way to do that?
PerlJam twiddle the dial on conceptual chunking a little bit and you get something bad. I think TimToady has it right with the null pragma. 17:23
17:23 aindilis joined
jnthn ruoso: I don't consdier meta-ops unusual. 17:23
mtnviewmark remembers when Z was spelled ¥ ... and liked it
mtnviewmark wonders what the convention of using Unicode on this IRC channel is...
TimToady it's expected 17:24
17:25 |jedai| left
TimToady cool, &[op] is currently illegal syntax 17:26
[particle] #perl6 assumes unicode semantics, whatever that means
TimToady mostly, assumes utf-8 is okay
mtnviewmark (well, to be pedantic, it would have to assume UTF-8)
heh - what *he* daid
17:26 |jedai| joined
[particle] yes, i was riffing on a line from a synopsis about perl 6 17:26
mtnviewmark s/d/s/
TimToady hmm, reversing iff with Riff is a no-op 17:27
ruoso jnthn, I mean for code maintainance... taking a code from someone else... X, R and Z are things you're not going to see in other languages (is there one that does it?)
jnthn You're probably not going to see chained comparrisons, junctions, blah in other languages either, but that doesn't mean we should make *those* pragmas too. 17:28
TimToady and as soon as you mouseover the operator, it tells you what it is
17:30 zamolxes left 17:33 schmalbe left
mtnviewmark python has chained comparisons 17:35
TimToady yes, well, so does math :)
ruoso I just hope people take the reducing in characters provided by meta-ops and write comments with them
TimToady people should use them where they increase clarity, and avoid them the rest of the time. :) 17:36
PerlJam # Wow, these new meta ops are great!
ruoso: I don't think we should "dumb-down" perl 6 any because the conceptual and syntactical overlap with other languages may have shrunk. 17:37
ruoso TimToady, people will use it where it reduces the number of characters ;)
TimToady well, that's one thing you can optimizer for, and our culture already simultaneously encourages and discourages it. :) 17:38
*optimize
17:38 hanekomu left
ruoso PerlJam, my point is that Perl 6 brings a lot of unexpected features (from the POV of someone taking care of someone else's code)... 17:38
PerlJam ruoso: sure ... isn't that the point of perl 6? I mean, if it didn't have anything unexpected, it would be dull and boring like at least one other p language :) 17:40
ruoso agreed, but it would be interesting if we provided a hint saying "something unexpected is going to appear in this code"
and not that all code was unexpected 17:41
TimToady I think we'll have a general rule that any infix can be enclosed in [] if it needs to be disambiguated. @a X[+=] @b
17:41 hanekomu joined
PerlJam TimToady++ that sits well on my brain :) 17:42
TimToady vs @a [X+]= @b
[particle] hrmm
TimToady problem?
fits with &[X*] and such too 17:43
[particle] can't find any, no.
TimToady then reduce is just one of those used as a listop
[particle] yep
TimToady of course, one cannot say @a[X*]@b
[particle] any infix may be enclosed in whitespace when it needs to be disambiguated 17:44
TimToady but this means we can pass a sort criterion as &[Rcmp]
[particle] s/when/if/ :)
PerlJam [particle]: that doesn't work too well with $a R <=> $b 17:45
:-)
TimToady can't have ws in a metaop
[particle] so it works just fine :)
PerlJam right
TimToady R<=> and R[<=>] would both be acceptable
but I need to think about what this means in terms of LTM 17:46
[particle] the other implementors will thank you if you do
TimToady it might actually solve the problem, if we require [] on any compound metaops
and say that [] is parsed as LTM inside, but not outside 17:47
but needs more thinking
ruoso wonders if it would be too bad if the meta-ops always had the enclosing []
TimToady doesn't mix visually very well with subscripts 17:48
much like we avoid putting sigils on the fronts of infix
Matt-W $a[0] R[<=>] $b[1]
very []-heavy
TimToady $a[0] R<=> $b[1] is much better 17:49
PerlJam but not too bad
Matt-W TimToady: it'd be nice if the [] could be non-compulsory
TimToady I'm not much into compulsion...well, not that kind, anyway
[particle] [R-] @a 17:50
TimToady indeed
may well solve the foldr/foldl problem too
[particle] heh, [R,] @a === @a.reverse
17:50 sri_kraih left
TimToady APL, here we come... 17:51
17:51 |jedai| left
ruoso I still have some trouble to understand what's wrong with [-] reverse @a 17:51
[particle] there's nothing wrong with it, there's more than one way to do it 17:52
TimToady that works too
[particle] perl6 !=== python3000
ruoso it's just that it took me some time to figure out what [R-] @a would mean 17:53
17:53 |jedai| joined
TimToady and now you know, so everything's fine :) 17:53
rhr so is [+]<< a hyper reduce or +<< with [] ?
17:54 hercynium joined
TimToady depends on whether a term or infix is expected 17:54
rhr ok, right
TimToady and if infix, it's illegal anyway
since infix requires hyper on both sides
rhr but +<< is legal as a prefix 17:55
TimToady certainly, and can mean only one thing
rhr I don't understand 17:56
ruoso anyway... at least playing golf in Perl 6 will be much funnier than in Perl 5 ;0
TimToady the [] rule only applies to infix operators, and that + is a prefix
ruoso ;)
rhr oh, ok
17:56 ejs joined
TimToady esp if people define an ope operator, and start writing Rope, Zope, ... 17:56
Matt-W custom operators are always good for golfing 17:58
ever seen Haskell code that uses applicative functors?
TimToady and XX would do a spectacular amount of work
ruoso sub infix:<X>; XXX 18:00
TimToady as in @AoA XX @AoA would match every sub element with every other subelement
we already have infix:<X> 18:01
ruoso so, XXX is already valid Perl 6?
std: $a XXX $b 18:02
p6eval std 25112: OUTPUT«00:04 62m␤»
TimToady :)
I think that's a good argument for just one X as the metaop
diakopter std: $a NC-17 $b
p6eval std 25112: OUTPUT«############# PARSE FAILED #############␤Syntax error (two terms in a row?) at /tmp/JZm83xnGOs line 1:␤------> $a NC-17 $b␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤00:04 62m␤» 18:03
ruoso in "$a += $b" who is the meta-op, + or = 18:06
?
TimToady the =
ruoso so maybe all meta-ops could be postfixed
TimToady A FOOLISH CONSISTENCY
ahem
ruoso hides 18:07
but...
TimToady Umberto Eco whacks you upside the head using a copy of The Search for the Perfect Language --more--
ruoso "$a eqR $b" looks better than "$a Req $b" 18:08
TimToady boggle
s
prefix metas are actually much easier to parse than postfix, and doubtless that will be true psychologically as well 18:09
let me put it this way, I can probably make STD run much faster with prefix than postfix, if I can cut down the LTM search space 18:11
and you would like this
ruoso stops complaining... 18:13
TimToady I don't mind people pointing out all the options, as long as people don't mind me shooting down N-1 of them :) 18:14
18:14 mberends joined
TimToady but basically, the upshot is that I'm going to stop trying to parse composed metaops as single tokens, and I think this will help in several ways 18:16
18:16 |jedai| left 18:17 |jedai| joined
TimToady instead, metaops will be composed by the parser, but with the same contraint that there can be no intervening whitespace 18:17
and LTM still distinguishes X* from X** 18:18
but when matching the *, not when matching the X
shower & # thinking 18:19
mtnviewmark Isn't the psychological parse order argument dependent on if you are a native speaker of English vs. French (say)? 18:21
is in "green hat" vs. "chapaux vert"
simiilarly eqR vs Req 18:22
(er, reverse those two!)
18:22 finanalyst left
[particle] [R,] <eqR Req> 18:22
mtnviewmark (wonders why not have a VERY generic compare, spelled vs ....) 18:23
18:27 ejs left, ottott joined 18:31 ottott left, ottott joined 18:34 Psyche^ joined 18:35 ejs joined 18:43 pbuetow joined 18:45 smtms joined 18:50 Patterner left, Psyche^ is now known as Patterner 18:52 |jedai| left 18:53 |jedai| joined 18:57 ejs left 19:12 meppl left 19:26 finanalyst joined 19:29 mberends left 19:30 |jedai| left 19:31 |jedai| joined 19:39 SamB left, DemoFreak joined 19:40 hanekomu_ joined 19:42 Infinoid joined 19:56 hanekomu left 20:01 ejs joined 20:11 |jedai| left 20:12 _jedai_ joined 20:18 mberends joined 20:21 ottott is now known as DataPusher
pugs_svn r25113 | lwall++ | [STD, S03] slaughter of the LTM metatokens 20:32
r25113 | lwall++ | STD now runs considerably faster
r25113 | lwall++ | Freed from LTM, metaoperators may now be nested arbitrarily deep
r25113 | lwall++ | new &[op] notation for infix functions
PerlJam TimToady++ 20:33
20:45 meppl joined 20:50 _jedai_ left, |jedai| joined 21:15 finanalyst left, |jedai| left, |jedai| joined 21:19 ruoso left 21:20 |jedai| left, |jedai| joined 21:42 gfldex joined
meppl good night 21:44
21:46 meppl left 21:48 eric256 joined 21:57 |jedai| left, |jedai| joined
mtnviewmark woot: Long live >>[X<<R<=>>>X]<< 22:08
how quickly, from the time there is a checkin, does the std 'bot here start using it? 22:09
22:09 Whiteknight joined, pbuetow left
[particle] std: 1 >>[X<<R<=>>>X]<< 2 22:10
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤»
[particle] std: 1 >>[X<<R<=>>>]<< 2 22:11
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤»
mtnviewmark so, the answer is -- immediately, and the last checkin broke it?
std: $a + $b
p6eval std 25113: OUTPUT«00:02 33m␤»
[particle] it's not immediate, but it's within an hour
mtnviewmark std $a «[+]» $b
[particle] i wonder if the lexers are automatically regenerated for std... 22:12
[particle] hands mtnviewmark a colon
std: $a «[+]» $b 22:13
p6eval std 25113: OUTPUT«00:02 33m␤»
mtnviewmark hey - see, once again, Larry got the colon
std: $a X«[+]»X $b
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤» 22:14
mtnviewmark std: $a X«[+]» $b
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤»
mtnviewmark std: $a X+ $b
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤»
mtnviewmark std: $a X+X $b
p6eval std 25113: OUTPUT«Not a HASH reference at STD.pm line 12326.␤00:02 33m␤»
mtnviewmark okay, so X metaop is bork'd
[particle] std: [R,] 1,2 22:18
p6eval std 25113: OUTPUT«can't create lex/STD/prefix_circumfix_meta_operator__S_081reduce_03.store: Permission denied at Cursor.pm line 534␤00:02 33m␤»
mtnviewmark So, looking at the commit -- it's now Xop and Rop, but still [op] except where that is used to disambiguate like X[+=] 22:20
vs. [X+]= 22:21
22:21 eric256 left
[particle] yes 22:24
mtnviewmark wonders what to do if what I want is the assignment form of the reduce form of, say R-.... 22:26
is that [R-]= or is it [[R-]]=
[particle] [R[-]]= ? 22:27
rhr reduce isn't infix, so you can't make an assign op from it
mtnviewmark well - there ya go.... 22:28
mtnviewmark wonders if all the cases of possible ambiguity involve infix operators
mtnviewmark wonders if there needs to be meta-associativiy and meta-precedence.... 22:29
[particle] std: ![R===] 1,2
p6eval std 25113: OUTPUT«############# PARSE FAILED #############␤Unable to parse array composer; couldn't find final ']' at /tmp/ipw7faRZbq line 1:␤------> ![R===] 1,2␤ expecting any of:␤ prefix or noun␤ whitespace␤00:02 34m␤»
[particle] or is that...
std: [R!===] 1,2
p6eval std 25113: OUTPUT«############# PARSE FAILED #############␤Only comparison infix operators may be negated at /tmp/90ML7LqLmW line 1:␤------> [R!===] 1,2␤00:02 33m␤»
[particle] i've got to re-read, maybe while at the destist & 22:30
*dentist &
22:31 |jedai| left, |jedai| joined 22:32 hercynium left 22:38 dalek joined 22:45 rodi left 22:48 alester left 22:56 ejs left, iblechbot left 23:12 Exodist left 23:19 kisu left 23:22 aindilis` joined 23:23 aindilis left 23:30 |jedai| left 23:31 |jedai| joined 23:33 Limbic_Region joined 23:45 dalek left, dalek joined 23:46 kid51 joined 23:50 FurnaceBoy joined
pugs_svn r25114 | lwall++ | [STD] fix [R!===] 1,2 23:56
23:56 vixey left 23:59 aindilis` left