»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by Juerd on 28 August 2009.
kothog is there a git repository for perl6 somewhere? 00:27
TimToady for rakudo
kothog TimToady: oh? 00:28
TimToady hit "Download" on perl6.org and you should get to the rakudo page
kothog i see it.
thank you!
neat.. seemingly not much to it! i infer some effort is going elsewhere. Parrot? 00:32
Tene kothog: Yes, Rakudo is built on top of Parrot. 01:38
dalek kudo: 5d3d3a3 | pmichaud++ | Configure.pl:
Add --optimize to default --gen-parrot build.
01:53
pugs_svn r28351 | lwall++ | [S03] more clarifications of autogenerated generator functions, pmichaud++
pugs_svn r28352 | diakopter++ | [vijs] implement Int /, % (quotient, remainder) 03:18
diakopter vijs: say 102987609812347098760129837021987103475138750 * 1230487130694871034374821979182735987249183791837461982374981732549876660918203
p6eval vijs 28351: OUTPUT«126724928495117927075274915808067496423529452979087287709768611828950425207819615781549360513615359180398313258757825666250␤␤ time in interpreter: 0.021555 s␤»
JimmyZ wow, so super. 03:27
diakopter heh 03:29
vijs: say 1230487130694871034374821979182735987249183791837461982374981732549876660918203 / 102987609812347098760129837021987103475138750 03:30
p6eval vijs 28352: OUTPUT«11947914248490005806224210623590285␤␤ time in interpreter: 0.011124 s␤»
diakopter vijs: say 1230487130694871034374821979182735987249183791837461982374981732549876660918203 % 102987609812347098760129837021987103475138750
p6eval vijs 28352: OUTPUT«65548383231064399784204749251026113133874453␤␤ time in interpreter: 0.011122 s␤» 03:31
diakopter also, the libBigInt.js can convert to/from any radix
thank you Tom Wu, wherever you are 03:32
whoever wants to wire up the bases-other-than-ten radix integer instantiation in vijs... please feel free 03:34
JimmyZ vijs: say 1000000000 / 3.14 03:44
p6eval vijs 28352: OUTPUT«execute(): execute error: dec_number not yet implemented; srsly!!?!? at viv line 171.␤»
diakopter no decimals, nope. :D
JimmyZ vijs: say 1000000000 / 267
p6eval vijs 28352: OUTPUT«3745318␤␤ time in interpreter: 0.010479 s␤»
JimmyZ a bit slow.
diakopter the parser is slow[er] :P 03:45
but yeah; without constant folding nor linear/dependent type constraint detection/derivation, using bigints for every integer is going to be slow :D 03:46
almost done adding basic closures 03:47
basic meaning parameter-les 03:48
less
and return-less ('cept for last statement-as-expression) 03:49
diakopter closures working; will commit shortly 04:38
./viv --js -e 'my $b = 4; my $a=sub{ say $b }; $a(); $b++; $a();' 04:39
4
5
tee hee
Tene :D 04:40
pugs_svn r28353 | diakopter++ | [vijs] basic closures working (try this example): 04:48
r28353 | my $b = 4; my $a=sub{ say $b }; $a(); $b++; $a();
diakopter vijs: my $b = 4; my $a=sub{ say $b }; $a(); $b++; $a(); $b++; $a(); 04:52
p6eval vijs 28352: OUTPUT«4␤5␤6␤␤ time in interpreter: 0.030608 s␤»
diakopter asleep& 04:58
masak good morning, #perl6 05:15
TimToady o/ 05:16
masak rakudo: .say for Nil 05:23
p6eval rakudo 5d3d3a: OUTPUT«Nil()␤»
masak submits rakudobug
rakudo: my $a = 3/4; $a++
p6eval rakudo 5d3d3a: OUTPUT«Method 'succ' not found for invocant of class 'Rat'␤»
masak submits rakudobug
carlin rakudo: say sin(1/2^1/2); 05:31
p6eval rakudo 5d3d3a: OUTPUT«maximum recursion depth exceeded␤in method Num::Num (src/gen_setting.pm:1874)␤called from method Num::sin (src/gen_setting.pm:1852)␤called from Main (/tmp/m4YRgnHhMY:2)␤» 05:32
carlin rakudo: say (1/2^1/2).sin; 05:32
p6eval rakudo 5d3d3a: OUTPUT«one(0.479425538604203, 0.479425538604203)␤»
masak use.perl doesn't allow me to edit my own posts anymore. :( it doesn't give me an error, just an empty page.
it's been like this for days. 05:33
masak emails pudge 05:53
moritz_ \o/ 06:41
mberends yipee, --optimize in Parrot 06:42
masak what does it do? retract the flaps? 06:50
moritz_ some of them 06:51
it basically passes -O2 to gcc
masak $gcc.oxygenate()
pugs_svn r28354 | lwall++ | [STD] catch attempt to declare symbol previously aliased into an outer scope 06:52
dalek kudo: e52ed31 | moritz++ | src/setting/Rat.pm:
.pred and .succ for Rat
07:08
masak pudge++ fixed use.perl, yay 07:14
moritz_ now if he also gave it a more modern layout... ;-) 07:15
TimToady std: my $a = 1; do { say $a; my $a = 2; say $a } 07:19
p6eval std 28354: OUTPUT«===SORRY!===␤Lexical symbol $a (from line 1) is already bound to an outer scope implicitly␤ and must therefore be rewritten explicitly as OUTER::<$a> before you can␤ unambiguously declare a new $a in the same scope at /tmp/yD9yNqSFNN line 1:␤------> my $a
..=…
pugs_svn r28355 | moritz++ | [t/spec] tests for -- and ++ on Rats
masak moritz_: your "Rats and other pets" post was submitted to Reddit: www.reddit.com/r/programming/commen...ther_pets/ 07:25
masak the brainless commenters don't seem to have noticed it yet, though. but it's being re-tweeted in the Twitterverse. 07:26
masak gets vibes from Star Trek: "captain -- they're scanning us" 07:27
moritz_ wow, 8 up 4 downvotes
I wonder how I could get so many downvotes for example on perlmonks
masak moritz_: you could extol the virtues of Python and Ruby :P 07:29
moritz_ even that wouldn't bring me that many downvotes, if done in a technical manner
I thought more about discriminating against black, disabled women or so :) 07:30
masak (from the "experiments you probably shouldn't make" department) 07:32
moritz_ curious thing, when I added these few tests in r28355, rakudo gave me "Could not find non-existent sub done_testing" at the very end 07:32
even though there are hundreds of tests in between, and it worked before 07:33
masak and you're sure you didn't accidentally spell it 'Sequel' or something? :) 07:38
moritz_ well, I didn't touch it 07:39
that's where the wieredness comes in
and I used ack to verify that the name is spelled the same in the test file and Test.pm ;-)
masak sounds like one of those things that would be hard to minimize. :/ 07:44
moritz_ www.nytimes.com/2009/09/20/jobs/20pre.html # nice opinion/experience piece on pair programming 07:47
Matt-W Interesting 07:54
Matt-W moritz_++ # blog post about Rats 09:40
masak the Twittersphere likes it too. 09:53
wait until they hear about our Cats! :)
moritz_ well, reddit doesn't seem to like it :-) 09:56
11 up votes 8 down votes
Matt-W DOWN?? 09:57
masak that's Reddit for you. 09:59
Matt-W guess so 10:17
hardly the cream of the internet
carlin A lolrat would have guaranteed upvotes on reddit 10:21
Matt-W class LOLRat is Rat { }; 10:24
there
done
or maybe it needs a method Str { "LOL" ~ self.Rat::Str() }
masak rakudo: class LOLRat is Rat { method Str { 'LOL' ~ self.Rat::Str() } }; say LOLRat.new(:numerator(3), :denominator(4)) 11:32
p6eval rakudo e52ed3: ( no output )
masak moritz_: isn't it possible to increase the timeout interval a little on the server?
masak huh. 0f1ede is a bit scary. 11:57
pmurias diakopter: how do i install v8? 12:01
moritz_ masak: sure, you can do that if you want 12:07
masak tries 12:08
masak moritz_ no, I give up. where's the evalbot located again? 12:15
moritz_ pugs/misc/evalbot/ 12:16
ack 'alarm|limit'
masak thanks.
pugs_svn r28356 | masak++ | [evalbot] increased soft time limit from 8 to 15 seconds 12:22
r28356 | With a bit of luck, this will decrease the number of premature evalbot
r28356 | killings we have seen lately.
moritz_ I'm also working on migrating evalbot to a better server that diakopter++ made available to me 12:23
which has 4 CPUs instead of one 12:24
pugs_svn r28357 | moritz++ | [evalbot] try to be smarter about rebuild parrot for rakudo 12:28
masak heh. I dug into the history of the CPU limit: it used to be 15 until April, when moritz_ set it to the 'saner' value 4. then it was raised in June to 8. and now it's back at 15.
moritz_ -)
s/^/:/
pugs_svn r28358 | moritz++ | [evalbot] forgot to delete lots of old stuff 12:30
r28359 | moritz++ | [evalbot] another attempt... 12:31
ruoso Bom dia, #perl6 12:35
masak bom dia, ruoso! 12:36
rakudo: say $*IN.slurp().comb(/Land \s+ \w+ \s+ \w+/)>>.trans(/Land \s+ \w+ \s+/ => "").join(", ")
p6eval rakudo e52ed3: OUTPUT«Berge, Strome, Äcker, Dome, Hämmer␤»
masak hmm.
masak rakudo: say $*IN.slurp().comb(/<?after Land \s+ \w+ \s+> \w+/).join(", ") 12:37
p6eval rakudo e52ed3: OUTPUT«Berge, Strome, Äcker, Dome, Hämmer␤»
masak that's better.
moritz_ :-) 12:38
pmurias ruoso: hi
masak rakudo: say $*IN.slurp.words.sort({-.chars})[0] 12:39
p6eval rakudo e52ed3: OUTPUT«hoffnungsreich.␤»
pmurias ruoso: do you know how to link a .c file with an uninstalled perl?
ruoso hmm 12:40
I guess the core libs with XS do that
masak rakudo: say $*IN.slurp.words.grep(/^viel/).uniq.join(", ") 12:41
p6eval rakudo e52ed3: OUTPUT«vielgerühmtes, vielgeprüftes, vielgeliebtes␤»
pmurias ruoso: i knew how to do it, but i forgot the incantation :( 12:41
ruoso pmurias, I think I never did that... but I guess the modules inside the p5 sources do that... 12:42
diakopter pmurias: hi
what os/arch
pmurias ruoso: what i want to is compile tests in t-smopp5 in the smopp5 repo
diakopter: debian linux
diakopter: hi 12:43
ruoso pmurias, I see... maybe it's better to ask #p5p
masak rakudo: say $*IN.slurp.comb.grep({$_ !~~ /\w/}).uniq.perl
p6eval rakudo e52ed3: OUTPUT«[" ", ",", "\n", "!", "."]␤»
diakopter pmurias: did you see the readme in perl6/js 12:44
check out the /bleeding_edge (or /trunk they're both very stable) branch from the v8 repo
have scons & python 2.5 12:45
and g++
pmurias diakopter: i saw the readme
diakopter pmurias: is your perl 64-bit or 32 12:46
pmurias i can built it with typing scons, but i don't know how to install it
32-bit
diakopter copy or ln -s the libv8.a to /usr/local/lib/ 12:47
easiest
pmurias that could be put in the readme
diakopter then git clone the perl-v8 repo
it's a few KB
cd perl-v8 ; make -f bridge.mk 12:48
perl Makefile.PL
make && make test && make install
diakopter pastes into README 12:49
pmurias: if you want, you can build the v8 debugger/shell (called d8) with: scons d8 12:53
pugs_svn r28360 | diakopter++ | [vijs] updated README with more V8/perl-v8 building instructions/hints 12:55
cognominal I want initial feedback on a potential new feature, conditional dereference for Perl 6 before/if I flesh it, write tests case, and send it to p6.language : gist.github.com/191045 13:00
diakopter pmurias: did perl-v8 work for you yet? moritz and I had trouble on 64-bit 13:03
ruoso cognominal, I didn't quite get the feature... care to ellaborate a bit more?
moritz_ cognominal: I like the part about %thing?<foo>.other.methods aborting if %thing<foo> doesn't exist - not sure about how useful the rest is 13:04
if it doesn't exist, chances are that .other.methods throw an exception anyway
cognominal ok, so it is not utter rubish :) 13:05
ruoso although the exception will be ".other not implemented in Object"
moritz_ ruoso: right 13:06
ruoso but I'd rather have the "?" in the other side
%thing<foo>?.other
which also relates well with
%thing<foo>.?other
cognominal ok 13:08
ruoso "?." would fail if the left side is undefined
although ".?" means "don't fail if the method doesn't exist"
moritz_ which kinda makes sense 13:09
the ? points to where things might not exist
ruoso so it probably makes sense to have it "!." instead
%thing<foo>!.other.?method
where we still could leave "?." to "silently stop if the left side is undefined 13:10
cognominal you meant in absence of dereferenced value, postfix ? means silent abortion and postfix ! means an exception? 13:14
ruoso yes
cognominal I like that
ruoso it's not really postfix:<!> or <?>
but it's a new "?." and "!." operator
about ??
you don't need it 13:15
because you can use the dot between them
%foo!.<bar>!.<baz>!.<bla>
%foo.<bar>.<baz>.<bla> is the same as %foo<bar><baz><bla>
cognominal For the ?= , it makes sense to keep it prefix 13:17
ruoso do you have an example for ?=?
er.. "?=" ?
If I get it right, the = metaop will work with ?. just as it works for . 13:18
cognominal problem of suffix ! is that it can be confused with a factorial
ruoso $a ?.= foo
cognominal, it's not suffix
and it's not just "!" 13:19
it's infix:<?.> and infix:<!.>
std: sub infix:<?.> {...}; sub infix:<!.> {...}; my $a; $a?.foo; $a!.bar;
cognominal rusoso, can you edit the git to your like? so I get what you say?
p6eval std 28360: OUTPUT«Undeclared routines:␤ bar used at 1␤ foo used at 1␤ok 00:03 39m␤»
masak postcircumfix:<< < >? >>
cognominal ok, got it 13:20
I edit 13:21
ruoso std: my $a; $a .= foo;
p6eval std 28360: OUTPUT«ok 00:03 38m␤»
ruoso hmm... it seems STD special cases "."
cognominal I am so happy to see that new syntax blends so easily in the langage 13:22
ruoso std: sub infix:<?.> {...}; sub infix:<!.> {...}; my $a; $a?.<foo>; $a!.<bar?; 13:23
std: sub infix:<?.> {...}; sub infix:<!.> {...}; my $a; $a?.<foo>; $a!.<bar>;
p6eval std 28360: OUTPUT«===SORRY!===␤(Possible runaway string from line 1)␤Preceding context expects a term, but found infix < instead at /tmp/pp9Y0f6hu0 line 1 (EOF):␤------> <!.> {...}; my $a; $a?.<foo>; $a!.<bar?;⏏<EOL>␤ expecting escape␤FAILED 00:03 42m␤»
std 28360: OUTPUT«ok 00:03 39m␤»
ruoso but I guess simply declaring the operator is not enough, because it will try to invoke sub bar in $a?.bar 13:24
we need to have the same magic the dotty has
TimToady, is it possible to implement (without changing STD) an operator at the level of the dotty, that won't try to evaluate the left side before invoking it? as the above $a!.foo idea... 13:26
hmm... dotty has its own multi token 13:27
so it's not just a matter of declaring an infix op 13:28
std: sub dotty:<?.> {...}; my $a; $a?.b
masak ruoso: by 'multi token', do you mean 'category'?
p6eval std 28360: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/8mGF1R5saS line 1:␤------> sub dotty:<?.> {...}; my $a; $a?.⏏b␤ expecting any of:␤ POST␤ bracketed infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ standard 13:29
..stopper␤ statement modifier loop␤…
ruoso masak, yes 13:29
masak ok.
just trying to keep up. :)
moritz_ std: augment slang Main { token dotty:sym<?.> { <sym> } }; Int?.floor 13:30
p6eval std 28360: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/nZHvck9tLb line 1:␤------> n { token dotty:sym<?.> { <sym> } }; Int⏏?.floor␤ expecting any of:␤ POST␤ argument list␤ bracketed infix␤ infix␤ infix stopper␤ postfix␤
..postfix_prefix_meta_operator␤ standar…
jnthn I'd expect you'd do it through dotty.
But doesn't seem to work. :-/
masak jnthn! 13:31
jnthn masak!
ruoso I guess STD could add the same logic it does for infix:<foo>
masak jnthn: how's Asia?
jnthn masak: Pretty cool. :-)
masak wants too 13:32
jnthn I've had really great weather most of the trip, but my last 3 days in Japan (yesterday, today and tomorrow) are all loads of rain.
ruoso TimToady, re-writing my earlier question... is it possible for STD to allow custom dotty ops the same way it does for infix/postfix/etc?
masak it's pretty cool here in Uppsala as well, but probably not in the same way. :(
jnthn masak: lol
masak: I ate good Ramen toniht.
*tonight
masak nice. 13:33
jnthn Hakata is meant to be one of The Places to have that...
masak we've had very adequate sushi for lunch today.
pmichaud good morning, #perl6
jnthn hi pmichaud
masak pmichaud: \o/
masak tries saying "Hakata" out loud 13:34
jnthn whoz op?
masak: Me saying "Fukuoka" out loud was far worse, before I was told how to say it properly.
masak heheh.
I guess, it's more like 'fook...' than 'fuck...' 13:35
dang, we need to teach people IPA on a wider scale. :/
jnthn It's kina fuck-ish, but I'd got it as fuk-u-o-ka (4 syllables) where as actually the "uo" are a dipthong-ish thingy. 13:36
Yeah, I keep meaning to learn IPA.
huf which is the most standard ascii encoding of IPA (or something similar)? 13:37
masak our intro-Mandarin teacher just assumed everyone knew IPA. I wish more techers did that.
huf: I've heard there's en.wikipedia.org/wiki/X-SAMPA
huf: but I've never really tried it. I imagine it's parly painful.
jnthn masak: Where did you learn it? 13:38
huf yeah, looks like it. but at least it works even w/o unicode
jnthn At school, or just by yourself for interest?
ruoso tries, without success, to see where STD automatically registers sub infix:<bla> as a category:infix 13:39
moritz_ on the new evalbot server pugs, elf, rakudo, std and vijs work 13:42
mildew's error messages are... opaque to me 13:43
lisppaste3 moritz_ pasted "mildew error message" at paste.lisp.org/display/87497 13:44
ruoso er... the paste is opaque to me now ;) 13:45
moritz_ huh? 13:46
ruoso moritz_, could you try pasting again? it appears blank to me
moritz_ that's LTA
jnthn mildew gives zen error messages?
ruoso LTA? 13:47
moritz_ ruoso: nopaste.snit.ch/18022
jnthn ;-)
moritz_ less than awesome
cognominal gist.github.com/191076 # new version, I don't understand the interest of gist because the last url does not show my update.
*previous url 13:48
moritz_ did you update the previous gist? or did you make a new one?
pmurias diakopter: perl viv --js -e 'say 1' works here 13:48
diakopter pmurias: yay 13:49
ruoso cognominal, again, I think that's not postcircumfix 13:49
pmichaud I don't understand the use of the term "dereference" here
ruoso it's a dotty
yeah... dereference is pointless in Perl 6
pmurias, would you help moritz getting the mildew evalbot up? 13:50
cognominal what is the word, then?
diakopter vijs: say 3333 + (2222 * 2)
pmichaud well, what is it doing?
p6eval vijs 28360: OUTPUT«7777␤␤ time in interpreter: 0.023457 s␤»
diakopter odd; somehow parentheses grouping magically works without me doing anything in vijs
ruoso cognominal, it's simply a different dotty op that returns a failure or that actively raises an excception when the left side is undefined 13:51
diakopter vijs: say 3333 + 2222 * 2
p6eval vijs 28360: OUTPUT«7777␤␤ time in interpreter: 0.032286 s␤»
ruoso it's a kind of conditional method dispatch
diakopter boggles
cognominal yes
ruoso cognominal, it's not specific to .<foo> or .[bar] 13:52
it applies to any value
$a!.foo
raises an exception if $a is undefined
pmichaud is it just changing the dispatch depending on the defined-ness of the invocant?
ruoso yes, "!." raises an exception if the invocant is undefined
pmichaud why does this need a special operator? 13:53
ruoso convenience?
pmichaud seems like we should make the convenience more generic then, and not tied to dotty
ruoso not really suggesting it to be actually core, but it certainly need to be possible to be implemente
TimToady how does it differ from '.'?
pmichaud right, that's what I'm curious about.
ruoso $a.?foo tries to dispatch a method foo 13:54
but $a might be defined or undefined
$a?.foo will fail if $a is defined but doesn't implement foo
TimToady how does it differ from $a.foo
ruoso $a?.foo won't try to dispatch foo if $a is undefined 13:55
TimToady also, you may not add a dotty beginning with something other than dot
cognominal I was thinking it in the contex of .[] and .{} with special action when the value does not exist. 13:55
pmichaud this already exists: $a.?foo # doesn't dispatch foo if $a is undefined
cognominal Apparently you are thinking it in a larger context where my propostion may not make any sense. 13:55
ruoso pmichaud, er... it doesn't fail if $a doesn't have method foo
pmichaud which it probably doesn't, if it's undefined :) 13:56
ruoso but if $a is undefined it will still try to invoke foo
pmichaud, wrong...
TimToady note that dotty has to be unambiguous as both postfix and as a term
ruoso Object.?new
this will successfully invoke method "new" on Object
pmichaud because method new is defined as method new(Object:B $x: ... ) 13:57
ruoso hm?
pmichaud .new is allowed to be invoked on undefined objects 13:58
ruoso rakudo: class Foo { method bar { say "Hello" } }; Foo.bar
p6eval rakudo e52ed3: OUTPUT«Hello␤»
ruoso rakudo: class Foo { method bar { say "Hello" } }; Foo.?bar
pmichaud Rakudo isn't a valid implementation.
p6eval rakudo e52ed3: OUTPUT«Hello␤»
ruoso pmichaud, but rakudo is right in that point
pmichaud Rakudo doesn't constrain its invocants at the moment.
ruoso but the constraint is in the other direction
pmichaud is it? What's the default :D/:U/:B flag for methods?
TimToady S12 currently has :A instead of :B 13:59
pmichaud okay, :A then
but what's the default for methods that don't explicitly declare the invocant?
ruoso 'd guess :A 14:00
pmichaud anyway, "defined or fail" should probably be written as ($a // !!!)
ruoso "A bare Int may default differently in different circumstances. In a variable declaration, :A is assumed, whereas in a formal parameter that is not an invocant, :D is assumed." 14:01
TimToady I'd think :D would be a saner default most of the time, though it may depend on method/submethod
ruoso I think :A is a good default because it lefts :U and :D to when you need different implementations 14:03
pmichaud I think :D is the saner default
ruoso so you can still call 1.new
TimToady I think :D is a good default if you refer to any attributes in the body
pmichaud when I write a method, I don't generally expect that method to be valid on the (undefined) type object
TimToady but it's too early in the morning for me to decide anything :) 14:04
pmichaud for example, Rat.sin doesn't seem to make sense as :A
moritz_ pmichaud: only because it accessess attributes
TimToady anyway, if you guys want to define anything on the calling end, it should be a postfix, not a dotty
pmichaud agreed. the basic form would seem to be ($a // !!!)
so perhaps something like postfix:</!>
TimToady and *certainly* not an infix 14:05
or postfix:<?>
ruoso can a postfix interrupt a statement?
TimToady probably with a lookahead <!before '?'>
ruoso $a?.b.c.d
pmichaud ruoso: sure, that just parses as ($a?).b.c.d
TimToady define what you mean by "interrupt a statement" 14:06
moritz_ pmurias, ruoso: re-running the build script magically solved my problems with mildew
ruoso avoid invoking .b.c.d
pmichaud instead of "avoid invoking", how about "makes .b.c.d harmless"? 14:07
ruoso hmm... that solves it as well
moritz_ maybe that problem (having an invocant chain where one might fail) should be solved with feeds instead 14:07
TimToady similar to how subscripts propagate failure
moritz_ gives TimToady cognitive dissonance 14:08
pmichaud in particular, with postfix:<?> one could write $a?.b?.c?.d 14:09
which handles the case of a method returning a failure object as well 14:10
TimToady but Failure will have very few methods defined on it anyway, and we should just make sure the original Failure doesn't get lost in the new dispatch 14:11
we need that for cascaded subscript sanity in any case
TimToady (which is a really good argument for *not* accessing stacked exceptions via .[] 14:12
TimToady since @a[$b][$c][$d] doesn't want to mess up the failure if @a[$b] doesn't exist by calling [$c] or [$d] 14:14
also probably a good argument for limiting the namespace of methods available on Failures 14:15
maybe make them all .Xfoo or some such
pmichaud TimToady: ooc, do you see Failure as more of a mixin role or as the type for most failure objects? 14:16
moritz_ is Failure ~~ Any?
pmichaud s/type/base type/
moritz_ if yes, it has loads of methods 14:17
TimToady I suppose we could put Failure outside of Any alongside junctions 14:19
pmichaud if we do that, it can't be passed to functions easily
TimToady not sure what the mixin model buys us either
pmichaud (unless they declare arguments as Object)
moritz_ unless undefined values are special-cased in type checks
pmichaud oh, correct, they are.
except that above we just said that :D is assumed on non-invocant formal parameters :) 14:20
moritz_ in Eiffel there's a curious class for undef that notionally inherits from all existing classes
TimToady a bottom class
moritz_ right 14:21
TimToady called _|_ in Haskell, I believe
pmichaud TimToady: (mixing class) I'm thinking of the case where we might want a Failure object that returns a value other than 0/""/false
*mixin
pmichaud I'm completely fine if we don't have such things... I was just curious if we did :) 14:23
TimToady it seems like the choice is between sending an unexpected Failure down into a non-suspecting routine, vs dispatching to the wrong routine or no routine at all
the latter seems slightly saner
especially if we can usually get it to dispatch to no routine at all
pmichaud agree
well, if arguments tend to default to :D then that would likely be the case 14:24
TimToady it would be corny if a Failure to produce a typeobject ended up invoking 'new' correctly anyway...
s/correctly/successfully/ 14:25
pmichaud S02 says that Failure is a "non-instantiable role" 14:27
KyleHa Maybe that means that when you try to make an instance of it, all you get is a Failure. 14:28
TimToady not sure what the use case is for that, vs accidentally calling methods
KyleHa :D
ruoso I guess the idea of $a?.foo would be in the line of magically adding a CONTROL block surrounding that statement... 14:29
TimToady don't go there :) 14:30
pmichaud if we're modifying a "statement", that sounds like a contextualizer of some sort 14:30
still, I agree with "don't go there" :)
ruoso will there be dragons?
TimToady there will be multiplied entities 14:31
maybe we should put Failure outside of Any for a while and see how it works out 14:32
ruoso ouch
pmichaud okay, I can certainly try it in Rakudo and see what happens. 14:33
[particle] Failure is not an option?
pmichaud is Failure really a "non-instantiable role" as S02 says, or ... ?
TimToady that might be a useless generalization
not sure
pmichaud okay
Rakudo currently has it as a standard type
(not a role) 14:34
TimToady so it wouldn't be hard to move outside of Any
pmichaud but our Failure handling is a bit "whatever worked at the time" as opposed to being cleanly designed
araujo morning 14:34
TimToady I'd like to know if there's any good use case for Failure ~~ Any 14:35
araujo increments one year from today
TimToady but at the moment it feels like junctions in wanting to subvert dispatch 14:36
TimToady one could, I supposed, claim there's a tree of Failure types shadowing all the Any types... 14:37
would need a use case for that approach too 14:38
pmichaud well, since any container is effectively able to hold an (undefined) Failure, I'm not sure we need it.
I suspect S04:1059 may be a fossil too (the part about "container whose type allow the Failure role to be mixed in") 14:39
TimToady iirc, we did that by morphing a Failure into a typeobject with the Failure mixin, or something like that
so it still officially passes the type test of the container 14:40
moritz_ masak: ha, you can remove the ':by on ranges' from use.perl.org/~masak/journal/39597 :-)
masak I can indeed. :)
TimToady well, it's just deprecated so far
masak I'll update the post to that effect.
pmichaud I'm thinking of incorporating 39597 into rakudo's ROADMAP 14:41
TimToady but we'd better not remove it until someone implements ... *+0.02
pmichaud well, Rakudo doesn't implement :by yet :)
TimToady ah, then it's pretty easy to remove it :)
pmichaud so it's not as if we're losing existing functionality :)
pmichaud I was working a bit on lazy implementations last night 14:41
to get lazy ranges and lists
(and IOs) 14:42
masak how'd it go? 14:44
pmichaud it also occurs to me -- are closures in series only valid after an infix:<...> ? (more)
i.e., what about something like 14:45
1 ... *, 10, *+10, 100, *+100, 1000
TiMBuS kil
agh
my gnome-do had died =/ 14:46
pmichaud in other words, what happens if a rhs list happens to have a closure in a 2nd or later element? 14:46
pmichaud or is "..." just a form of specialized comma that makes a list into a series? 14:48
TimToady well, 1 ... *, 10 ... *+10, 100 ... *+100, 1000 seems more readable to me
TimToady ... stands for (potentially) multiple omitted commas 14:48
pmichaud okay, so my question remains then -- do we constrain the closures to immediately following infix:<...>, or can they occur anywhere in the series? 14:49
TimToady and I kind feel like I don't want ... to have to look at every value in the right list
I think if they're elsewhere in the list nobody will invoke them for you
pmichaud would it need to? I'd think it'd still be lazy 14:50
oh, okay
I see what you mean
TimToady and it just seems like encouraging a less readable kind of ... 14:50
sometimes I think my life would be simpler if I decided things on principle rather than gut feelings :) 14:51
pmichaud it's a waterbed sort of "simpler", though
TimToady but then, we have a lot of those folks already...
pmichaud deciding things on principle just pushes the complexity into other areas of your life :) 14:52
TimToady or other areas of other people's lives :)
[particle] *cough* implementors *cough* 14:53
TimToady but really, it's more like I have too many principles that all fight with each other :)
pmichaud "You can't fight in here! This is the War Room!" (saw Dr. Strangelove again last night :-) 14:54
[particle] maybe you need a superintent
Woodi but feeling in guts can be looked as intuition - intuition is based on unclear feeling that something is right and comes with years of experience 14:56
pugs_svn r28361 | lwall++ | [STD] add warning comment to dotty section about starting with dot 14:57
Woodi unclear becouse of dificulties like in researches
TimToady some of the hardest principles to grok are the ones that cause something to NOT be there 14:58
Woodi TimToady: you mean p6 shouldn't have some nice functionalities ? :) 15:04
TimToady yes, like the ability to parse everything with a Lisp parser :) 15:05
diakopter principals, too
Woodi i'm sure somebody will implement that :) or just way to do something like that 15:07
TimToady certainly, and I don't mind parsing *some* things with it, just not everything
Woodi but priority is important principle 15:08
TimToady it's just one principle
do you always prioritize eating over sleeping or sleeping over eating? 15:09
Woodi but we do not live forever here...
TimToady you have to do both
masak this one is slightly challenging: twitter.com/offwhitemke/status/4173512015 15:10
TimToady so priorities must often give way to blance
masak I think the poster is well-informed, but wrong.
TimToady *balance
moritz_ masak: "release date: known" + link to Rakudo * announcement
Woodi agree, not many absolute principles
pmichaud the poster referred to the wikipedia article, which says "no known release date" 15:11
masak moritz_: I'll try that. my only gripe with it is that it's 100% defensive, and 0% tongue-in-cheek.
moritz_ masak: or wait for better suggestions
pmichaud 3rd paragraph of the wikipedia article probably needs an update
also, I'm wary of saying that Rakudo Star is the release date for "Perl 6"
masak same here.
pmichaud it's the release date for "a usable implementation of Perl 6"
Woodi btw. yesterday i noticed that rakudo is MUCH more ready then official web pages says... 15:12
masak it is.
I've been saying this for months! :)
pmichaud Woodi: I agree to some extent, but I haven't found the right phrasing yet
some people won't consider it to be ready until there's a distribution with modules
Woodi sqlite3 works!
TimToady maybe we'll trick everyone in April and mark all the non-passing tests as "for 6.0.1
"
Woodi it's production ready :)
pmichaud +1
:-) 15:13
masak uhm.
pmichaud let's see where we are in February first :)
TimToady why I said "maybe" :)
masak :)
pmichaud If Rakudo is truly far enough along at that point, I have no problem with that plan :)
anyway, we do need to update the wikipedia page 15:14
TimToady engineers always hedge their predictions so that they're never wrong :)
masak I care about attracting people, but I don't care much about a Perl 6 'release date' any more.
pmichaud masak: agreed, although some people won't consider Perl 6 until there's a "release date" 15:14
as the tweet demonstrates 15:15
Woodi sometimes marketing approach is good :) however i near hate that approach
masak pmichaud: assuming the tweeter belongs to that group, I simply shouldn't reply.
pugs_svn r28362 | jimmy++ | [docs/zh-cn/syn]added S02-bits.pod which is a Chinese transcript for S02, just a start.
TimToady Woodi: balance is necessary there too 15:16
masak but I can't help thinking that there's some possible reply that'll help him get a brighter view of Perl 6.
moritz_ are there any other great (non-software) projects without a release date?
Woodi "realease data" still can be unknown. just tell world that p6 work NOW
pmichaud it's hard to say where offwhitemke falls in that category
however, offwhitemke is correct in that (according to wikipedia) we explicitly disclaim a release date 15:17
and we probably need to do something about that
masak perpetual beta? :P
pugs_svn r28363 | jimmy++ | [docs/zh-cn/syn]changed S01.pod to S01-overview.pod
Woodi i gues perl1 was in use before 1.0...
pmichaud I think I have a potential tweet reply 15:18
masak ah. someone replied: twitter.com/magnachef/status/4173914642
good reply.
pmichaud sent my replies 15:20
masak pmichaud++ 15:21
Woodi is it hard to autogenerate rakudo modules from C API ? for ncurses or openldap ? purpose: instant-available modules 15:28
moritz_ Woodi: there's an NCI compiler for parrot that makes it quite easy to write NCI signatures...
and once these are known, it's not hard to use from Rakudo 15:29
but that NCI compiler is a bit bit-rotted and needs love
diakopter -\o/-
Woodi so anser is: it's done ? :)
moritz_ no.
Woodi k, understud 15:30
i will google for NCI compiler
pmichaud ick. attempted kidnapping at my son's school this morning.
huf whoa 15:31
was it one of the parents during a particularly horrid divorce?
pmichaud not likely
TimToady random, or estranged parent?
pmichaud random
we know the kid who was attempted to be nabbed -- he's in my son's cub scout troop
er, "pack"
moritz_ Woodi: nci_gen might be a good keyword 15:32
pmichaud (in fact, his father is the scoutmaster for the pack) 15:33
diakopter pmichaud: how was it thwarted 15:35
pmichaud the boy is in 4th or 5th grade, not too young, and from his cub scout training he probably knew what to do, broke away from the kidnappers and headed to a safe place
(er, kidnapper, singular)
huf what did they want with the kid? ransom or unknown (possibly crazy person) 15:36
pmichaud don't know
something like this happened last year also
diakopter [OT] - would you go to work as a JS developer for a hi-tech company whose website says "Tuesday, September 22, 109" 15:37
huf heh, you'd be the only js dev in the world
but time travel is still cool :)
pmichaud diakopter: maybe ask them how they dealt with the "Year 100" problem. 15:38
avuserow they still haven't fixed all those "2 digit year" versus "years since 1900" bugs on active websites? really? 15:39
diakopter :)
hence my question 15:41
ruoso can't quite get why people like printing the current date and time in websites... if that was the date and time the site was last edited, it would make any sense... 15:44
s/any/some/
diakopter it's javascript; just not updated for at least a decade. :) 15:47
moritz_ pmichaud: could you make the pugc-commit mailing list moderated only? 16:19
pmichaud sure 16:19
I thought it was moderated already 16:20
guess not 16:21
just a sec
pmichaud moritz_: done, all messages (except those coming from pugs-commit on feather) are now moderated 16:27
moritz_: I've also given your account manager permissions to the list
moritz_ pmichaud: great, thanks 16:30
dalek kudo: 84981fd | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 436 files, 15498 (71.4% of 21695) pass, 0 fail
16:32
pugs_svn r28364 | moritz++ | [evalbot] use ~ instead of full path to file, and glob 16:40
OYSTR1 test 16:56
diakopter OYSTR1: yes 16:57
OYSTR1: you must be a bot. around here bots get +v
OYSTR1 op me! 16:58
:P
huf bots getting smarter every day.... damn kids and their rollerboards! 17:00
stephenlb heh
OYSTR1 I use a trikke.
OYSTR1 my friend told me his interpreter got changed to a compiler. That makes those infinite loops go that much faster! 17:02
diakopter I meant pmurias made it embed the interpreter in emitted .html/js :P
hugme: hug OYSTR1 17:03
hugme hugs OYSTR1
OYSTR1 awe shucks.
smash hello everyone 17:03
diakopter ho 17:04
I mean
yo
TimToady hello smash, you wonderful person you!
diakopter or hi
OYSTR1 you've given a voice to my oystr. 17:05
diakopter and then you went and shucked it 17:06
TimToady OYSTR1: help
OYSTR1 Get::Shucked
OYSTR1 ... help? You need help? I thought you were the author of your own fate. 17:07
diakopter STD is fairly fatalistic, actually 17:08
or fatal
OYSTR1 especially gonorrhea
TimToady hopefully fatally attractive
OYSTR1 ooh... boiled bunnies. 17:09
TimToady congratulations, you just passed the diakopter test 17:09
OYSTR1 really? 17:10
diakopter lol
OYSTR1 that's so cool because .. um. wait. why is that cool?
TimToady it means you might like butterflies 17:11
OYSTR1 the test that I was to pass the diakopter test is a very good test to pass.
why do you think I might like butterflies?
diakopter hrm
TimToady because you passed the test
OYSTR1 why did I pass the test?
TimToady why do you ask me why did you pass the test? 17:12
OYSTR1 did you like for me to pass the test?
diakopter wget scripts.irssi.org/scripts/ban.pl
oops, ww
TimToady yes, but only if you also like butterflies 17:13
OYSTR1 what do you mean by oops?
TimToady I know what I mean when I say oops... 17:14
OYSTR1 I don't like butterflies.
moritz_ then #perl6 is not the channel for you, I fear
TimToady well, you don't *actually* have to like them
you only have to know how to be nice to them
see perl6.org
OYSTR1 I think I must like parrots. 17:15
TimToady you can say that again...awwwk
OYSTR1 I like awk. it is better than perl
TimToady now yer just bein' mean 17:16
OYSTR1 that's what she sed
TimToady you should go over to the #awk6 channel
OYSTR1 why do they need to have a channel for awk? 17:17
diakopter I don't know, why?
why do they need to have a channel for awk who?
TimToady Radio!
OYSTR1 auks are members of the puffin family. 17:18
TimToady you shouldn't believe everything you read
OYSTR1 pearls are just oyster vomit.
except oysters can't vomit. 17:19
TimToady life is complicated
diakopter I thought they were oyster kidneystones
OYSTR1 so is perl.
at least I don't have to eval awk
I wonder if auks eat oysters. 17:20
diakopter looks around for the real p6eval
TimToady are you evaling Perl 6?
OYSTR1 hot::sauce++
TimToady preferably about 500,000 scovilles
OYSTR1 wimp
habaneros and scotch bonnets, pleasse. 17:21
TimToady those are less than 500k
generally
OYSTR1 fair enough. 17:22
if it doesn't hurt coming out, it's not worth the hurt going in.
TimToady I am an expert on a lot of things, but not on Perl 6
to be an expert, you have to know where to go for the answers. 17:23
OYSTR1 wow. I know how to google. I must be an expert on everything.
moritz_ so who designs the designers?
OYSTR1 God is in the gasps. 17:24
TimToady that fits with STD
TimToady OYSTR1: would you like to help us gasp? 17:26
OYSTR1 Where shall I begin? 17:26
moritz_ at the start 17:27
OYSTR1 BEGIN{STD=0}
TimToady std: BEGIN{STD=0}
OYSTR1 END{print STD}
p6eval std 28364: OUTPUT«Undeclared names:␤ BEGIN used at 1␤ STD used at 1␤ok 00:02 37m␤»
avuserow rakudo: undefine 1
p6eval rakudo e52ed3: ( no output )
pugs_svn r28365 | moritz++ | [evalbot] update config file 17:28
avuserow std: BEGIN { say "hello, world" }
p6eval std 28364: OUTPUT«ok 00:04 37m␤» 17:28
avuserow std: BEGIN{ say "hello, world" }
p6eval std 28364: OUTPUT«Undeclared name:␤ BEGIN used at 1␤ok 00:04 37m␤»
TimToady std: BEGIN { constant STD = 0 }
p6eval std 28364: OUTPUT«ok 00:02 37m␤»
diakopter bye bye p6eval 17:28
OYSTR1 battery is dying
diakopter oh, wb p6eval 17:29
vijs: say 'hello' ~ ' world'
moritz_ the new, faster and better p6eval, except where buggy
p6eval vijs 28359: OUTPUT«hello world␤␤ time in interpreter: 0.007606 s␤»
ruoso mildew: say "Hello"
diakopter SPEEDIER
p6eval mildew: OUTPUT«Hello␤»
OYSTR1 std: say "who has stds?"
p6eval std : OUTPUT«ok 00:03 95m␤»
diakopter pugs: die die 0
p6eval pugs: OUTPUT«sh: /home/p6eval/pugs/pugs: No such file or directory␤»
diakopter std: die die 0 17:30
p6eval std 28359: OUTPUT«ok 00:01 95m␤»
pugs_svn r28366 | moritz++ | [evalbot] correct location of pugs binary 17:30
moritz_ pugs: die die 0 17:30
p6eval pugs: OUTPUT«*** 0␤ at /tmp/LDSCif1OuH line 1, column 1 - line 2, column 1␤»
TimToady pugs: die die die !!! 17:31
p6eval pugs: OUTPUT«*** ␤ Unexpected end of input␤ at /tmp/Ypvb6NcEKb line 2, column 1␤»
TimToady pugs: die die die ...
p6eval pugs: OUTPUT«*** Cannot use this control structure outside a 'routine' structure␤ at /tmp/IyInwo6zH3 line 1, column 13 - line 2, column 1␤»
TimToady snerk
diakopter heh
TimToady rakudo: die die die ...
p6eval rakudo 0eaf62: OUTPUT«Can't return outside a routine␤in Main (/tmp/rNkebgIc12:2)␤»
diakopter vijs: die die 0 17:32
TimToady this is wrong, you should be able to fail in Main 17:32
p6eval vijs : OUTPUT«␤ time in interpreter: 0.005670 s␤»
TimToady rakudo: fail "Phooey"
p6eval rakudo 0eaf62: OUTPUT«Can't return outside a routine␤in Main (/tmp/JbUE6hIqqz:2)␤»
TimToady LTA
moritz_ aye 17:33
diakopter vijs: fail epic 17:34
p6eval vijs : OUTPUT«Undeclared routine:␤ epic used at 1␤execute(): execute error: terminator__S_Semi not yet implemented; srsly!!?!?␤last: args␤T,T__terminator__S_Semi,_specific,prec,END,dba,assoc,TEXT,BEG,kind,WS,SYM,phase,postDo,eval_args,invoker,context at viv line 171.␤»
TimToady hey, it works! 17:35
diakopter ha
succeed epic
vijs: succeed epic
p6eval vijs 28359: OUTPUT«Undeclared routines:␤ epic used at 1␤ succeed used at 1␤execute(): execute error: terminator__S_Semi not yet implemented; srsly!!?!?␤last: args␤T,T__terminator__S_Semi,_specific,prec,END,dba,assoc,TEXT,BEG,kind,WS,SYM,phase,postDo,eval_args,invoker,context at viv line 171.␤» 17:36
diakopter what is the "used at 1" line 1?
TimToady maybe instead of die we should have contextualizers: "epic fail", and warn could be "pretend fail" or some such 17:37
diakopter fake fail
fast fail
moritz_ vijs: say 1;␤fail
p6eval vijs : OUTPUT«execute(): execute error: terminator__S_Semi not yet implemented; srsly!!?!?␤last: args␤T,T__terminator__S_Semi,_specific,prec,END,dba,assoc,TEXT,BEG,kind,WS,SYM,phase,postDo,eval_args,invoker,context at viv line 171.␤1␤»
TimToady fakefail++
moritz_ vijs: say 1;␤ fakefail
p6eval vijs 28359: OUTPUT«Undeclared routine:␤ fakefail used at 2␤execute(): execute error: terminator__S_Semi not yet implemented; srsly!!?!?␤last: args␤T,T__terminator__S_Semi,_specific,prec,END,dba,assoc,TEXT,BEG,kind,WS,SYM,phase,postDo,eval_args,invoker,context at viv line 171.␤1␤»
TimToady then instead of "use fatal" it'd be "use epic"
moritz_ yes, line number
TimToady vijs: exit;␤fakefail;␤fakefail;␤fakefail 17:39
p6eval vijs : OUTPUT«Undeclared routine:␤ fakefail used at 2,3,4␤execute(): execute error: TypeError: Cannot read property 'length' of undefined at viv line 171.␤»
pugs_svn r28367 | lwall++ | [STD] make undefined message slightly L LTA 17:42
syntheticore_ hello everybody 17:43
syntheticore_ i have a question regarding the spec of the Set class in S32 17:45
it says: "A Set responds to hash operators as if it were a Hash of True."
on the other hand it was said that Sets should compare their elements using === 17:46
Hashes seem to use == for membership-testting 17:47
so whats the right thing to do?
TimToady actually, they use eq by default 17:48
(Hashes)
moritz_ and eq and === are the same on Strings
TimToady but my %set{Any} should be using ===
syntheticore_ ok, thanks for clearing that up 17:49
TimToady so mutable objects stand as their own values, basically using their address as their identity
syntheticore_ the spec also says that pick() should pick keys with higher values more often. 17:51
Does this really mean the "values" of the actual keys?
TimToady when used on Bags
no, the count of the how many copies there are in the bag of that item 17:52
which is the hash value, not hte key
you ++ the value when you add a member to the KeyBag, and -- it when you take it out
it self-deletes when the value goes to 0 17:53
syntheticore_ I was wondering, because the spec gives basically the same definition for pick() for both Bags and Sets
TimToady yes, but a set elements value is always 1
diakopter vijs: my $a=sub{$a()};$a()
TimToady *element's
p6eval vijs 28359: ( no output ) 17:54
TimToady so all the members of a set have equal probability
diakopter rakudo: my $a=sub{$a()};$a()
p6eval rakudo : OUTPUT«maximum recursion depth exceeded␤in sub _block52 (/tmp/JyImFAPC7E:2)␤called from sub _block52 (/tmp/JyImFAPC7E:2)␤called from sub _block52 (/tmp/JyImFAPC7E:2)␤called from sub _block52 (/tmp/JyImFAPC7E:2)␤called from sub _block52 (/tmp/JyImFAPC7E:2)␤called from sub _block52 (/tmp/Jy…
diakopter vijs has no maximum recursion depth. is that bad?
syntheticore_ that's why I was confused ;)
thnx
TimToady also assuming +True == 1 17:55
diakopter === ?
TimToady well, True == 1 too 17:56
moritz_ rakudo: say +True === 1
p6eval rakudo 0eaf62: OUTPUT«0␤»
moritz_ rakudo: say (+True) === 1
p6eval rakudo : OUTPUT«0␤»
moritz_ rakudo: say ((+True) === 1) 17:57
p6eval rakudo 0eaf62: OUTPUT«0␤»
TimToady rakudo: say +True
p6eval rakudo : OUTPUT«1␤»
moritz_ rakudo: say (+True).PARROT
TimToady O_o
p6eval rakudo 0eaf62: OUTPUT«Num␤»
diakopter vijs: say +True == 1
moritz_ anyway, this is a bug
p6eval vijs : OUTPUT«execute(): execute error: undefined not yet implemented; srsly!!?!?␤last: termish␤0,1,2,phase,postDo,eval_args,invoker,context at viv line 171.␤»
avuserow why is there no version number sometimes?
moritz_ avuserow: after migrating p6eval to a different server the rakudo revision numbers were broken
diakopter also vijs 17:58
moritz_ I just fixed it (hopefully)
diakopter during a snap..
TimToady vijs: die;␤fakefail;␤fakefail;␤fakefail
p6eval vijs 28359: OUTPUT«Undeclared routine:␤ fakefail used at 2,3,4␤execute(): execute error: TypeError: Cannot read property 'length' of undefined at viv line 171.␤»
diakopter vijs: you so speedy now 17:59
p6eval vijs : OUTPUT«Undeclared routines:␤ now used at 1␤ so used at 1␤ speedy used at 1␤ you used at 1␤execute(): execute error: terminator__S_Semi not yet implemented; srsly!!?!?␤last:
..args␤T,T__terminator__S_Semi,_specific,prec,END,dba,assoc,TEXT,BEG,kind,WS,SYM,phase,postDo,eval_args,invoker,contex…
TimToady std: die;␤fakefail;␤fakefail;␤fakefail 18:00
p6eval std 28359: OUTPUT«Undeclared routine:␤ fakefail used at 2,3,4␤ok 00:01 95m␤»
diakopter vijs: my $a = 33993993993939393993939399393939; my $b = 939393993939399393939399393999; say $a / $b; say $a % $b;
p6eval vijs : OUTPUT«36␤175810212121015812121021209975␤␤ time in interpreter: 0.016540 s␤»
TimToady ETOOIMPATIENT
vijs: say pi 18:01
p6eval vijs 28359: OUTPUT«execute(): execute error: term__S_pi not yet implemented; srsly!!?!?␤last: noun__S_term␤T,T__term__S_pi,_specific,prec,END,dba,BEG,TEXT,kind,WS,SYM,phase,postDo,eval_args,invoker,context at viv line 171.␤»
TimToady hmm, STD ought to be inlining constants 18:02
diakopter rakudo: my $a = 33993993993939393993939399393939; my $b = 939393993939399393939399393999; say $a / $b; say $a % $b;
TimToady NYI I guess
p6eval rakudo : OUTPUT«Assignment type check failed; expected Int, but got Num␤in sub Rat::block_69 (src/gen_setting.pm:1082)␤called from method Rat::new (src/gen_setting.pm:1092)␤called from sub infix:/ (src/gen_setting.pm:1168)␤called from Main (/tmp/1wlxkGB5Qm:2)␤»
TimToady vijs: constant pi = 3; say pi 18:03
p6eval vijs 28359: OUTPUT«execute(): execute error: scope_declarator__S_constant not yet implemented; srsly!!?!?␤last: noun__S_scope_declarator␤T,T__scope_declarator__S_constant,BEG,_specific,SYM,scoped,END,M,phase,postDo,eval_args,invoker,context at viv line 171.␤»
diakopter phase,postDo,eval_args,invoker,context are each members the vijs interpreter trampoline/loop adds 18:04
I don't get that rakudo error msg 18:07
what's with Rat::new
rakudo: my $a = 33993993993939393993939399393939; my $b = 939393993939399393939399393999; say $a/$b; say $a % $b; 18:09
p6eval rakudo : OUTPUT«Assignment type check failed; expected Int, but got Num␤in sub Rat::block_69 (src/gen_setting.pm:1082)␤called from method Rat::new (src/gen_setting.pm:1092)␤called from sub infix:/ (src/gen_setting.pm:1168)␤called from Main (/tmp/CGX47Qf8hu:2)␤»
moritz_ diakopter: it autopromotes large ints to Num (or so), so the Int type check fails 18:10
diakopter oh 18:10
TimToady doesn't do big Int yet
diakopter vijs: say 1+<1 18:11
p6eval vijs 28359: OUTPUT«1␤␤ time in interpreter: 0.008679 s␤»
diakopter blinks
oh, Multiplicative 18:12
ok
diakopter goes to make <+ work
pugs_svn r28368 | diakopter++ | [vijs] implement infix__S_PlusLt 18:16
diakopter vijs: say 1+<2, 1+<3 18:17
p6eval vijs : OUTPUT«48␤␤ time in interpreter: 0.011067 s␤»
diakopter vijs: say 1+<2, ' ', 1+<3 18:18
p6eval vijs 28359: OUTPUT«4 8␤␤ time in interpreter: 0.011898 s␤»
diakopter whee
moritz_ jivs: say -1 +< 2
vijs: say -1 +< 2
p6eval vijs : OUTPUT«execute(): execute error: Symbolic_unary not yet implemented; srsly!!?!?␤last: eval_args␤T,T__Symbolic_unary,BEG,kind,prec,arg,uassoc,END,dba,assoc,M,phase,postDo,eval_args,invoker,context at viv line 171.␤»
moritz_ vijs: say (0-1) +< 2
p6eval vijs 28359: OUTPUT«-4␤␤ time in interpreter: 0.010970 s␤»
diakopter doesn't know whether that's expected. 18:19
diakopter just wires up the libraries
moritz_ rakudo: say (-1) +< 2
p6eval rakudo : OUTPUT«-4␤»
pmurias diakopter: why not having a maximum recursion depth would be a bad thing? 18:20
diakopter I dunno... I guess if each recursion takes a bit more memory, it'll run out eventually and the user will discover sometime there was an infinite recursion.
TimToady looks about right 18:21
I don't suppose you're doing anything like real multiple dispatch yet 18:22
diakopter nope 18:23
diakopter it doesn't even have an object/type model besides "p6var" (basically a slot in a context/scope/namespace that holds one of the other types, aka named/slotted reference), Int, p6sub, and Str 18:25
oh and p6array
I just chose whatever name I fancied; it can be rechristened upon baptism
assuming it comes back up...
vijs: 'you so quick and dirty' 18:27
p6eval vijs 28359: OUTPUT«␤ time in interpreter: 0.003139 s␤»
pugs_svn r28369 | diakopter++ | [vijs] implement shift right Int 18:29
diakopter cheats and manually svn updates p6eval
moritz: just the js/ dir, I mean 18:30
vijs: say 48+>2
p6eval vijs : OUTPUT«12␤␤ time in interpreter: 0.008955 s␤»
diakopter vijs: say (0-1536)+>2 18:31
p6eval vijs 28359: OUTPUT«-384␤␤ time in interpreter: 0.010835 s␤»
diakopter TimToady: to more fully answer your question, the "dispatch" is already a few tiers, so what's another few layers? :) 18:35
pmurias diakopter: say 'hello world' doesn't work in vivjs? 18:36
diakopter vijs: say 'hello world' 18:37
p6eval vijs : OUTPUT«hello world␤␤ time in interpreter: 0.005695 s␤»
diakopter pmurias: oh you mean locally for you? 18:39
pmurias didn't update everything 18:41
pugs_svn r28370 | moritz++ | [evalbot] better diagnostics for non-existing revision files 18:46
moritz_ vijs: say "hi" 18:47
p6eval vijs 28359: OUTPUT«hi␤␤ time in interpreter: 0.005720 s␤»
moritz_ is really at loss why somtimes the revision number is missing, and sometimes it works 18:48
d'oh.
vijs: say 3
p6eval vijs : OUTPUT«3␤␤ time in interpreter: 0.006779 s␤»
diakopter vijs: say 3; 18:53
p6eval vijs 28359: OUTPUT«3␤␤ time in interpreter: 0.006456 s␤»
diakopter vijs: say 3; 18:54
p6eval vijs : OUTPUT«3␤␤ time in interpreter: 0.006981 s␤»
rindolf Hi all. 18:57
moritz_ vijs: 3
p6eval vijs 28359: OUTPUT«␤ time in interpreter: 0.003172 s␤»
moritz_ vijs: say 3 + 4
p6eval vijs : OUTPUT«7␤␤ time in interpreter: 0.008535 s␤»
pmurias diakopter: i think we should have some tests for vivjs but i'm not sure where to put them 18:58
moritz_ vijs: say 3 + 4 18:58
diakopter pmurias: I agree.. I'm still working on the Test.pm emulation
p6eval vijs 28359: OUTPUT«7␤␤ time in interpreter: 0.007776 s␤» 18:59
moritz_ vijs: say 3 + 4
p6eval vijs : OUTPUT«7␤␤ time in interpreter: 0.008368 s␤»
diakopter weird 18:59
moritz_ vijs: say 3 + 4 18:59
p6eval vijs 28359: OUTPUT«7␤␤ time in interpreter: 0.019223 s␤»
moritz_ vijs: say 3 + 4
pmurias diakopter: moving vivjs to it's directory instead of being a mode on top of vivjs might be a good idea
p6eval vijs : OUTPUT«7␤␤ time in interpreter: 0.008196 s␤»
diakopter moritz_: the file needs closed
moritz_ hm? 19:00
pmurias diakopter: should i do it? 19:01
moritz_ can't parse that sentence
TimToady 2nd time through it reads second line of version file
is what I think they mean
pmurias moritz_: which sentence?
moritz_ 20:59 <@diakopter> moritz_: the file needs closed 19:02
TimToady s/needs/needs to be/
and reopened, presumably
moritz_ TimToady: uhm, I close it explicitly, and it's a lexical that stores the file handle anyway
TimToady just saying what I thought they meant
moritz_ ok 19:03
moritz_ vijs: say 3 19:05
p6eval vijs 28359: OUTPUT«3␤␤ time in interpreter: 0.007034 s␤»
moritz_ vijs: say 4
p6eval vijs 28359: OUTPUT«4␤␤ time in interpreter: 0.007086 s␤»
TimToady though that number seems about 10 back from head 19:07
std: nonesuch
p6eval std 28359: OUTPUT«Undeclared routine:␤ nonesuch used at 1␤ok 00:01 95m␤»
TimToady doesn't have my patch of 1.5 hours ago 19:08
moritz_ std: nonesuch 19:14
p6eval std 28370: OUTPUT«Undeclared routine:␤ nonesuch used at line 1␤ok 00:01 95m␤»
moritz_ that's after a 'make snap' 19:15
TimToady hmm
cron failure?
TimToady or does p6eval fire that off? 19:15
moritz_ cron
ok, some paths were wrong in the cron tab 19:16
diakopter tell pmurias: sure, if you want... there will likely be additions/fixes to viv that need migrated over though 19:38
phenny: tell pmurias: sure, if you want... there will likely be additions/fixes to viv that need migrated over though
phenny diakopter: I'll pass that on when pmurias is around.
pugs_svn r28371 | fglock++ | [mp6] Javascript client-side compilation works 20:16
diakopter std: nonesuch 20:25
p6eval std 28370: OUTPUT«Undeclared routine:␤ nonesuch used at line 1␤ok 00:01 95m␤»
diakopter flavioglock: howdy 20:29
flavioglock diakopter: hi!
perlcabal.org/~fglock/perlito.html
press "Execute" there
moritz_ flavioglock++ 20:30
flavioglock does it work?
Tene it works for me. 20:31
flavioglock yay!
diakopter looks good in Google Chrome, though I can't clear the Output box 20:32
moritz_ flavioglock: it seems that \n is ignored in the output
and it doesn't seem to handle errors very gracefully
flavioglock no, it doesn't handle errors at all
diakopter flavioglock: disregard our gripes :D that's great
flavioglock cool - I'll try to blog something 20:33
moritz_ flavioglock: and please tell us the URL 20:34
diakopter flavioglock: if you want bigints see how I'm doing them in my little STD->JS interpreter vijs
flavioglock diakopter: for now I just want it to be fast, in order to bootstrap in js; I'll add features later 20:36
diakopter oh
in case you're curious too, vijs uses perl (5) linked to Google's MIT-licensed JS engine "V8" 20:37
flavioglock nice - I'm using v8 at the command line too
diakopter: this compiler can also execute in perl5 and in SBCL Lisp 20:39
it could generate perl5 from the browser :)
diakopter neat... 20:40
IE can use Perl5 as a <script> engine with an IScript addin; I don't know about the other browsers 20:41
OR 20:44
you can swap out IE entirely, within IE: :) blog.chromium.org/2009/09/introduci...frame.html
diakopter flavioglock: I'm very curious what v8 bug it's working around? 20:49
flavioglock blog: use.perl.org/~fglock/journal/39664 20:53
it seems v8 doesn't compile a 'method' until it compiles the function you are inside, 20:54
adding the reference seems to fix it
[particle] diakopter: point of note, www.vijs.ca/ is the website for my favorite indian food on earth
diakopter ah, trick the JIT 20:56
flavioglock diakopter: I didn't investigate much, because it worked :)
diakopter [particle]: well, it needs a different name
my js interpreter, I mean
er, Perl6 interpreter, I mean. 20:57
pugs_svn r28372 | moritz++ | [t/spec] fix a Rat test
moritz_ can anybody please check if the latest rakudo runs t/spec/S32-num/rat.t fine? 20:58
on my local machine it dies at the end with "Could not find non-existent sub done_testing"
pmurias flavioglock: hi 20:59
phenny pmurias: 19:38Z <diakopter> tell pmurias sure, if you want... there will likely be additions/fixes to viv that need migrated over though
pmurias flavioglock: is mp6 bootstraped in js?
flavioglock pmurias: I didn't try yet, but it should work 21:00
I'll test tomorrow, I need to sleep
pmurias so how does perlito work?
flavioglock I used the perl5 compiler, with the js emitter
flavioglock the js compiler should compile itself, but I didn't try yet 21:01
pmurias what's your plan for mp6? 21:02
flavioglock I have a precedence parser I need to merge in, and a few more backends I'd like to test 21:03
maybe merge some features back from kp6, later 21:04
flavioglock pmurias: this is already big enough for a few weeks 21:10
pmurias what backend to plan on testing? 21:22
* backends
s/to/do you 21:23
moritz_ rakudo: say <a b c>.join
p6eval rakudo 0eaf62: OUTPUT«abc␤»
flavioglock I worked a bit on Clojure and I also tried desugaring to execute on Rakudo 21:24
flavioglock rpython also looks interesting 21:25
diakopter how about C#/DLR :) 21:26
moritz_ rakudo: say 1/2 eqv 1/2 21:27
p6eval rakudo 0eaf62: OUTPUT«infix:<eqv> is only implemented for certain special cases yet␤in sub infix:eqv (src/gen_setting.pm:2073)␤called from Main (/tmp/KzOtmXVNGs:2)␤»
flavioglock C# would be nice to have, but I don't have an application for it - so I'm not much motivated 21:28
it has a low fun-factor 21:29
diakopter C# has perhaps a too-high fun-factor for me. 21:30
flavioglock I experimented with modifying the v8 grammar to accept mp6
this has a high fun-factor, but it would be impossible to maintain across v8 releases
too high? 21:31
diakopter yeah, as in, I can't afford it. :) 21:34
moritz_ should 2, 4 ... *+2, 7 end in 6 or in 8? 21:35
pmichaud should be 2, 4, 6, 7
moritz_ pmichaud: thanks
flavioglock pmichaud: hi! 21:37
pmichaud hello, fglock. nice work on perlito
flavioglock thanks :)
moritz_ and 1, 3 ... +2, -2 would be infinite, right?
pmichaud do you mean *+2 ? 21:38
or +2
moritz_ *+2
pmichaud I would take it to be 1, 3, -2
flavioglock zzz &
pmichaud oh, wait 21:38
hmmm
moritz_ oh, uhm.
pmichaud yes: 1, 3, 5, 7, 9, ... 21:39
(infinite)
moritz_ currently trying to test and implement it... 21:46
the previous signature was (@lhs, Code $generator) 21:47
now I added (@lhs, Code $generator, $limit?)
$ ./perl6 -e '1, 2 ... *+2, 8' 21:48
No applicable candidates found to dispatch to for 'infix:...'
dalek kudo: c584dc6 | moritz++ | src/setting/Operators.pm:
remove some duplicate code in infix:<...>
kudo: 0220cc2 | moritz++ | src/setting/Operators.pm:
implement infix:<eqv>(Rat, Rat)
moritz_ so, it builds a list of the RHS too, I assume
so this is going to be ugly 21:49
pugs_svn r28373 | moritz++ | [t/spec] initial tests for series operator with limit 21:50
TimToady I find the 2,4,6,7 semantics to be surprising
I was thinking of the number as a pure limit, thrown away 21:51
moritz_ bs in, bs out ;-)
the other logical thing to do would be to return 2, 4, 6, 8 21:52
TimToady I think it's 2,4,6
moritz_ ie take the first produced value for which the comparison has changed
then our simple scheme won't work 21:53
ie the "compare $first with $last, and keep going until $latest cmp $last is different"
moritz_ we'd have to special-case inclusion of $latest if $latest cmp $last == 0 21:55
fine by me if specced
TimToady note the sample code in the spec essentially does that
moritz_ but means that 1, 1 ... $complicated_closure, 1 might not be consistent
moritz_ looks at the spec again 21:58
TimToady it always quits on $new === $old as well as on equality
moritz_ what are !after and !before?
TimToady *inequality with endpoint
!after is before or eqv
in most number systems :) 21:59
moritz_ so it's $new cmp $old <= 0?
TimToady depends on the direction
we could, I suppose write 1,2 ... $closure => $limit, 10, 11 etc. 22:01
the pair kinda looks like "going to the limit"
moritz_ S03 has the example 'z' ... 'a' # z y x ... a 22:02
which multi should handle that? 22:03
TimToady ... is always two lists
moritz_ ok
TimToady or more, since it's list associative
TimToady so more like X or Z 22:04
moritz_ so it doesn't really do "intelligent" multi dispatch, it just unpacks its arugment and tries to be smart with it 22:04
TimToady yes
but maybe we should have a way of combining the closure and the limit into a single argument, such as with pair notation 22:05
moritz_ it would emphasize that the end point is not always part of the result list
TimToady so it's clear the $limit isn't part of the next sequence unless the generator generates it
but I was mostly assuming that people wouldn't write limits that don't match exactly, in which case maybe the comma reads better 22:07
TimToady or we find some way of hacking: 1,2,3 ... *+1 <= 10, etc. 22:08
moritz_ 1,2,3 ... *+1 also * <= 10 22:09
TimToady glares suspiciously at a round hole and a square peg 22:09
moritz_ well... not really
pugs_svn r28374 | moritz++ | [t/spec] more series tests straight from the spec. 22:10
r28374 |
r28374 | Also correct one test as clarified by TimToady++ on IRC
moritz_ it's still not quite clear to me how dispatch to ... works 22:12
it has to receive a raw capture and unpack that
TimToady or parcel
moritz_ but if it does, how can it know which parts are left of the first ..., and which parts are right of it? 22:13
japhb I need a linguist's brain: What is the term for a type of test that is exploratory? The little scripts you write when you just want to see if something is feasible, and generally how you would do it, before you even start on the real prototype? 'Proof of concept' close, but I think of that as something used to prove some entire project is doable. I'm talking about some little piece of it. Like "How do I do async DNS lookups on this pl
atform" when you're really writing a client app for some protocol. So far we in #parrot have come up with 'throwaway', 'scribble', and 'doodle'. Anything better?
TimToady one capture for each arg
moritz_ or is that handled by multidimensionality, which rakudo doesn't handle yet?
ok
TimToady $cap ... $cap ... $cap
well, a slurpy of captures, maybe we could force that for now 22:14
moritz_ so nothing I can implement in Rakudo today. Sigh
TimToady how does it do Z?
rakudo: say 1,2,3 Z 4,5,6
p6eval rakudo 0eaf62: OUTPUT«sh: ../p/bin/perl6: No such file or directory␤»
moritz_ probably wrong :)
rakudo: say 1 22:15
p6eval rakudo 0eaf62: OUTPUT«sh: ../p/bin/perl6: No such file or directory␤»
TimToady ... is the same precedence as Z
japhb Any ideas? TimToady, anything?
TimToady sec, brain still on ...
japhb ah 22:15
TimToady probes 22:16
japhb oooh
I like that one. 22:17
TimToady depends on whether you're the prober or the probee
japhb heh
And your particular predilections as well, I'd assume ...
Anyway, I think that one will do nicely. Thanks, TimToady++ 22:18
moritz_ oh, it seems that infix:<Z> works pretty well in Rakudo, but it's a functionality not available from Perl6, only from PIR
and I'm not going to write the series operator in PIR. That's way too painful :)
rakudo: say 3 22:19
p6eval rakudo 0eaf62: OUTPUT«3␤»
TimToady I guess rakudo needs parcels...
moritz_ aye 22:20
TimToady or at least some way of turning an argument list into a scalar iterator 22:21
sjohnson trusty $i variable
TimToady rakudo: say i
p6eval rakudo 0eaf62: OUTPUT«Could not find non-existent sub i␤»
moritz_ well, I hope that jnthn++'s grant proposal is going to be accepted
TimToady rakudo: constant i = 1i; say i
p6eval rakudo 0eaf62: OUTPUT«0+1i␤»
moritz_ we wants to redo signatures in Rakudo 22:22
(sorely needed)
diakopter std: selfsame 22:23
p6eval std 28370: OUTPUT«Undeclared routine:␤ selfsame used at line 1␤ok 00:01 95m␤»
diakopter std: nextsame
p6eval std 28370: OUTPUT«ok 00:01 95m␤»
diakopter std: samename
moritz_ drifts off to bed
p6eval std 28370: OUTPUT«Undeclared routine:␤ samename used at line 1␤ok 00:02 95m␤»
ruoso boa noite 22:36
jrtayloriv Are each of the alternatives in this rule tested as if they have written before them? --> pastebin.ca/raw/1575841 ... that is, does :sigspace replacing whitespace with '<.ws>' immediately after the '|'? 22:40
s/they have/they have <.ws>/ 22:41
So, for example, if I didn't want to allow a <list> with whitespace before it to match, would I have to do '|<list>' instead of '| <list>'? 22:42
TimToady that looks like it should be a token to me 22:44
and let the rule that calls it eat the spaces
crythias perl6: say 3 22:47
p6eval elf 28374, pugs, rakudo 0eaf62: OUTPUT«3␤»
jrtayloriv TimToady, OK. So you are saying that if I wrote 's_expr' as a token which was called from 'rule TOP', then all of the whitespace that came before the <s_expr> would be eaten by TOP, so I wouldn't have to worry about them, correct?
TimToady jrtayloriv: right, basically things tend to naturally fall into patterns that want to match ws and those that don't 23:12
though often a "token" will call a subrule that matches whitespace internally 23:13
so parentheses will typically be a token, but call a subrule that matches whitespace around a subexpression.
though of course Lisp has its own rules 23:14
buu * JOB DESCRIPTION: 23:24
jrtayloriv TimToady, Thank you.
buu Whups. MT