»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....kup_tablet 00:20
lichtkind masak: <<>> no longer interpolates var or just rakudobug? 00:26
masak sorry found it 00:28
its rakudobug
jnthn: is it known?
masak lichtkind: could you use p6eval's 'rakudo:' target to show what you consider to be a bug, please? 00:56
lichtkind yes
lichtkind rakudo: my $b =1; my %h = 1..6; say %h<<$b>>; 00:57
p6eval rakudo : OUTPUT«Any()␤»
lichtkind should be 2
masak indeed. 00:57
not sure that's ever worked. 00:58
alpha: my $b = 1; my %h = 1..6; say %h<<$b>>;
p6eval alpha : OUTPUT«(timeout)»
lichtkind me either just checking here before writing it down into the tablets
masak do the tablets only contain working Rakudo features?
lichtkind no
but i try to nail it down 00:59
masak that's good.
masak kudos. lichtkind++ 00:59
lichtkind to get more juice out of it then synopses
masak yes, they synopses are a bit dry sometimes. 00:59
they're meant to be. 01:00
lichtkind of course, but my focus are more perl 6 starters
that know some perl 5
or ar least have some fundamental understanding of computer languages 01:01
masak *nod*
lichtkind curretnly opened a new tablets with basics all the literals quoting comments
it getting recently into some decent shape even only 35% content is there 01:02
lichtkind thats curretnly the main advantage over syntopses: you could go just to index and search a thing by name and jump into spot where it is explained 01:03
enough PR 01:04
masak :)
colomon rakudo: my $b =1; my %h = 1..6; say %h{$b}; 01:13
p6eval rakudo : OUTPUT«2␤»
lichtkind colomon: yes but 01:17
rakudo: my $b = 2; say <<$b>>; 01:18
p6eval rakudo : OUTPUT«$b␤»
lichtkind thats should be definetivly 2
colomon you're looking for variable interpolation inside << >> ?
lichtkind yes
colomon Is it just a fancy double quote?
rakudo: my $b =1; my %h = 1..6; say qq<$b>; 01:19
p6eval rakudo : OUTPUT«1␤»
flussence <<>> is the same as p5 qw(), isn't it?
colomon rakudo: my $b =1; my %h = 1..6; say qq<<$b>>;
p6eval rakudo : OUTPUT«1␤»
colomon hmmm
lichtkind colomon: its bit more than the since qq doesnt work like qw// 01:20
<<>> is like qw with the abilities of qq
colomon I have to admit I'm not sure what qw does. 01:21
lichtkind colomon: almost like in P5 @words = qw/ a beautiful butterfly went over the fence/; 01:51
colomon quote words! right.
lichtkind colomon: just check the section in tablet 2 thats written in few minutes :)
colomon so << >> constructs a list of words, but with interpolation?
lichtkind bingo
colomon is the splitting into words before or after interpolation? 01:53
"The implicit split is done after interpolation"
rakudo: my $b =1; my %h = 1..6; say qq<<3>>; 01:54
p6eval rakudo : OUTPUT«3␤»
colomon rakudo: my $b =1; my %h = 1..6; say %h<<3>>;
p6eval rakudo : OUTPUT«4␤»
colomon hmmm... LHF?
lichtkind no thats correct list in hash context 3 => 4 01:55
colomon I mean <<$b>> might be LHF. 01:56
Obviously the basic structure is in the grammar, now it just needs to do the right thing.
lichtkind good night 03:00
colomon can't figure out where << >> is handled in Grammar.pm 03:31
colomon ah, found circumfix:sym<« »> 03:34
still no idea how the texas equivalent works. 03:35
lue ohai world o/ 03:37
rakudo: my @a = 1, 2, 4 ... *; say @a[3]; 03:39
p6eval rakudo : OUTPUT«(timeout)»
colomon rakudo: my @a := 1, 2, 4 ... *; say @a[3]; 03:49
p6eval rakudo : OUTPUT«8␤»
colomon well, I found the grammar for « », but now I can't find the action for it. :\
lue rakudo: say (2/1) ~~ Int; # bug? 03:51
p6eval rakudo : OUTPUT«0␤»
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ics_tablet 03:52
lue rakudo: my $a = 2/1; say $a ~~ Int; 03:54
p6eval rakudo : OUTPUT«0␤»
TimToady notabug 03:57
rakudo: say (2/1) ~~ Rat
p6eval rakudo : OUTPUT«1␤»
TimToady "Once a rat, always a rat." :)
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ics_tablet
colomon right, 2 / 1 is a Rat. 03:58
lue Although, the fact that 2/1 !~~ Int when 2/1 = 1 makes no sense to me. (I know it isn't a Int, but the result of the division is.) 04:00
TimToady no, 2 div 1 is an int 04:02
rakudo: say (2 div 1) ~~ Int
p6eval rakudo : OUTPUT«1␤»
lue
.oO(The subtle nuances of Perl 6)
04:03
lichtkind TimToady: are you okay with the general order www.perlfoundation.org/perl6/index...._6_tablets ?
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ics_tablet
lichtkind allright maybe later .. cheers 04:08
sorear good * #perl6 04:23
sorear TimToady: ping 04:55
dalek ecza: 1443dcb | sorear++ | lib/NieczaCLR.cs:
Several more steps towards CLR interop
05:31
ecza: 90660e5 | sorear++ | src/Metamodel.pm:
Include class name in sub debug names
ecza: 08f0979 | sorear++ | lib/ (2 files):
[clr] Start on an argument mapper
am0c rakudo: ( [ 1 .. 10 ] 􏿽xBB*􏿽xBB 2 ).perl.say 05:45
p6eval rakudo : OUTPUT«===SORRY!===␤Confused at line 22, near "( [ 1 .. 1"␤»
sorear .u � 05:47
phenny U+FFFD REPLACEMENT CHARACTER (�)
sorear am0c: ^^^ not valid syntax 05:48
am0c oops
I didn't entered that chracter though :( 05:49
rakudo: [ 1 .. 2 ] 􏿽xBB*􏿽xBB 2 05:50
p6eval rakudo : OUTPUT«===SORRY!===␤Confused at line 22, near "[ 1 .. 2 ]"␤»
sorear your IRC client is incorrectly configured and cannot send non-ASCII characters to the channel 05:52
rakudo: ( [ 1 .. 10 ] «*» 2 ).perl.say
p6eval rakudo : OUTPUT«[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]␤»
sorear What did that look like?
am0c I see 05:55
rakudo: ( [ 1 .. 10 ] >>*>> 2 ).perl.say
p6eval rakudo : OUTPUT«[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]␤»
sorear am0c: what did the characters on either side of the asterisk look like to you? 05:56
am0c yes, and I tried to reconfigure correctly now
rakudo: ( [ 1 .. 10 ] »*» 2 ).perl.say 05:57
p6eval rakudo : OUTPUT«[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]␤»
am0c heh
dalek ecza: 4d023c2 | sorear++ | / (3 files):
Run iter_hasflat off trampoline
06:29
sorear 153 ns/loop Perl 5, 351 ns/loop now 06:30
I'm cheating a tiny bit though, using rwtrans parameters in the loop
clkao jnthn: i heard that you are coming to taipei! 06:37
diakopter clkao: what's in taipei? 06:42
hcchien osdc.tw 2011
diakopter hcchien: thanks 06:44
hcchien diakopter: you are welcome. # to come to Taipei too. :p 06:45
diakopter curious about flight costs 06:48
USD1100 06:49
sorear ow 06:50
am0c > "1; 2; 3".split( m:s/<[:,]>/ ).perl.say 06:52
Method 'match' not found for invocant of class ''
er.. what's wrong with this code please?
diakopter wow. SFO direct to Beijing
sorear am0c: you're using m 06:53
m means 'match NOW'
you want to pass a regex object, so use rx:s
am0c ah I see
sorear or just use /<[:,]>/ 06:54
:s has no effect on that regex
am0c rakudo: "1; 2; 3".split( rx:s/<[:,]>/ ).perl.say
p6eval rakudo : OUTPUT«("1; 2; 3")␤»
am0c rakudo: "1; 2; 3".split( /<[:,]>/ ).perl.say
p6eval rakudo : OUTPUT«("1; 2; 3")␤»
diakopter thinks a ; got mistyped as : 06:55
am0c oops;
dalek ecza: 9f9bc13 | sorear++ | v6/tryfile:
[v6] Rearrange tests in getsig on moritz++ 's suggestion
am0c rakudo: "1; 2; 3".split( /<[;,]> <.ws>/ ).perl.say 06:57
p6eval rakudo : OUTPUT«("1", "2", "3")␤»
am0c wow.. 06:58
sorear wow..? 07:00
am0c I just liked that result :D
sorear oh, you'll like this one better
rakudo: "1; 2; 3".comb(/\d+/).perl.say
p6eval rakudo : OUTPUT«("1", "2", "3")␤»
am0c wow!? 07:01
that's cool
sorear comb is dual to split
you pass a regex for the fields, instead of for the separators
which is often easier
am0c that's really novel approach 07:03
is there any easiest way to ceiling a *Num* into specific digit number? for example: 125 to 100 when for 3 digits. 07:17
it seems there is no builting ceiling function for Num for this case. 07:18
moritz_ divide by 10**$number, round, multiply by 10**$number 07:19
sorear that's not what ceiling does, am0c 07:25
rakudo: say ceil(1.25) 07:26
p6eval rakudo : OUTPUT«Could not find sub &ceil␤ in main program body at line 22:/tmp/6UMZocpCKn␤»
am0c I see I thought wrong.
sorear rakudo: say ceiling(1.25)
p6eval rakudo : OUTPUT«2␤»
sorear interesting, S32-num specs round($num, :$scale) but not for ceiling, floor
am0c sub where ($n) { $n.infix:</>(10000).floor.infix:<*>(10000) } 07:27
where(12345).say;
Method 'infix:</>' not found for invocant of class 'Int'
sorear . . . 07:28
moritz_ that's because &infix:</> is a sub, not a method
why don't you just use / ?
sorear what possessed you to write $n / 10000 in such a weird way
am0c ah.. 07:29
moritz_ rakudo: sub w($n) { ($n / 1000).floor * 1000 }; say w(12345);
p6eval rakudo : OUTPUT«12000␤»
am0c sorear: calling method connectively possessed me T__T 07:31
sorear ah. smalltalk programmer's disease. :p 07:33
am0c heh it's shameful to ask this sort of question T__T but here is so kind that I affected 07:35
that's intesting disease name. :p
sorear 8% of all method calls generated by STD are to Cursor.pos 08:17
from $¢.pos in token ws and token nibbler, mostly 08:18
moritz_ for the posessed, there is a way 08:31
rakudo: say 10.&infix:</>(2)
p6eval rakudo : OUTPUT«5␤»
sorear a further 8.6% come from $pair.key and $pair.value calls in Hash.LISTSTORE 08:36
dalek ecza: 92a451f | sorear++ | v6/tryfile:
A bit of ugly inlining for key/value
08:59
ecza: 84ef188 | sorear++ | v6/tryfile:
[v6] undo a wrong "bug fix"
ecza: 23f16c4 | sorear++ | v6/tryfile:
[v6] a little more refactoring on STD.ws
dalek ecza: e2a9334 | sorear++ | lib/Kernel.cs:
Use a few unsafe optimizations in the binder
09:27
sorear I have managed to shave almost HALF A SECOND off the STD benchmark today
maybe it just needs fresh eyes *hinthinthint*
sorear out 09:28
muixirt rips out sorear's eyes and waits until science finds a way to grow fresh eyes in a petri dish 10:29
hope that helps :-)
muixirt ubuntu wants top restart... 10:36
jnthn clkao: Looking like it. :) \o/ 11:54
jnthn finally got a decent night's sleep. 11:55
mikehh anyone here know much about keyboard settings - ie which gnome config files are used 11:57
I have somehow disabled my numeric keypad and would like to get it working again 11:58
tadzik ww?
mikehh sorry wrong channel 11:59
takadonet morning all 12:51
tadzik morning 12:55
moritz_ good morning 12:58
tadzik: how is the advent post coming along?
tadzik moritz_: it's not, yet 13:04
I'll probably be writing it on an upcoming lecture
takadonet tadzik: are you today's post?
tadzik takadonet: no, I'm just the author 13:05
*SCNR*
colomon jnthn: ping? 13:47
Teratogen listen, we need to get Perl 6, Version 1, out the door 14:02
Teratogen a definitive version, ok? 14:02
of course nobody is going to want to use Version 1
so we will have to come out with a Version 2 pretty darned quick 14:03
moritz_ Teratogen: your patches are certainly welcome
Teratogen I thought the Perl 6 compiler was going to be one big regex 14:03
and of course, Perl 6 should be able to be written entirely in Perl 6 14:04
moritz_ Teratogen: your patches are certainly welcome
or phrased differently, "put up or shut up, pleease" 14:05
Teratogen look, we want Perl 6 now, not ten years from now! 14:06
huf is this some rite of passage, trolling p6? 14:07
tadzik moritz_?
huf hugme: hug Teratogen
hugme hugs Teratogen
moritz_ tadzik: he (or she) has said the same thing several time, and doesn't seem to react to any kind of reasoning 14:08
maybe it's a bot.
tadzik well, that's not what I meant :) But anyway, could I drop today's post on your, or sb else's shoulders?
huf he's active on #perl so probably not a bot
moritz_ tadzik: sure thing 14:09
huf: probably :-)
huf moritz_: well, how can we be sure of anything, really? 14:10
maybe i'm a bot!
tadzik Even if'd be able to write it today, I'm afraid it won't be good enough for advent calendar; I'd like to give it a bit more love
moritz_: really? I'm terribly ashamed of the situation, but I'm really lacking time today 14:11
moritz_ tadzik: masak and I have a draft in the repo that was meant for tomorrow 14:12
tadzik so I'd go for tomorrow? 14:13
moritz_ aye
tadzik that's ok for me, again, if 16:00-17:00 is ok for a post 14:14
my exam is on 15:00, and all the effort goes here 14:15
moritz_ perl6advent.wordpress.com/2010/12/0...nt-things/ 14:19
dalek : 1df8466 | moritz++ | misc/perl6advent-2010/schedule:
[advent] switch slots
14:21
takadonet www.reddit.com/r/programming/commen..._names_of/ 14:24
flussence That %thing.push array thing is new to me, I suppose a destructive version would just be %hash = %original.invert? 14:25
moritz_ correct 14:26
[Coke] Has rakudo had a problem in the past few months where classes began to complain about not having set_string_native ? 14:30
thundergnat Anyone know of a good example of implementing context sensitive return values from a subroutine? The spec is kind of vauge about it. 14:34
takadonet thundergnat: still working on Algorithm::Diff? 14:35
thundergnat Specifically I'm trying to return diffeent values of false depending on list or item context
takadonet: not not recently
takadonet thundergnat: ok just wondering 14:36
thundergnat takadonet: I don't know that I want to go through the aggravation of implementing Get since it does heavy symbol table mangling for little return
That' really the only object method unimplemented. 14:37
takadonet ok 14:38
gfldex rakudo3: class A { multi method foo(Str :$lol){} }; say A.^methods(:local)[0].signature.WHAT; 14:39
rakudo: class A { multi method foo(Str :$lol){} }; say A.^methods(:local)[0].signature.WHAT; 14:40
p6eval rakudo : OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub'␤ in main program body at line 1␤»
gfldex :(
thundergnat I found an example on stackoverflow: stackoverflow.com/questions/3962901...-in-perl-6 but it doesn't like False/Undef values
gfldex rakudo: class A { method foo(Str :$lol){} }; say A.^methods(:local)[0].signature.WHAT;
p6eval rakudo : OUTPUT«Signature()␤»
thundergnat The spec says to return an object that reponds appropriately to the calling context, but leaves implementation as an excercise for the reader. :- 14:43
And while that is fine, it would be nice to get a hint about how to actually do it... 14:44
colomon [Coke]: I seem to recall bumping into that sometime, but don't remember the exact circumstances at the moment. 14:45
thundergnat: I agree. I suspect the answer is to declare a class which has the appropriate .list, .Bool, .Str, etc methods. But I've never tried doing it in this way, and I'm not 100% sure what is required. Seems like a good thing to make sure we have a working example for. 14:48
afk # morning walk
gfldex rakudo: class A { method foo(Str :$lol){} }; for A.^methods(:local)[0].signature.params { say .type, ' ', .name; }; 14:49
p6eval rakudo : OUTPUT«Mu() ␤Str() $lol␤Mu() %_␤»
gfldex is that anonymous Mu intentional?
flussence self? 14:51
nah, that can't be right
moritz_ a long known bug, if I remember correctly 14:55
gfldex sadly i have to leave in a few or i would ask masak who knows every rakudo bug by it's first name :-> 15:00
masak oh hai, #perl6 15:05
moritz_ oh hai masak 15:06
masak: I've published our advent post, since tadzik had troubles getting his finished 15:07
masak moritz_: hoaky. is tadzik on for tomorrow? 15:07
moritz_ masak: hopefully 15:08
tadzik masak: it's probably donna be a late tomorrow 15:10
masak tadzik: hokay.
flussence rakudo: say 'abcdef' ~~ / 'abcd' .**-2 'b' / 15:25
p6eval rakudo : OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 22, near "-2 'b' /"␤»
flussence hmm, S05 says that should work...
moritz_ what does **-2 mean? 15:26
flussence ". ** -2" according to this means back up 2 chars
line 1030ish
I wouldn't be surprised if rakudo doesn't implement that yet, it looks crazy :) 15:27
moritz_ oh WTF, it sure does 15:28
flussence perl6: say 'abcdef' ~~ / 'abcd' . ** -2 'b' / # I wonder...
p6eval rakudo : OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 22, near " -2 'b' / "␤»
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HANDLE>' trapped by operat…
flussence ouch
moritz_ and since it's not look-around-y, it'll generate weird match objects
thundergnat std: class A { class B {}; A::B.new; } 15:38
p6eval std a194beb: OUTPUT«ok 00:01 118m␤»
thundergnat rakudo: class A { class B {}; A::B.new; }
p6eval rakudo : OUTPUT«Can not find sub A::B␤ in main program body at line 1␤»
jnthn colomon: pong 15:39
(only sorta here though...)
thundergnat is that legal/ rational calling convention? or NYI?
masak rakudo: say (900..1000).rand
p6eval rakudo : OUTPUT«67.4041728675932␤»
masak submits rakudobug
jnthn masak: which for? 15:40
The A::B lookup?
masak jnthn: no, the Range.rand one
jnthn masak: Is it really wrong?
masak jnthn: the A::B lookup is old :)
jnthn: oh, I thought that was obvious... :/
jnthn: twitter.com/VienosNotes/status/12388189830389760 15:41
jnthn masak: I mean, it numifies the range, which is the number of elements.
masak: Is range spec'd as implementing rand specially?
masak jnthn: I'll check.
jnthn: shouldn't it? I mean, really?
jnthn I agree it'd be cute if it worked, I'd also just like to know if it's spec. :)
masak is that even a point of discussion?
who'd be happier if it numified instead?
flussence rakudo: say rand(900..1000) #?
p6eval rakudo : OUTPUT«===SORRY!===␤Unsupported use of rand(N); in Perl 6 please use N.rand or (1..N).pick at line 22, near "(900..1000"␤»
moritz_ would just spec it to return a value between the end points 15:42
jnthn moritz_: That'd make sense.
masak let's do that, then.
moritz_ but only for numeric ranges
jnthn Just curious what if anything the spec says.
masak moritz_: yes.
TimToady that doesn't make sense to me
moritz_ jnthn: I can't remember that it says anything about it
jnthn hehe :)
masak un-submits rakudobug
jnthn moritz_: Me either. 15:43
thundergnat so A::B is old.., is it now illegal?
moritz_ otoh note that @array.rand can't do anything sensible but numifying first
flussence having Range.rand work that way looks nice, but sometimes you really want the array index.
thundergnat or meaningless at least?
masak maybe Range.rand should warn or die. 15:44
flussence or have a flag for "give me the value of whatever index you pick, I don't care!"
moritz_ flussence: that's what .pick is for
masak .rand would select something on the continuous interval instead. 15:45
tadzik > Range.rand
Type objects are abstract and have no attributes, but you tried to access $!excludes_min
hm?
masak TimToady: I'd be interested to hear why it doesn't make sense for you.
tadzik: it's a figure of speech :)
moritz_ tadzik: it numifies, and for numifying it accesses an attribute
tadzik :)
masak tadzik: I meant on an instantiated Range object.
TimToady it doesn't make sense because I haven't had my coffee yet 15:46
tadzik maybe it should be an alias for .pick 15:46
moritz_ can wait to hear TimToady's post-coffee opinion :-)
tadzik: that would be very confusing 15:47
TimToady I do have a question though; how would you distinguish (1..2).rand from (1..^2).rand?
moritz_ tadzik: .pick is something discrete, .rand something continuous
TimToady: one can return 2, the other not
just like rand() in perl 5 can return 0, but not 1
TimToady how would you write a function that can return 1? 15:48
what is its probability?
moritz_ I wouldn't
masak me neither.
moritz_ since its probability is asymtotically 0, I'd just never return the bounds 15:49
and it'd be correct even if .rand were allowed to return them
masak I'd return the lower bound, but only with epsilon probability like all the other values.
masak and I wouldn't care about whether the endpoints were included or not. 15:49
TimToady epsilon is a funny thing on a computer
moritz_ if you have a fixed representation, you can calculate your epsilon 15:50
TimToady another consideration is that if they say (1..2).rand they may very well mean (1..^2).rand 15:52
human nature being fallible and all 15:53
moritz_ just always exclude the end points in .rand, and everbody is happy 15:55
TimToady thing is, you can define ($a ..^ $b).rand as ($b-$a).rand + $a, but you can't do the same with .. 15:56
you can't exclude the lower endpoint generally, or the randomicity wonks will come and shoot you
moritz_ hm 15:57
TimToady .. has to know epsilong, while ..^ doesn't
*lon
dukeleto Shortest Math Joke Ever: Let epsilon be a small negative number ... 16:00
TimToady I suppose ^.. doesn't need espilon either, but ^..^ does again
interestingly, if we define Range.rand, then 42.rand is the same as (^42).rand 16:02
masak I still vote for ignoring the endpoint information. 16:06
makes it much easier, and the user will hardly notice anyway.
colomon jnthn:
make PAST::Op.new( :inline( $<quote_EXPR>.ast.value ),
:pasttype('inline'),
:node($/) );
masak this confuses me. what does he mean? twitter.com/VienosNotes/status/12537502397104129
does he want an integer from Range.rand?
colomon jnthn: Does that mean the real code is in NQP? 16:07
TimToady it would be more conservative to die on .. or ^..^ with an apropriate message, and reserve the ability to do them "right" later
mathw masak: I would read it to say that he wants Range.rand to return a random number which fits within the range 16:08
I don't think that necessarily means it's an integer...
maybe
it's a bit unclear
masak mathw: ok.
colomon rakudo: say 4.Int.rand
p6eval rakudo : OUTPUT«0.527294043813413␤»
masak oh!
yes, that's what he means.
and that's what I meant to begin with.
and that's what we've been talking about... :) 16:09
TimToady well, one way to implement .. even if we don't know the epsilon of the underlying generator is to add a delta that is larger than any likely epsilon, then repeat if that generates something out of range 16:11
likewise, ^..^ can be implement by repeating ..^ if we happen to get the lower bound 16:12
colomon question for the TDD fanatics in the audience: how do you test if (N .. M).rand returns M properly? 16:13
TimToady ^.. is implemented in terms of ..^ by subtraction
colomon: make the underlying RNG pluggable 16:14
flussence colomon: LD_PRELOAD a library that overrides libc's rand to always return maximum
(even if it's cheating to do so)
colomon Doesn' 16:15
Doesn't seem like either of those actually tests the matter at hand.
I mean, it's turtles all the way down.
TimToady PRNGs generally return integers, and if you know the size of the integers, you know the epsilon 16:16
if you can cut the size of the integers, you can magnify the epsilon
colomon Huh. So that implies the real problem is that not all expressible Nums between 0 and 1 are equally likely?
(from plain rand, I mean.) 16:17
jnthn colomon: Hmm, where is that from? (which action method)
colomon jnthn: quote:sym<Q:PIR>
jnthn colomon: Is it the Q:PIR one?
Ah
moritz_ colomon: depending on the used data types, not all Num values are possible
flussence usually "good enough" is good enough for most users of rand() :)
moritz_ and all others use their own library anyway 16:18
jnthn colomon: quote_EXPR itself is inherited from, iirc, HLL::Grammar and HLL::Actions.
colomon: Which is in the nqp-rx repo.
colomon jnthn: I'm trying to figure how qq works. So that I can try to make qqw work
TimToady all PRNGs I'm aware of make all 0 ..^ $n integers equally likely, or at least try to
moritz_ integers yes 16:19
jnthn colomon: See quote_EXPR and all the quote_[mod|...other stuff...] bits in HLL::Grammar and HLL::Actions.
colomon: quote_EXPR takes argument
*arguments
colomon: Which indicate what kind of parsing it does.
moritz_ but the floats you get by $rand/$rand_max don't map well to all floats in the 0..^1 range
jnthn colomon: And how it treats things. 16:19
colomon TimToady: what moritz_ said. 16:20
jnthn: thanks.
jnthn++
TimToady but you will get $n different floats, if you have more float precision than integer 16:21
and each of those floats will have equal probability
they're just scattered around their real values by fp distortion
moritz_ right
colomon my point here is that if you choose an arbitrary Num between 0 and 1, odds are that it can NEVER be generated by $rand / $rand_max. 16:23
masak I'm starting to wonder whether it's worth it. :(
maybe just throw a very nice error message that explains to the user how to do the appropriate subtractions and scalings by hand.
TimToady at which point they'll just monkey patch Range :)
moritz_ would rather have a Range.rand that might mis-treat the ends points than no sensible Range.rand at all 16:24
TimToady differently from the next guy
colomon huh. actually, can we get at the internal RNG that generates Ints? If we're accepting $rand / $rand_max as good enough, it's trivial to make it include the top of the range as well.
masak as long as we put it in the spec/manual, mistreatment of the endpoint is fair game IMO
TimToady colomon: that's what I think 16:25
moritz_ colomon: in the end I'd like the RNG exposed to the user anyway, with the option of creating multiple instances
colomon +1 16:25
TimToady and to use the repick methods, you really only need to have order of magnitude on $n so you don't pick a stupid delta
moritz_ it needs to exist anyway in some code somewhere :-)
TimToady well, any given power-of-two rng can be sized probabilistically even if there's no API to tell you its max 16:27
every time you generate one, there's 50% chance it'll be in its upper range 16:28
colomon huh. so really, Range.roll should be the fundamental RNG for p6, no?
TimToady or Int.roll
moritz_ colomon: something like that
colomon (I mean, that's the functionality we want -- return an Int between 0 and N)
moritz_ right 16:29
TimToady sounds fair
moritz_ the API itself will involve state that the PRNG has to store between two calls
TimToady the PRNG is really Int.roll(*) :)
colomon TimToady: that would involve a new spec for Int.roll, no? 16:30
rakudo: say 10.roll
p6eval rakudo : OUTPUT«10␤»
colomon rakudo: say 10.roll
p6eval rakudo : OUTPUT«10␤»
colomon rakudo: say 10.roll
p6eval rakudo : OUTPUT«10␤»
colomon ;)
moritz_ rakudo: say ~10.roll(20)
p6eval rakudo : OUTPUT«10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10␤»
moritz_ rakudo: say ~^10.roll(20)
p6eval rakudo : OUTPUT«No applicable candidates found to dispatch to for 'prefix:<~^>'. Available candidates are:␤:(Buf $a)␤␤ in main program body at line 22:/tmp/x94f1H0lQF␤» 16:31
moritz_ rakudo: say ~(^10).roll(20)
p6eval rakudo : OUTPUT«9 1 8 3 9 6 5 4 8 0 2 1 0 8 9 3 5 8 8 1␤»
TimToady my point was not about Int so much as about .roll(*) supplying the requested state 16:34
I'm of two minds about whether Int.roll should assume (^Int).role 16:36
moritz_ it is a nice interface
TimToady and like Int.rand
but an int might be a degenerate list
moritz_ you can enhance it with :seed($your_seed)
masak hcchien: I'm currently investigating travel options to go to Taipei in March as well. I'll happily give a talk at OSDC.tw too... if you're still looking for speakers. :) 16:47
gfldex: yes, the OUTPUT«Mu() ␤Str() $lol␤Mu() %_␤» is a "known bug". jnthn says it's built into the model and inherently unfixable (becuase there's no fundamental distinction between methods and subs) 16:52
jnthn masak: It should say the type of the class instead of Mu() for the first arg. 16:55
masak moritz_: Teratogen is decidedly not a bot, but she has a very limited repertoire. she seems like a kind of "eternal newbie" who ended up being a #perl6 regular without the corresponding increase in what it is we're doing here (getting Perl 6 out the door).
jnthn: oh right. yes, 'course.
jnthn masak: But it's correct that it appears in the signature.
masak but even that is known and reported.
jnthn Right
But the appearance of it in the signature isn't a bug at all. :)
masak I don't mind it appearing in the signature.
I mind the error messages being stupid.
jnthn I don't think it is. 16:56
masak a good error message *must* know the distinction between a sub and a method, otherwise it'll confuse the user.
jnthn That's only true if the user thinks of the invocant as more to the target method than just a magical first parameter.
masak the burden of knowing that a method is "just a funny subroutine" with an extra, hidden parameter, should not be put on the confused newbie. 16:57
rakudo: class A { method foo() {} }; A.new.foo("OH HAI")
p6eval rakudo : OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in 'A::foo' at line 22:/tmp/kEMy0JFPVR␤ in main program body at line 22:/tmp/kEMy0JFPVR␤»
masak "expected 1".
that's what I'm talking about.
the method *clearly* has no parameters!
I just wrote an empty set of parens. 16:58
jnthn :/
masak and yes, I do know the underlying model that causes this, and it still sucks.
jnthn Yes, but then people write: class A { method foo($foo:) {} }; A.new.foo("OH HAI")
masak right. 16:59
jnthn And get an error saying it expected 1 and got 0...when they clearly did write a parameter.
masak so maybe the invocant parameter should be mentioned explicitly?
"expected 0 (and an invocant)"
TimToady "got 0 (plus invocant)"
jnthn Dunno. Can sorta see the argument for doing something in the error, but "just subtract one from the number" is too simplistic.
masak aye. 17:00
jnthn The signature object does know that the first parameter is an invocant parameter.
TimToady: Yes, something like that.
masak then it's at least theoretically possible.
jnthn Yes. The patch wants to go in bind.c. ;)
masak I'll keep that in mind. :)
TimToady it would also be nice to remember the declarator so you can say "sub" or "method" or whatever
masak oh, indeed. 17:01
jnthn TimToady: We know the current routine, so we can just go look at its type.
So that info is already available too :)
I think backtraces already do that fwiw.
rakudo: class A { method m() { die "painfully" } }; sub foo { A.m }; foo(); 17:02
TimToady does the type always distinguish the declarator?
p6eval rakudo : OUTPUT«painfully␤ in 'A::m' at line 22:/tmp/7vk9DEgBzu␤ in 'foo' at line 22:/tmp/7vk9DEgBzu␤ in main program body at line 22:/tmp/7vk9DEgBzu␤»
jnthn Aww, it doesn't.
TimToady: method => Method, sub => Sub, submethod => SubMethod, a block has type Block...
TimToady some methods are regexes
jnthn TimToady: Which are of type Regex. :) 17:03
TimToady some regexes are tokens
jnthn std: Token
p6eval std a194beb: OUTPUT«===SORRY!===␤Undeclared name:␤ 'Token' used at line 1␤Check failed␤FAILED 00:01 117m␤»
jnthn aww :)
TimToady: yeah, but maybe we should fix the type hierarchy there so we set a good precedent.
TimToady: Different declarator => different type, just like different package declarator => different HOW.
jnthn We could separately stash away the declarator name used too but... 17:04
TimToady as long as you can reproduce the original declarator for the user, but it seems fragile
jnthn ...feels slightly overkill.
TimToady: ah, you really want to be able to do that? 17:05
TimToady the user wants it
jnthn So Routine gets a .declarator method/attribute that stores it? 17:05
Would we follow the pattern with other declarable thingies? 17:06
TimToady or regenerates it from the type accurately
jnthn Well, we can promise that for built-in types.
We can't when people start slanging and adding their own routine declarators. :)
TimToady I'll bet you can't distinguish "multi" from "multi sub" though :)
jnthn No, that's purely syntactic sugar. :) 17:07
I think a routine does know in Rakudo if it's a candidate in a multi.
Not sure that actually is needed by the new multi model, though. I'm not sure why it knows at the moment, tbh.
Other than just for the sake of being able to say so. 17:08
TimToady certainly the multi dispatcher can override error messages that would say "method" but are really exported
low-level invocation probably doesn't know whether it is being called on behalf of function dispatch or method dispatch though 17:10
jnthn Hmm...in theory yes. In practice I'm not quite sure how to make that works.
Ideally the multi dispatcher even appearing in the call stack would be optimized away in various cases. 17:11
(e.g. if we know at compile time where the dispatch goes, it probably just becomes a low-level invocation right off)
jnthn And even if the multi-dispatcher does end up getting written in Perl 6, I'd expect a lot of dispatches to never actually go through that and hit a dispatch cache in the first attempt to. 17:13
*too
(Various things work like that in 6model. If things publish a type cache, then .^typecheck never gets invoked. If they publish a method cache and the entry is found in there, .^find_method never gets invoked.) 17:14
(The nice thing being that even custom meta-objects written by the user can take the effort to publish such things and have a chance of performing as well as the built-in ones, rather than being unoptimizable second class citizerns.) 17:15
TimToady it's probably okay if exported methods are reported as methods 17:24
that'll probably help them find the definition in any case
colomon hmmm, timely: www.johndcook.com/blog/2010/12/06/h...eedfetcher 17:26
Actually, I should probably just buy the "Beautiful Testing" book. 17:27
sjohnson early morning perl hackers 17:30
masak good prevening, sjohnson. 17:31
sjohnson yo
colomon good midday nom time, sjohnson
sjohnson had to come in early today (9:30am) because I didn't use my conscience and put wd-40 on a stuck nut in my car.. and i broke it
doh! 17:32
hows perl6 today 17:41
TimToady lotsa stuck nuts :) 17:43
sjohnson heh 17:49
colomon: (before|after)?noon
sjohnson sprays wd-40 on p6specs 17:51
sorear good * #perl6 18:31
colomon \o 18:33
[particle] \* 18:39
masak nice! Ovid++ uses (and explains) closures in a recent blog post: blogs.perl.org/users/ovid/2010/12/p...dient.html 19:07
masak wonder if he was inspired by the Advent Calendar post from the other day? :) 19:07
also, I wonder if there is a more esthetic path through the color space other than the obvious one chosen, between #ff0000 and #00ff00 19:08
sorear hello masak! 19:12
masak hi sorear! 19:13
masak nom & 19:14
jnthn masak: Generally to do gradients it's better to work in a non-RGB color base. 19:39
masak: Such as HSL.
masak jnthn: right. that sounds like a fun little Perl 6 module to write at some point. 19:52
also, the green in #00ff00 is almost always much brighter than the red in #ff0000 on screens. 19:53
jnthn masak: Did something similar at $dayjob not long ago.
masak nice.
lichtkind is ^^^new? 20:00
i mean ^^
sorear ENOTENOUGHCONTEXT 20:00
lichtkind oh wait i found answer
sorear: i thought context was clear since yesterday was talked about here 20:01
sorear that was thousands of lines ago though
jnthn At least it pointed you in the right direction. :) 20:03
lichtkind jnthn: your too genorous :) 20:04
sorear so STD.dll, 2.1 MB, breaks down into 100kb tables (mainly Field and Method), 300k string heap (field names, etc), 60k user strings, 1550kb CIL
of the CIL, 130kb is in STD::.cctor 20:05
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet 20:08
thundergnat rakudo: my $d; class A {method x { $d }}; for () { sub } #checking to see if this still blows up 20:17
p6eval rakudo : ( no output )
thundergnat std: my $d; class A {method x { $d }}; for () { sub } 20:19
p6eval std a194beb: OUTPUT«===SORRY!===␤Malformed block at /tmp/HyBXIBtGyI line 1:␤------> class A {method x { $d }}; for () { sub ⏏}␤ expecting any of:␤ name␤ routine_def␤ trait␤Parse failed␤FAILED 00:01 121m␤»
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet 20:30
tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ics_tablet
lichtkind recommends paniq: www.paniq.cc/ 20:49
[Coke] wonders if there's anything useful to hack on for rakudo other than "try to swamp out the queue" 20:51
I haven't seen a lot of commits lately, so I suspect there aren't a lot of surprisingly fixed tickets.
masak as far as I know, the RT queue is full of fallen fruit. 20:52
jnthn So you're saying it's all jammed up?
;)
masak someone with tuits could easily close a whole bunch of those tickets with relatively little effort. 20:53
[Coke] jnthn: Ugh, that rots.
masak: ah, so you do expect tickets to have examples that magically work?
masak yes, sometimes. but I wasn't referring to that.
[Coke] will troll the queue after $DAYJOB
masak: ah, what then? 20:54
masak I was referrint to things with <10-line fixes in easy places in Rakudo.
[Coke] ah, that requires more than just mindless rote. ;) 20:55
masak yes, but not much more, that's my point. 21:00
lichtkind: interesting music. reminds me of an old Atari I have standing in my room.
lichtkind masak: he is still member of a demo crew 21:00
[Coke] I just did a git pull of parrot master, built it, then tried to build rakudo, which complained I didn't have a recent enough version of parrot installed. 21:03
(er, I installed parrot there in the right place, also) 21:04
[Coke] my git_describe says -614. rakudo wants -679 21:04
masak 614 < 679. so you need a newer one. 21:07
thundergnat BTW, I have been looking through the RT queue looking for tikets which might be closable
Here's a bunch with my comentary / observations: home.comcast.net/~thundergnat/perl6.htm 21:08
masak thundergnat: excellent. think you could add them to the individual tickets? 21:10
thundergnat: reading that, I'm also inclined to ping whoever hands out RT admin bits.
thundergnat I supose I could go through and edit them.
[Coke] masak: and since I just grabbed the latest version of master, where the <BLEEP> do I get the newer version from? the future? 21:11
masak: I used to have privs to hand out privs to the p6 bug queue. 21:12
masak [Coke]: ISTR people having problems similar to yours shortly after the latest R* release. I'll go check the backlog for hints. 21:13
flussence 679 just pulled fine for me... 21:14
[Coke] I am not using --gen-parrot. I'm using an existing git repo of parrot that I did a pull, rebuild, install on .
flussence are you pulling from a stale mirror, maybe? 21:15
[Coke] I'm pulling from github/parrot/parrot 21:16
flussence using the right branch? it happens... 21:17
masak [Coke]: I used to have Parrot externally like that. but when Parrot switched to git, I thought I might as well switch to the --gen-parrot veriant. 21:18
[Coke] rakudo is not the only parrot-related project I work on. 21:19
masak nod. 21:23
just saying I encountered some problems around that point myself.
thundergnat++ # all those comments on open tickets 21:32
dalek ecza: c953c81 | sorear++ | / (3 files):
Increase inline local space from 4 to 10 slots
21:33
masak std: say (7^^^^^^7).WHAT
p6eval std a194beb: OUTPUT«===SORRY!===␤Expecting a term, but found either infix ^^ or redundant prefix ^␤ (to suppress this message, please use space between ^ ^) at /tmp/bgCpVduLnj line 1:␤------> say (7^^^^⏏^^7).WHAT␤Parse failed␤FAILED 00:01 120m␤»
masak std: 7^^^^^^7
p6eval std a194beb: OUTPUT«===SORRY!===␤Expecting a term, but found either infix ^^ or redundant prefix ^␤ (to suppress this message, please use space between ^ ^) at /tmp/LvXk3hHw_O line 1:␤------> 7^^^^⏏^^7␤Parse failed␤FAILED 00:01 119m␤»
masak thundergnat: "Not imediately obvious perhaps, but not wrong." -- it fails in STD. as long as STD doesn't have a known bug here, it is wrong, and Rakudo shouldn't parse it either. 21:34
STD is the measure stick against which all the other parsers out there should be evaluated.
thundergnat Ok, perhaps my contension should be "STD has a bug" 21:35
PerlJam [Coke]: I've had that happen to me once. I thought at the time that it was because a previous build of parrot had left some of its configuration around. Did you do a "make realclean" prior to rebuild?
masak thundergnat: I understand and accept your reasons for thinking so. would be interesting to hear what TimToady thinks.
sorear thundergnat: why do you argue STD is wrong? 21:36
perl6: say ("foo";)
p6eval rakudo : OUTPUT«foo␤»
..pugs: OUTPUT«*** ␤ Unexpected ";)"␤ expecting term postfix, operator or ")"␤ at /tmp/Azwwzsk2Kb line 1, column 11␤»
sorear perl6: say ("foo";;)
p6eval rakudo : OUTPUT«===SORRY!===␤Method 'returns' not found for invocant of class 'Integer'␤»
..pugs: OUTPUT«*** ␤ Unexpected ";;)"␤ expecting term postfix, operator or ")"␤ at /tmp/YJGGpP6xfq line 1, column 11␤»
sorear hey masak, is that one known?
masak sorear: see comments at home.comcast.net/~thundergnat/perl6.htm
sorear: (about thundergnat's arguments) 21:37
sorear: no; first time I see it.
thundergnat std: say 0^^^^^5;
p6eval std a194beb: OUTPUT«===SORRY!===␤Expecting a term, but found either infix ^^ or redundant prefix ^␤ (to suppress this message, please use space between ^ ^) at /tmp/qa7FlLBQ11 line 1:␤------> say 0^^^^⏏^5;␤Parse failed␤FAILED 00:01 120m␤»
masak submits rakudobug
thundergnat rakudo: say 0^^^^^5;
p6eval rakudo : OUTPUT«01234␤»
thundergnat rakudo is correct IMO 21:38
masak sorear: are you arguing that Pugs is right here, or just that the second Rakudo evaluation is Wrong?
sorear masak: the second rakudo evaluation is a crash in Perl6::Actions; it is automatically wrong 21:39
that error message indicates PAST mishandling (.returns is one of the PAST::Node accessors)
thundergnat Or, at least if 0^^^^^5 is wrong then 0 ||||| 5 should arguably be also.
sorear pugs' behavior is also wrong
the inside of () parses as a list of <statement> now 21:40
masak sorear: ok.
sorear++
sorear but pugs specrot is a dime a dozen these days so I'm not making an issue 21:41
niecza currently ignores empty statements
(;;;;;;2;;;;;;;;;) returns 2
which is probably wrong
in particular, it causes {; a => 2 } to be a hash constructor, because the empty statement is ignored
masak thundergnat: I merged the two tickets at the end of your list. 21:42
thundergnat masak: ok, I edit my list 21:43
* I'll
masak I suspect pmichaud might have RT privs.
PerlJam thundergnat: STD used to behave as Rakudo currently does IIRC. And because it's surprising, that's why STD behaves as it does now.
masak [Coke]: maybe this'll help? irclog.perlgeek.de/perl6/2010-11-29#i_3039452 21:44
thundergnat Oh, 0^^^^5 definitely viloate the principle of least suprise, but why doesn't 0|||||5?
std: 0|||||5 21:45
p6eval std a194beb: OUTPUT«ok 00:01 119m␤»
sorear thundergnat: because prefix:<||> is defined
dalek ecza: c9ef750 | sorear++ | src/Niecza/Actions.pm:
Approximate lol parsing in postcircumfixes better
21:46
thundergnat rakudo: say (||5).WHAT 21:50
p6eval rakudo : OUTPUT«Capture()␤»
thundergnat rakudo: say (|5).WHAT 21:51
p6eval rakudo : OUTPUT«Capture()␤»
thundergnat sorear: where does prefix || come into it?
sorear thundergnat: the actual STD error check is 21:51
std: ~~3
p6eval std a194beb: OUTPUT«===SORRY!===␤Expecting a term, but found either infix ~~ or redundant prefix ~␤ (to suppress this message, please use space between ~ ~) at /tmp/lKU9fd6b6M line 1:␤------> ~~⏏3␤Parse failed␤FAILED 00:01 117m␤»
sorear std: ||3
p6eval std a194beb: OUTPUT«ok 00:01 118m␤»
sorear it doesn't make sense to die on ||3, because || is a prefix operator 21:52
~~ isn't a prefix operator
thundergnat I'm not saying it shoud die, but ||5 is a capture of a capture, 21:53
not a ||
thundergnat std: | |5 21:53
p6eval std a194beb: OUTPUT«ok 00:01 118m␤»
sorear thundergnat: || is a || what are you talking about 21:54
jnthn sorear: Rakudo probably doesn't yet implement ||
sorear: It probably doesn't even parse it yet.
sorear: It parses ||$foo as |(|($foo)) still. 21:55
(I think, anyway.)
[Coke] PerlJam: I /always/ do a make realclean, yes.
jnthn If anyone fancies adding a || parsing that warns it's NYI that'd be fine by me.
It'd reduce confusion.
sorear jnthn: thundergnat is confusing Rakudo with Perl 6 again
it really irritates me when people do that 21:56
jnthn *sigh*
[Coke] masak: uh, which part?
masak sorear: it would, you're the implementor of the "second implementation". you're Pepsi. 21:57
jnthn sorear: You could gently point that out rather than getting irritated... :)
thundergnat sorear: sorry. I'll try not to mix those up again.
masak [Coke]: from the anchor I linked to and onwards.
[Coke] I find it hard to fault people for confusing rakudo & perl6.\
masak: the first page seems entirely irrelevant.
sorear sorry. it took me a while to catch on.
masak [Coke]: er, what did I link you to?
masak double-checks 21:58
sorear first I get confused
[Coke] I'm not using --gen-parrot, so removing parrot/parrot_install doesn't help, I did a realclean before I did the build... 21:58
masak oh, right. 21:59
then maybe a problem similar to yours isn't to be found in the backlog after all.
[Coke] and if I realcleaned, I shouldn't need a git reset. I think.
PerlJam [Coke]: maybe your parrot build linked against the already-installed parrot lib ? 22:07
dalek ecza: f861d25 | sorear++ | test2.pl:
Tests for @foo[1,2] and @foo[*-1]
22:18
ecza: b23c285 | sorear++ | lib/Kernel.cs:
Implement array and hash slices
[Coke] PerlJam: I'll rebuild with my special "--kill" switch to my build script that removes the previous install dir and see if that helps. 22:22
PerlJam: nope. just rebuilt sans a currently installed parrot, and it still says -614 22:26
sorear perl6: my $a; say $a[*-1] 22:31
p6eval rakudo : OUTPUT«Any()␤»
..pugs: OUTPUT«␤»
sorear perl6: my $a; $a[*-0] = 1; say $a
p6eval pugs: OUTPUT«1␤»
..rakudo : OUTPUT«Any() 1␤» 22:32
dalek ecza: 3e87ab8 | sorear++ | test2.pl:
Add a few more slice tests
22:36
sorear What *should* that do? 22:37
masak sorear: I think Rakudo's behavior is correct. 23:09
rakudo: my $a; $a[* + 0] = 1; say $a.perl
p6eval rakudo : OUTPUT«[Any, 1]␤»
ch3ck3r hi masak 23:10
masak ch3ck3r: hi.
ch3ck3r may i see your feet?
masak ch3ck3r: I kinda need them right now. 23:11
jnthn
.oO( what?! )
masak jnthn: I didn't want to say anything, but I had the same reaction. :)
ch3ck3r masak: ok, i can wait
masak ch3ck3r: don't get me wrong, but we're not really at the "may I see your feet?" stage in out relationship yet.
ch3ck3r aren't we? 23:12
masak not that I'm aware. sorry.
dalek tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ics_tablet
masak s/out/our/
ch3ck3r sorry, then i have to apologize 23:13
masak no need. I'm not offended or anything.
ch3ck3r: did you have a real purpose with your discussion, besides delighting us with absurdity? 23:14
ch3ck3r hmm, i don't think so 23:15
masak very well.
ch3ck3r i was just interested to see your feet xD
colomon Here's one of my feet. It's pretty much the same as everyone else's, though. tinyurl.com/2fpn4jh
ch3ck3r it says a lot about ppl you know
masak colomon++ :) 23:16
ch3ck3r: yes, but how much does it say about people you don't know?
ch3ck3r masak: your foot looks strange 23:16
dalek ecza: 932e912 | sorear++ | lib/Kernel.cs:
Implement @foo[*-1] forms
ch3ck3r what's the matter with the numbers on it? 23:18
masak ch3ck3r: we're usually lenient to people who go off topic here, but we're quite strict towards users who behave like Markov chains. so please try not to act like one. 23:19
saaki that there's some fancy computer talk =p 23:34
colomon I'm planning on using Markov chains in my next Advent post...
masak ooh
colomon Markov chains... and the sequence operator. ;) 23:35
masak a natural match, now that you mention it. 23:36
masak blog post! strangelyconsistent.org/blog/best-november-ever 23:54
sorear out 23:55
jnthn masak: Did you really mean to claim that you worked on "Fiat currency reform in Nationalist China"? :) 23:57
masak jnthn: yes, but don't tell anyone :P 23:58
masak fixes