»ö« 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!
Set by sorear on 4 February 2011.
sorear good * #perl6 00:58
japhb sorear, Does niecza interpret an AST or an internal bytecode or does it generate CLR bytecode and then run that? 01:39
japhb wonders if he has asked that question before ... feels like yes 01:43
sorear japhb: it creates CLR bytecode. 01:44
japhb sorear, OK, thank you. 01:47
colomon o/ 01:57
sorear o/ colomon 02:03
zeus2012 hello 05:36
sorear hello, zeus2012, and welcome
moritz \o
zeus2012 thanks 05:37
Sorian what its means perl6? 05:40
sorear perl6 is a proper noun
it means itself
it is a name for an abstract thing 05:41
Sorian :>
sorear it means perlcabal.org/syn/
Sorian ok 05:42
sorear if there is another language you would rather use, ask around 05:43
masak morning, y'all. 07:45
tadzik morning masak-san 07:46
sorear o/ masak 07:47
mathw o/ 07:53
masak std: my $a = 42 but method foo { say "OH HAI" } 07:58
p6eval std 1ad3292: OUTPUT«Potential difficulties:␤ 'method' declaration outside of class at /tmp/0kilp_avOj line 1:␤------> my $a = 42 but method foo ⏏{ say "OH HAI" }␤ok 00:00 43m␤»
masak aww :)
but makes sense, I guess.
some syntactic sugar isn't worth it.
mathw probably not 08:11
you can always do that with a role
but it would have a certain appeal... although probably limited use in the real world
although where you did want it, yo uwould miss it 08:12
masak finds it very cute that jaffa4 thinks ([**] 1,2,3,4) should give "some other value" than 1 :) 08:13
std: my $a = 42 but my method foo { say "OH HAI" } 08:14
p6eval std 1ad3292: OUTPUT«ok 00:00 43m␤»
tadzik multiply! twice! :)
masak <jaffa4> is it not power?
"damn, I keep exponentiating and nothing happens!"
masak moritz: also, I think you're tilting at windmills trying to send jaffa4 to Sxx. or, let's just say the prior for it working at all is rather low at this point. 08:16
mathw last I checked, 1 to the power of anything was 1 08:20
that is still, true, right? 08:21
masak yes, that is still true.
mathw good 08:22
tadzik whew, I though somebody lied to me again. It has happened twice already
mathw I haven't forgotten *all* my maths :)
tadzik "you can't take a square root of a negative number" and "you can't divide by zero"
r: say sqrt(-2); say 1/0
p6eval rakudo 3bd91f: OUTPUT«NaN␤Inf␤»
tadzik oh well
r: say i * i
p6eval rakudo 3bd91f: OUTPUT«-1+0i␤»
masak tadzik: I used to be a big fan of 1/0 == Inf. not so much anymore. :)
mathw I always thought it was logical, but it also isn't 08:23
it is if you only look at division
tadzik It always sounded fishy to me
mathw but it breaks the relationship with multiplication
because 0 * Inf == 0
masak the real answer is that you can't divide by 0 :)
mathw: nope.
p6: say 0 * Inf
p6eval pugs, rakudo 3bd91f, niecza v15-6-gefda208: OUTPUT«NaN␤»
mathw blinks
but 0 is the zero of multiplication!
argh
masak mathw: they "tie" and you can't really say anything about the result.
mathw infinity makes my head hurt
sorear Just remember that it has nothing to do with math and you'll be all right. 08:24
mathw the mathematicians who study it might disagree
masak mathw: did you ever look into א_0 and א_1? it's great stuff.
mathw but at the moment I'm more inclined to worry about SQL 08:25
sorear Infinity was created by Kahan et al at Intel as a practical convenience to programming and making out-of-range computations DWIM
mathw: Mathematical infinities? I know of three common ways to define that, and two more uncommon ones, and none of them are the one IEEE uses 08:26
when mathematicians adjoin a limited number of infinities to a continuous number system, they usually just add one - this allows all four arithmetic operations to be continuous everywhere 08:27
in, say, complex analysis, it's very convenient to just say: "f is rational, so it must be continuous everywhere" 08:28
masak sorear: the real projective line has but one infinity, but surely the ordinary real number line has +∞ and -∞ distinct? 08:30
sorear The ordinary real number line does not have any infinities.
masak fair enuf. 08:31
sorear The sequence 1, 2, 3, 4, ... does not have a limit
masak right.
"infinity is not a number"
bonsaikitten amusingly 2,4,6,8 ... has the same amount of items as 1,2,3,4... 08:32
moritz any countable, infinite sequence has the same number of items as 1, 2, 3, 4 ...
mathw whereas it's impossible to even write the first two elements of an uncountably infinite sequence 08:33
bonsaikitten yup :) people intuitively dislike that
bonsaikitten likes aleph_0 sized infinities 08:34
masak mathw: how then is it a sequence?
moritz mathw: that's not true
sorear 0, 1
I just wrote the first two elements of Ord
moritz mathw: you can define the sequence 1, 2, 3, {all real numbers > 3)
sorear which is so big, it's *not even a set*
larger than every definable cardinal, etc
mathw moritz: cheat :P 08:35
moritz mathw: "cheating is technique" # hpmor.com/chapter/78
masak cheating would imply breaking the rules, not using them creatively. 08:36
moritz well, s/cheating/hacking/ then :-) 08:37
sorear in mathematics, unlike law, what you see is what you get
sorear thinks the Loewenheim-Skolem paradox is relevant here 08:38
mathw This channel's so smart, when you're all bored with Perl 6 how about you design a database system that doesn't suck/ 08:39
sorear I have this weird sense of self-conciousness trying to prevent me from using ordinals in public
moritz is rather happy with postgres 08:40
sorear like I'd be showing off in a bad way or something
sorear knows happy postgres users
moritz sorear: it's ok to use ordinals in public, if you're in the presence of the right kind of people
arnsholt I'm reasonably happy with Pg 08:41
bonsaikitten mathw: that's subjective, what would be needed to make you happy?
arnsholt But SQL is generally a bad fit for general object storage though, which is a bit of a shame
moritz (maybe we can expose nqp's/rakudo's bounded serialization to the userspace?) 08:42
arnsholt moritz: That'd be cool. Would hopefully make things like Storable relatively simple 08:43
mathw SQL really annoys me 08:44
frettled masak: Your latest blog entry appears to be made tomorrow :)
tadzik :>
sorear I am highly dubious about the possibility of using bounded serialization effectively for storing user data
mathw It's powerful, but it's also really dumb
moritz frettled: and it was made a month ago :-)
sorear frettled: it has for a few months
arnsholt mathw: SQL syntax really annoys me. I don't particularly mind the semantics though
sorear SQL syntax is just stupid 08:45
mathw I do think some of what I'm doing at the moment is a bad fit for an SQL database though
sorear especially the quoting rules
frettled moritz: It looks as if you will be staying at my place during the hackathon, and I look forward to seeing you in a week :) Are there any allergies or special needs I need to be aware of?
moritz sorear: why? (re bounded serialization)
mathw it fits in what we understand to be relational theory, but that's not the same thing as what SQL Server does
frettled sorear: ah, I haven't looked at Planet Perl Six in a long time, haha :O)
sorear moritz: too fragile, binds the data too closely to the program 08:46
moritz: IME one of the killer features of Storable is that you can modify the classes and load the same data
and load the same data in different but related programs
it seems very tricky to make that work in an environment where the default behavior is to serialize HOW 08:47
(yes, boundedness ameliorates this partially. I still am nervous.)
moritz well, how do other languages solve that problem? languages where objects aren't just glorified hashes, that is 08:49
masak oh, this is cute: en.wikipedia.org/wiki/Division_by_z...y_attempts -- it's a bit like liquid spec, where a logical blunder like 0/0 == 0 can creep in because things are untested. :) 08:50
frettled: oh thank Bog it's tomorrow. then I won't have to be ashamed anymore.
sorear moritz: every language I know of that has a general-purpose serialization facility saves object types using something like a name 08:51
I know that "50 million Frenchmen cannot be wrong" is not a sound argument, but still 08:52
mathw serialisation always worries me
frettled masak: hee-hee
mathw I can see that it has a use where things like Windows Communication Foundation use it (although that does make it rather harder for hte other end to not be written in .NET) but for long-term storage... it's easy, but some of the implicationsa re not 08:53
moritz sorear: maybe we can introduce by-name lookup mode for some boundaries for user-space serialization
masak wow, a divide-by-zero once knocked out the propulsion system of a Ticonderoga-class cruiser: en.wikipedia.org/wiki/USS_Yorktown_...ip_testbed 08:55
sorear masak: Didn't we lose the Arianne 5 to an exception-throwing division? 08:56
moritz masak: since 1/0 is infinite, it can nock out arbitrary large ships :-)
sorear: the problem with Arianne 5 was an overflow
sorear I don't think the USS_Yorktown *EXPLODED* after dividing by zero 08:57
masak moritz: :P
sorear: no, it was just dead in the water.
tadzik that would've been so holywood-y
masak exploding due to a divide-by-zero sounds... what tadzik said :)
moritz sorear: they reused the software of the Arianne 4, but v5 had more power, accelerated faster, and thus produced an overflow in some accumulator
tadzik imagine this. The Division, by Steven Spielberg
moritz sorear: the overflow was detected, error messages emitted. The receiver module wasn't programmed to receive error messages, interpreted them as flight data 08:58
tadzik Starring Georg Cantor
moritz wrongly detected a huge deviation from the should-be course, initiated counter measures 08:59
tadzik "When you have only yourself to count on"
masak tadzik: "The empty set gets in everywhere. Be very afraid."
sorear hey, I'm headed towards the ground, self destruct now before I annihilate some innocent city
bbkr Bruce Willis in "Divide hard"
moritz which were so sever that they threatened to break the rocket. A consistency checker noticed, and activated self-destruction
masak lovely. 09:00
moritz (at least that's the story a professor told us in our class on software verification)
sorear although iirc the self-destruct produced enough infrared radiation to melt car windows in one of the observation lots
moritz that would greatly surprise me
sounds more like a nuclear explosion would be required for that, considering that it was already quite a bit up in the air 09:01
sorear en.wikipedia.org/wiki/Ariane_5_Flight_501 09:02
moritz: yeah, it greatly suprised me - someday I should factcheck that 09:03
masak the value that overflowed was "horizontal bias". 09:04
fglock_ finds more funny perl5 variable syntax: ' $ {!} ', ' @ {+} ', ' $#{+} ', ' @{ x ->[10] } ', ' ${v {int} -> {t}} ' 09:04
sorear anyways. tadzik. hollywood explosion caused by software bugs
as opposed to the Therac-25 incidents, which were worse but less photogenic. Also not related to the concept of infinity. 09:05
moritz fglock: yes, the fun of allowing space after sigil
fglock_ except when it is not allowed: ' $# {+} ', ' $ #{+} ', ' @ { + } ' are syntax errors 09:07
moritz how... intuitive. 09:08
masak sorear: skimming the Wikipedia article, I get the impression that it wasn't so much a single error that caused it, but just bad software design. 09:09
tadzik sorear: indeed. Now we only need to add a nuclear warhead onboard, a spacraft flying towards Washington and Bruce Willis on a jetpack trying to fix the onboard computer and we've got a movie 09:11
moritz tadzik: you forgot the love story
tadzik oh, right
sorear a movie about a rocket that explodes without warning wouldn't work, I think 09:12
tadzik yeah
sorear you need to have a long drawn-out crisis
tadzik you've got to have this long flight and the disturbing ticking noise on the radar
sorear unless it's a scathing documentary on avionics software QC practices 09:13
I might watch that
mathw it has to be linked somehow to someone's attempts to make another person look bad because they were promoted over them 09:15
and there also has to be a coverup for a journalist to get killed trying to expose
which means there absolutely has to be nuclear material on the rocket
tadzik and a cold war reference
tadzik because it never gets old 09:16
bonsaikitten masak: it was good design, just that someone took a shortcut and thus made all the assumptions and checks invalid
tadzik . o O ( it never gets cold )
moritz and the person that they try make look bad is the woman that Bruce Willis falls in love with
bonsaikitten sorear: it's not the avionics software I fear, it's the hardware ... the stories I've heard make me wonder why there are so few failures in airplanes
moritz considering that there are rumors that you can remotly log in with telnet (!) on the flight control system and tune the engines, I'm worried about the software too. 09:18
bonsaikitten moritz: as long as some components have failure modes that are best described at "rapid loss of structural integrity" ... eh, no worries ;)
moritz bonsaikitten: as long as the auto destruction is triggered in a timely matter, no worries :-) 09:19
bonsaikitten I kinda like having both wings attached to the plane 09:20
I'm conservative ;)
moritz "self-destructing safety vests are under your seat" 09:21
jnthn morning 09:23
tadzik hello
moritz \o jnthn 09:24
masak jnthn! \o/ 09:25
frettled jnthn: o/ 09:33
fglock_ heh - I've hacked -MO=Deparse in perlito5:
$ node perlito5.js -Isrc5/lib -MO=Deparse -e ' say "works!" while 1 '
masak nice. fglock_++
fglock_ it emits perl5 from the AST
masak &say wouldn't work with -e in vanilla perl :) 09:34
but I guess you're free from such back-compat constraints.
fglock_ sure - it compiles to: Perlito5::Runtime::say('works!') 09:34
masak heh. 09:35
fglock_ pastebin.com/542jzNbh 09:38
tadzik nice 09:42
masak r: say <a b c d e>.kv.invert.perl 09:47
p6eval rakudo 3bd91f: OUTPUT«Method 'invert' not found for invocant of class 'List'␤ in block <anon> at /tmp/QqHmWorf4f:1␤␤»
masak r: say <a b c d e>.kv.hash.invert.perl
p6eval rakudo 3bd91f: OUTPUT«("a" => "0", "b" => "1", "c" => "2", "d" => "3", "e" => "4").list␤»
masak r: say <a b c d e>.kv.hash.perl 09:47
p6eval rakudo 3bd91f: OUTPUT«("0" => "a", "1" => "b", "2" => "c", "3" => "d", "4" => "e").hash␤»
masak r: say (my %).push(<a 1 a 2 a 3 b 4 b 5 c 6 c 7>).perl 10:30
p6eval rakudo 3bd91f: OUTPUT«("a" => ["1", "2", "3"], "b" => ["4", "5"], "c" => ["6", "7"]).hash␤»
masak \o/
flussence this seems like a very PHPish thing to do: lwn.net/Articles/491788/ 11:15
lichtkind moritz: ? 11:23
masak flussence: isn't this the same security issue that Perl fixed 10 years ago? 11:24
lichtkind: ¿
flussence masak: yes, and here the security fix is "off by default for compatibility reasons"... 11:25
masak the only one who gets away with restricting his communication to a single question mark is Victor Hugo. :)
flussence: I found that odd too. 11:26
jnthn huh, the compatibility reason seems to be "people relied on hash iteration ordering"...
(disclaimer: only skimmed it...)
masak wtf 11:28
jnthn Makes me want to ensure we deliberately "break" such code every Rakduo release. :)
masak how can you *rely* on hash iteration ordering?
jnthn "Historically, dict iteration order has not changed very often across" 11:29
releases and has always remained consistent between successive executions of
Python. Thus, some existing applications may be relying on dict or set ordering.
flussence speaking of which, maybe rakudo should be randomising its hash iteration... 11:30
r: .gist.say for {a=>1,b=>2,c=>3};
p6eval rakudo 3bd91f: OUTPUT«("a" => 1, "b" => 2, "c" => 3).hash␤»
flussence r: .gist.say for {a=>1,b=>2,c=>3}.kv;
p6eval rakudo 3bd91f: OUTPUT«a␤1␤b␤2␤c␤3␤»
flussence r: .gist.say for {a=>1,b=>2,c=>3}.hash; 11:31
p6eval rakudo 3bd91f: OUTPUT«"a" => 1␤"b" => 2␤"c" => 3␤»
jnthn It should be, I think...
Though may need a bigger hash.
flussence r: .gist.say for {'a'..z' X 1..*}.hash; 11:32
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
flussence r: .gist.say for ( 'a'..z' X 1..* ).hash;
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2␤»
flussence oh, oops
jnthn missing '
flussence r: .gist.say for ( 'a'..'z' X=> 1..* ).hash;
p6eval rakudo 3bd91f: OUTPUT«(timeout)»
flussence /facepalm
r: .gist.say for ( 'a'..'z' Z=> 1..* ).hash;
p6eval rakudo 3bd91f: OUTPUT«"a" => 1␤"b" => 2␤"c" => 3␤"d" => 4␤"e" => 5␤"f" => 6␤"g" => 7␤"h" => 8␤"i" => 9␤"j" => 10␤"k" => 11␤"l" => 12␤"m" => 13␤"n" => 14␤"o" => 15␤"p" => 16␤"q" => 17␤"r" => 18␤"s" => 19␤"t" => 20␤"u" => 21␤"v" => 22␤"w" => 23␤"x" => 24␤"y" => 25␤"z" => 26␤»…
flussence n: .gist.say for ( 'a'..'z' Z=> 1..* ).hash; 11:34
p6eval niecza v15-6-gefda208: OUTPUT«"z" => 26␤"y" => 25␤"x" => 24␤"w" => 23␤"v" => 22␤"u" => 21␤"t" => 20␤"s" => 19␤"r" => 18␤"a" => 1␤"b" => 2␤"c" => 3␤"d" => 4␤"e" => 5␤"f" => 6␤"g" => 7␤"h" => 8␤"i" => 9␤"j" => 10␤"k" => 11␤"l" => 12␤"m" => 13␤"n" => 14␤"o" => 15␤"p" => 16␤"q" => 17␤»…
flussence ?!
moritz lichtkind: ! 11:36
n: say ( 'a'..'z' Z=> 1..* ).hash;
p6eval niecza v15-6-gefda208: OUTPUT«{"a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5, "f" => 6, "g" => 7, "h" => 8, "i" => 9, "j" => 10, "k" => 11, "l" => 12, "m" => 13, "n" => 14, "o" => 15, "p" => 16, "q" => 17, "r" => 18, "s" => 19, "t" => 20, "u" => 21, "v" => 22, "w" => 23, "x" => 24, "…
moritz n: say ( 'a'..'z' Z=> 1..* ).hash.list; 11:37
p6eval niecza v15-6-gefda208: OUTPUT«"z" => 26 "y" => 25 "x" => 24 "w" => 23 "v" => 22 "u" => 21 "t" => 20 "s" => 19 "r" => 18 "a" => 1 "b" => 2 "c" => 3 "d" => 4 "e" => 5 "f" => 6 "g" => 7 "h" => 8 "i" => 9 "j" => 10 "k" => 11 "l" => 12 "m" => 13 "n" => 14 "o" => 15 "p" => 16 "q" => 17␤»
lichtkind moritz: could you install an gitit wiki instance?
so we can test it if it really works as interface between git and wiki world
moritz lichtkind: if it's for testing the software, can't you do it on your own machine? 11:39
lichtkind true
moritz lichtkind: I'm happy to install it when you actually want to use it, but I don't want to install more than necessary on that box 11:40
lichtkind moritz: it sounds like "the right thing to go"(tm) but i think i should test it first 11:56
i think i start by torturing the official gitit wiki to look how to break the syntax limits 11:57
masak p6: my int $x; say $x 12:47
p6eval pugs: OUTPUT«int␤»
..niecza v15-6-gefda208: OUTPUT«===SORRY!===␤␤Malformed my at /tmp/AB_LNFxJ8R line 1:␤------> my⏏ int $x; say $x␤␤Parse failed␤␤»
..rakudo 3bd91f: OUTPUT«0␤»
masak lol Pugs u so rong
jnthn Pugs cna't possibly be right
mikec nice 12:48
jnthn Why an int type object exists, you can't store it in something of type "int"
masak right. 12:48
a natively typed container can't encompass the corresponding type object.
moritz jnthn: which branch of zavolaj should we use these days? master or v2? 12:49
arnsholt moritz++ # I'd completely forgotten about that
jnthn v2 became master, iirc 12:51
Well, was merged into
v2 was "make it work on nom"
moritz oh indeed 12:52
there just isn't any merge commit, seems to have been a fast-forward merge
jnthn yeah, it was merged, it was...right.
moritz should I delete v2 to avoid confusion?
jnthn So, feel free to remove v2 branch to...yes ;)
moritz done 12:53
masak moritz++ 12:54
moritz jnthn: oh, and have you tested the osx-fix branch on windows? 12:56
seems to work fine on OS X and linux
jnthn moritz: I seem to recall testing something recently 12:58
jnthn Maybe search irclog for me and osx-fix :) 12:59
Can't run a test rihgt now, at $client
moritz broken irclog search is broken :/ 13:00
ah well
no hurry
jnthn Wait, it looks like the osx-fix branch is merged already 13:02
Well, was a fastforward...
moritz eeks 13:02
moritz hates that
ok, killing that branch too 13:03
jnthn yeah, it's coming back to me now...I think I tested it and merged it. 13:03
moritz ok, there's just one branch remaining besides master, and that's out_params. Which isn't merged. 13:06
bbkr there are still some warnings when running test suite for NativeCall on newest XCode, I'll post them in issues after finishing $dayjob 13:07
moritz some of the new clang warnings are quite "funny" 13:08
for example clang warns about assignment in an if-condition. Nothing wrong with that, but the way to disable the warning is to double the parens, if ((x = something() )) { ... } 13:09
now they warn whenver one doubles the parens around something that is not an assignment. Which is... not very helpful
timotimo haha 13:12
that's amusing
moritz it's a meta warning: "doing this might limit our ability to warn" 13:14
timotimo: it's only amusing as long as you're not on the receiving end of the bug reports complaining about build warnings :-)
timotimo can you disable *that* warning? ;)
moritz probably. But that requires clang-specific code then :/ 13:17
JimmyZ aloha 14:20
moritz o/ 14:21
masak JimmyZ: 你好 14:25
JimmyZ 麦高下午好 14:26
masak 你记得我的名字。爽。 14:30
JimmyZ 呵呵
masak :)
daxim 嘿,哥们儿
JimmyZ 大家好 14:31
masak 好的。
JimmyZ daxim 在澳大利亚? 14:32
daxim 奥地利 14:33
tadzik zażółć gęślą jaźń! 14:33
JimmyZ daxim: 中国人 ?
masak was just gonna suggest 奥地利 based on whois info 14:34
daxim 不是 14:34
masak JimmyZ: 如果他是不是中国人,他怎么能使用中国文字! :P
s/是// 14:37
daxim www.flickr.com/photos/shijialee/393...datetaken/ 14:38
JimmyZ daxim: 那个穿 perlchina 衣服的是你? 14:39
masak oh, I had forgotten how elegant and beautiful 中文 is. 14:42
"[that one wearing perlchina clothes]-NP is you?" 14:43
daxim 他是 perlchina.org/bjpwQiang - 我是那个欧洲人
JimmyZ oh
masak hehe
daxim 啊 哦
JimmyZ daxim: 你的中文不错哦,我还以为你是中国人呢,呵呵 14:45
daxim 哪里,哪里…… :) 14:46
masak :D
masak would like to be able to pull that off at some point :)
我的中文错得不得了 ^^ 14:48
JimmyZ masak: perlchina.org/
masak: which likes perl.org
masak indeed. 14:49
woot.
masak tadzik: that be the "yellow the goose's self-awareness" one? :) 14:51
tadzik aye :)
masak it's a hoot to pronounce. takes me like 7 seconds, far too long. 14:52
tadzik hehe 14:53
masak gets a frightening vision of Lingua::Polishgata
tadzik huh, I have no idea how to write the pronounciation using english letters 14:53
masak why would you want to? 14:55
Polish lettering is optimized for Polish sounds.
tadzik Oh Geez, we _have_ to have that! 14:56
gist.github.com/2377441
that's from #maemo
I mean, it's not particulary useful if you know Perl, but it's awesome nonetheless :) 14:57
masak we could try it out. it has to be very non-noisy. 14:58
tadzik aye
masak massive kudos if it manages to work out repeated s/// :)
daxim every infobot does this out-of-the-box
TimToady and missing/extra whitespace
flussence maybe p6eval's command line should be the last $n irc lines... 14:59
TimToady extra credit for figgering out *the style corrections 15:00
TimToady sincerely doubts it can easily figure out TimToady's sub-word style of corrections; those approach a Turing test
tadzik decomutees, or however you write that 15:01
TimToady *tes
*mm
masak :P
QED. 15:02
fsergot Hello #perl6 o/ 15:02
masak a "decomutee" is a t-shirt coming out of a coma.
mikec haha
masak fsergocie, cz!
TimToady in Turkish, to get vowel harmony
er, vowul harmonu 15:03
masak get thee to an autopunnery.
moritz tadzik: fwiw in #perlde we have such a bot 15:06
tadzik: biggest problem is that people in here mix p5 and p6 regexes a lot
TimToady wonders how Bruce Willis got the North Korean rocket to divide by 0... 15:19
TimToady you don't suppose he reprogrammed the rocket in Perl 6? 15:20
oh wait, the thing is that Bruce Willis can do anything because *he* is programmed in Perl 6 :) 15:21
moritz he just divides the rocket by Chuck Norris :-)
TimToady he's part of the Singularity that is unevenly distributed...
TimToady wonders if there was a Therac-style error with the US "tracking laser" :) 15:22
gfldex i'm quite confident that the great ppl of north korea can explode their missiles without the help of imperialistic kapitalisic exploitation regimes 15:26
it's proly a plot after all 15:27
"give us more money for oil and food or we build a rocket that actually works"
TimToady wonders whether they can also explode their nukes without help
gfldex they managed to explode 2 nukes IIRC 15:28
TimToady well, 1.5
gfldex you mean one of them went "pffffft"? 15:29
TimToady it was a very big pffffft, but a pffffft nonetheless
(we think)
gfldex if i would spend that much money on a pfffft i would insist on it being a big one 15:30
TimToady still something you wouldn't want to be close to...
TimToady "Comrade, it is your great honor to go into that cave and throw this nuclear hand grenade as far as you can..." 15:33
TimToady wanders off to the shower wondering whether it would be any better to toss a nuclear horseshoe... 15:40
gfldex TimToady: you got that a little wrong. It's the communists that are getting the nukes thrown _at_ as can be seen here: www.youtube.com/watch?feature=playe...U2Q#t=405s 15:44
lichtkind removed .pretty from index A 17:15
felher moritz: ping :) 17:26
moritz felher: pong 17:50
sjohnson heh 17:55
felher moritz: I just removed 'method Bool() { False }' from Exception.pm and did 'make spectest': gist.github.com/2378269 . Most of the spectest-errors are of the kind 'nok(try { eval(...) }, ...)'. They fail now because try seems to return the exception upon die'ing and this exception is now True. 17:56
moritz: Maybe they can be changed to eval_dies_ok?
moritz felher: one must be careful with eval_dies_ok 17:57
felher moritz: there are some other, though, like : "my $success = try { eval...".
moritz felher: my $x = 3; eval_dies_ok '$x'; # dies, because it can't see the outer $x
felher: so generally dies_ok { eval(...) } is safer
felher: feel free to change those tests you feel confident about, and leave the rest to me 17:58
(fwiw t/spec/S32-exceptions/misc.rakudo is unrelated. I really need to fix that)
felher moritz: yeah, i wanted to mention that too. :) Since i could not see the relation i compiled rakudo again without the little patch and it was still there :) 17:59
moritz felher: I'm not sure how I managed to lose the patch that made that test pass. I was 100% sure I had pushed it to nom 18:01
maybe I was in a wrong branch or so
felher yeah, may well be. :) 18:02
felher moritz: well, i don't have much time now but i will make a patch for exception.pm and one for the spectests tonight :) 18:03
moritz felher: \o/ 18:04
dalek kudo/nom: d056801 | moritz++ | src/Perl6/Grammar.pm:
typed exception for unknown syntactical category
18:06
jnthn EVENIN' 18:21
oops 18:22
lichtkind jnthn: o/
jnthn hi
masak EVENIN' #PERL6! 18:23
jnthn
.oO( "What's up?" "Evidently, not your caps lock key." )
On the upside, I have tuits. On the downside, I'm really tired. 18:24
The tuits will last the whole weekend though, whereas the tiredness is hopefully more temporary :)
masak jnthn: bash.org/?835030 ;) 18:31
jnthn :P 18:33
dalek Heuristic branch merge: pushed 108 commits to rakudo/name-cleanup by jnthn 18:36
masak wow, 108 commits! 18:53
jnthn ...have happened since I last worked on that branch :)
masak oh :) 18:54
right, merging is what people do who already pushed their branch into the limelight :P
uvtc masak, in my RSS reader, your "t3: addition chains" post keeps staying right at the top of the planet Perl 6 listing. 18:55
masak uvtc: yeah. sorry. should be resolved by itself tomorrow. 18:56
lesson learned: provide your blogging software with a check to prevent you from posting in the future. 18:57
uvtc masak, No complaints. Just curious how long it'll stay there ... Maybe it will take up permanent residence.
:)
TimToady masak: well, have you done it yet?
uvtc masak, Ah, that's what it was. Heh.
TimToady notes the time lagging while masak hacks his software so he can say "yes" 18:58
masak TimToady: I'll do it right away.
TimToady "lesson learned" hah!
masak well, real soon :) 18:59
uvtc Right after this next blog post ...
TimToady why is there no unicode for a round tuit?
jnthn masak: Easiest way to sync it between the various machines I hack on :P
diakopter .u CIRCLED DIGIT TWO 19:01
phenny U+2461 CIRCLED DIGIT TWO (②)
TimToady close
sjohnson anyone here like hockey?
TimToady we really need a 'tuit' char that we can use ENCLOSING CIRCLE with 19:02
jnthn Just make one up and ask the Unicode folks to add it. Given some of what's in Unicode 6, the bar seems pretty low. ;-) 19:04
diakopter .u A4A8 19:06
phenny U+A4A8 YI RADICAL TU (꒨)
diakopter .u A000
phenny U+A000 YI SYLLABLE IT (ꀀ)
uvtc .u 233e 19:07
phenny U+233E APL FUNCTIONAL SYMBOL CIRCLE JOT (⌾)
uvtc .u 2780 19:09
phenny U+2780 DINGBAT CIRCLED SANS-SERIF DIGIT ONE (➀)
padrino ciao 19:09
!list
TimToady best I can give masak is a ㉘ 19:14
uvtc .u 24c9
phenny U+24C9 CIRCLED LATIN CAPITAL LETTER T (Ⓣ)
masak worksforme. 19:17
actually, I have tuis. I'm just, just as jnthn, rilly rilly tajerd.
uvtc Ok, last one. 19:18
.u 235f
phenny U+235F APL FUNCTIONAL SYMBOL CIRCLE STAR (⍟)
TimToady .u ㊟ 19:19
phenny U+329F CIRCLED IDEOGRAPH ATTENTION (㊟)
masak TimToady, uvtc, sorear, jnthn, tadzik, moritz: github.com/masak/psyde/commit/10a3...9f8f333080 19:20
uvtc The little circle with the star in it seems like something you'd get at an amusement park. :) (hm. U+329f not displaying for me)
moritz masak++ 19:22
uvtc Neat. Is `after` an operator that works only between `Date` objects? 19:24
jnthn when * after Date.today
:D
moritz uvtc: no 19:25
r: say 4 after 3
p6eval rakudo 3bd91f: OUTPUT«True␤»
moritz r: say 4 after 4
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn r: say 4 after 4
p6eval rakudo 3bd91f: OUTPUT«False␤»
uvtc r: 'c' after 'a'
p6eval rakudo 3bd91f: ( no output )
TimToady hates webpages that waste whitepsace and then give me a horizontal scrollbar...
masak I like to use `before` and `after` with dates and times. it reads well. strangelyconsistent.org/blog/novemb...or-the-eye 19:26
TimToady *him
masak :)
uvtc r: say 'c' after 'a'
p6eval rakudo 3bd91f: OUTPUT«True␤»
masak r: say pi after 3.14
p6eval rakudo 3bd91f: OUTPUT«True␤»
uvtc Neat. Thanks, moritz.
masak r: say pi after 3.15
p6eval rakudo 3bd91f: OUTPUT«False␤»
TimToady we need afterish and beforeish for the maybe-eqv case
moritz TimToady: !before and !after exist 19:27
masak what moritz said :)
TimToady don't always read well in the presence of not-raising
moritz speaking of which
masak `afterish` and `beforeish` don't read that well either. 19:28
TimToady suggestions welcome :)
masak `aftereqv`, `beforeqv` :)
uvtc r: 3 same-ballpark pi
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Confused␤at /tmp/i9oE2cz8wi:1␤»
TimToady before-or-same
moritz we should have a trait that allows you declare an infix:<cmp> and derive 'before' and 'after' from them
moritz likewise leg => eq, ne, lt, gt, le, ge 19:28
masak ooh
+1
moritz and <=> => ==, !=, <, <=, >, <= 19:29
erm, >=
masak I see a great need.
people will thank us when they're writing custom types.
sjohnson u 19:30
oops
TimToady .u ䷿䷾ 19:33
phenny U+4DFF HEXAGRAM FOR BEFORE COMPLETION (䷿)
U+4DFE HEXAGRAM FOR AFTER COMPLETION (䷾)
masak I wonder if anyone else on the channel 'sides me and au++ studied I Ching in any depth. 19:38
sjohnson .u ( `ー´) 19:39
phenny sjohnson: U+0020 U+FF08 U+3000 U+FF40 U+30FC U+00B4 U+FF09
masak .u              19:40
phenny masak: Sorry, your input is too long!
masak :)
.u           19:41
phenny masak: U+2002 U+2003 U+2004 U+2005 U+2006 U+2007 U+2008 U+2009 U+200A
moritz ok, I've started writing a module that derivees such operators for you...
and it's more complicated than I thought, initially
the first problem is that I don't know how to create the nominal type constraints for the signatures of the derived ops
std: anon multi foo() { } 19:42
p6eval std 1ad3292: OUTPUT«ok 00:00 41m␤»
moritz r: anon multi foo() { }
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Cannot use 'anon' with individual multi candidates. Please declare an anon-scoped proto instead␤at /tmp/vUI_S41Wv4:1␤»
moritz and that's the second problem. I'd need to generate invdividual, anon multis
masak that does not make immediate sense to me. 19:43
moritz which one? 19:44
rakudo's error?
TimToady lessee, <=> means, <, =, or >, and leg means lt, eq, or gt, so bsa should mean before, same, or after, and cmp should mean, er...c<mumble>, m<mumble>, or p<mumble>, where those ops work across types consistently-ish in the way default sort wants to work 19:45
lunch & 19:47
masak if you solve the "default sort across types" problem, I'll even let you name them c<mumble>, m<mumble>, and p<mumble> :)
moritz c'mon mister perl? 19:48
r: multi () { }
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Confused␤at /tmp/PSIToKEp8g:1␤»
moritz r: multi sub () { }
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Cannot put multi on anonymous routine␤at /tmp/POzlDI6ear:1␤»
masak cinnamon mustard pepper.
jnthn Why do you need to put "multi" on it? 19:57
"multi" means "locate the controlling proto and add this to its candidate list"
masak can't multi protolessly ;) 19:58
jnthn Right
But multi candidates are just normal routines. 19:59
masak carl masak pwn'd! hah!
oh wait
jnthn "multi" doesn't make them different, it just changes how they're installed. :)
moritz jnthn: well, I want to export them. And when they are imported, they should behave as normal multi candidates
jnthn So if you're doing that yourself by hand... :)
moritz: Sure, but the normal case of doing exports just has a proto with the candidates installed in EXPORT somewhere. 20:00
moritz jnthn: so I need an anon proto, and .add_candidate a single candidate to it? 20:01
jnthn Should cut it 20:02
nom: anon proto (|$) { }
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Confused␤at /tmp/01EK3gzILL:1␤»
jnthn nom: anon proto sub (|$) { }
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Cannot put proto on anonymous routine␤at /tmp/sXOyCGinJZ:1␤»
jnthn Ah
That one feels like an unrequired restriction.
moritz aye
uvtc I was asking here yesterday about how nested lists work. 20:03
Tene moritz: can't you just define a type that implements those operators in terms of the first, and then derive that type in your custom type?
uvtc I see that square brackets don't flatten (thanks spider-mario++). 20:04
r: my @b = ('i', ['x', 'y', 'z'], 'j'); say @b[1][2]; # prints 'z'
p6eval rakudo 3bd91f: OUTPUT«z␤»
uvtc And that if the inner array already exists, I can do this:
r: my @a = <x y z>; my @b = ('i', [@a], 'j'); say @b[1][2]; # prints 'z'
p6eval rakudo 3bd91f: OUTPUT«z␤»
uvtc I also saw that you can assign a list to a scalar to avoid list flattening:
r: my @a = <x y z>; my $c = ('i', @a, 'j'); say $c.perl
p6eval rakudo 3bd91f: OUTPUT«$("i", Array.new("x", "y", "z"), "j")␤»
jnthn moritz: elsif $*MULTINESS { in routine_def would just change to checking it's 'multi'
uvtc but that looks odd to me (why assign a list to a scalar?), and also, indexing into it doesn't work: 20:05
r: my @a = <x y z>; my $c = ('i', @a, 'j'); say $c[1][2]; # doesn't print 'z'
p6eval rakudo 3bd91f: OUTPUT«Index out of range. Is: 2, should be in 0..0␤ in method gist at src/gen/CORE.setting:8224␤ in sub say at src/gen/CORE.setting:6258␤ in block <anon> at /tmp/lb9wP1PJJF:1␤␤»
uvtc (Shoot, sorry to trod over Tene/jnthn convo there.) 20:05
jnthn uvtc: my $c = ('i', @a, 'j') # this does not prevent flattening 20:06
uvtc: It's that flattening is lazy.
PerlJam wonders what's with all the extra parens 20:07
;)
jnthn uvtc: Array.new(...) does not imply non-flattening. It'd look like [...] if it was not going to flatten.
uvtc: The .perl output is simply revealing this laziness.
masak: To multi-macros actually work? :) 20:08
*Do
uvtc jnthn, I'm happy to just stick with Baby Perl 6 for now --- is there any good reason I'd need to assign a list to a scalar?
jnthn uvtc: Yes, when you want that list to act as an item 20:10
uvtc PerlJam, old habit. :)
jnthn (But that doesn't sany anythin gabout the thing inside of it.)
s/sany/say/
moritz gist.github.com/2379772 # this is what I have now. Somehow the name of the generated operator always comes out as 'infix:<>'. Any idea why?
uvtc jnthn, I must say, this seems rather complicated to me. 20:11
jnthn, Thanks for the help.
Tene uvtc: the summary is, @ represents a flattening of many items, $ represents a single item. 20:12
masak jnthn: I don't see why not. well, barring that the spec might still change around in how macro parameters are handled.
Tene If you want it to act as a single item, use $. If you want it to act as many items, use @.
masak jnthn: but assuming you can introspect ASTs with where clauses, multi macros make a lot of sense.
jnthn masak: Or just arity
masak or maybe even introspect them with subsignatures.
or just arity, sure.
jnthn moritz: Yeah, something to do with anonymous roles and lexical scoping. 20:13
uvtc Tene, thanks. Perhaps I can find an example at some point in the Perl 6 Book.
jnthn moritz: Just declare a my role named { has $.name }; and then $c does named(...);
masak the other day I had a really clear thought about macro signatures and compile-mode/run-mode and jiggery-pokery between them, with a conclusion of some kind. but I'm too tired to remember what it was now :/ 20:14
PerlJam masak: next time, write it down then :)
moritz \o/ 20:15
and suddenly it "works" 20:16
sorear masak++
jnthn nom: multi macro foo($a) { quasi { say 1 } }; multi macro foo($a, $b) { quasi { say 2 } }; foo(42); foo(24, 42) 20:17
p6eval rakudo 3bd91f: OUTPUT«===SORRY!===␤Illegal redeclaration of macro 'foo' at line 1, near "; foo(42);"␤»
jnthn aww
moritz jnthn++ # gist.github.com/2379772 looks much better now 20:18
hey, I have another evil idea
can't I just generate a named proto + multi, and then rename them bother later on? 20:19
masak "later on"? lexpads are immutable at runtime. :) 20:20
moritz masak: I know I know I know. But for the export trait it's not important what the name in the lexpad is, but rather what name the routine itself reports
masak: that's why do I this fun thing of mixing in a role that changes the name 20:21
masak moritz: nice gist. should probably have a &die to check that the hash key exists.
moritz yes, it should
and if it ever makes it into a proper module, it will
masak moritz: also 'is autogen' is too generic. maybe 'is comparison' or something? 20:22
moritz 'is comparison' doesn't capture the idea either
masak 'is deriving_lots_of_other_ops' :)
moritz comparison-autogen
jnthn Well, it's totally not spec'd API, but .'!set_name'(...) works too for changing the name, I think.
autocomparators 20:23
masak sounds like something out of Transformers.
moritz well, it is a transformer :-) 20:24
moritz ===SORRY!=== 20:25
get_pointer() not implemented in class 'Perl6::Metamodel::ClassHOW'
that's a new one, isn't it? :-)
jnthn Wow.
How'd you get that?
moritz with evil magic :-)
and, it's triggered from inside the optimizer
jnthn bah 20:26
moritz some blocks inside visit_op
I just changed all the anon subs to
do { proto a(|$) { }; mutli a ($a, $b) { # same body as before }; &a }
moritz and then called 20:29
./perl6 -e 'use A; say "a" before "b"'
meta programming is fun. 20:31
jnthn Oddness. Feel free to ticket it.
moritz I'll see if I can boil it down to something managable 20:32
jnthn: can I fudge in type constraints into a signature somehow? 20:33
jnthn nom: say ?eval('module MY; 1')
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn nom: say ?eval('module foo; 1')
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn nom: say ?eval('module foo; 0')
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn nom: say ?eval('module foo { 0 }')
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn nom: say ?eval('module foo { 1 }')
p6eval rakudo 3bd91f: OUTPUT«False␤»
jnthn Oh
moritz nom: say eval('module foo; 1 ')
p6eval rakudo 3bd91f: OUTPUT«foo()␤»
jnthn It evaluates to the type object...
moritz nom: say eval('module foo { }; 1 ') 20:34
p6eval rakudo 3bd91f: OUTPUT«1␤»
jnthn S02-names-vars\variables-and-packages.rakudo has a bunch of tests like
moritz which is what people expect from classes
jnthn ok !eval('module MY; 1'), 'MY is an out of scope name';
moritz oh
that's from the days where eval didn't throw exceptions
jnthn I think what it's aiming at is testing that you're not allowed to declare pseudopackages.
Right, and we're been passing them bogusly 20:35
moritz it should really be eval_dies_ok 'module MY;'
jnthn Now in my names-cleanup branch
===SORRY!===
Cannot use pseudo-package MY in a package name
also...
moritz much better
jnthn ok !eval('module SUPER; 1'), 'SUPER is an out of scope name';
Is SUPER really spec?
moritz no
I think I removed that recently
jnthn ok, then I kill that test
moritz (it was mentioned but not really specced) 20:36
masak SUPER is ex-spec.
it has ceased to be.
jnthn I ex-spected that was the case. 20:37
eval_dies_ok 'module CONTEXT;', 'CONTEXT is an out of scope name'; 20:39
That one became DYNAMIC, I guess?
moritz yes, I think so
\o/
I've managed to fudge in the type constraints
it's getting more evil by the minute :-) 20:40
nqp::bindattr ftw
jnthn OK, then that's one of the test files my names-cleanup branch has made unhappy fixed/improved. :)
moritz gist.github.com/2379772 # now with type checks 20:45
jnthn Wow. And since you are generating them at compile time int he trait, then the compilation unit using the module gets the compile-time type checking. :)
moritz it needs to be compile time for them to be installable into a lexical scope 20:46
jnthn Aye
Mostly just being happy that you can be really dynamic in a module, then present a static, analysable view to the outside world. 20:47
masak 'night, #perl6 20:49
masak dream really dynamically, then present a static, analysable view to the waking world :) 20:50
jnthn 'night, masak 20:50
moritz enough meta brain damage for tonight 20:54
moritz also goes to bed
jnthn 'night moritz
tadzik masak: \o/ 21:35
oh, evrybody's sleeping
jnthn o/ tadzik :)
tadzik \o/ 21:36
tadzik 's back from geocaching
spider-mario \o 21:37
sjohnson ( `ー´) 21:42
tadzik (´ー` )
sjohnson hehe 21:43
tadzik ( ° ー°)<( Are you laughing at me? ) 21:44
:P
all fat faces in action!
sjohnson needs more fat face emoticons 21:46
dalek kudo/name-cleanup: 4de6f1d | jnthn++ | src/Perl6/ (2 files):
Fix handling of the anonymous name :: and avoid some duplicate work in package_def.
21:55
kudo/name-cleanup: f262bbb | jnthn++ | src/Perl6/World.pm:
Add PARENT to the list of recognized pseudo-packages (though it is NYI).
kudo/name-cleanup: 6a30cd3 | jnthn++ | src/Perl6/World.pm:
Fix thinko in hanlding pseudo-packages in type names.
kudo/name-cleanup: c78bab9 | jnthn++ | src/Perl6/World.pm:
Re-disallow declaring GLOBAL.
jnthn tadzik: Were you working on keyhash/keyweight? Did you block on something with them? 22:01
tadzik jnthn: I think they were mostly working 22:02
oh, I may have some refactors lying around, hold on
roles stuff iirc, yes
I was tackling that on GPW
I'll try to rebuild it
tadzik jnthn: oh, ISTR we didn't come to the conclusion regarding roles and BUILD or so 22:08
felher Hm: 'class X::Syntax::Variable::Match does X::Syntax' and 'class X::Syntax::Variable::Numeric does X::Syntax '. This means that you can not catch those exceptions with 'when X::Syntax::Variable', doesn't it? OOC, is this just NYI, not yet specced/decided, or will there never be a complete hierarchy? 22:10
jnthn Package names and role compositoin or inheritance aren't related at all in the language. 22:13
tadzik: Oh...hm.
tadzik now I get maximum recursion depth exceeded in Stringy, ~, Stringy, ~... 22:17
felher jnthn: yeah. That part was just a recap to assure i didn't get something completely wrong, or it it's some kind of boostraping issue with something hardwired somewhere in rakudo. Do you have an answer to the second part, also? :)
jnthn felher: moritz++ is the best person to answer that, since he's designing the hierarchy in question. It seems reasonable to have an X::Syntax::Variable though, at first blush. 22:18
tadzik jnthn: wklej.org/id/731188/ is the patch. It may be a little off, I got some merge conflicts when I tried to apply it
jnthn tadzik: That often winds up being an error reporting failure.
tadzik I'm now trying to recall what was on my mind
I think what I ended up with is keeping and initializing %!storage in a Settish role and then using the accessor method in the classes 22:19
felher jnthn++: Thanks for your answer, as ever :) I want to talk to moritz on the morrow anyway :) 22:22
dalek kudo/name-cleanup: 921de87 | jnthn++ | src/Perl6/ (2 files):
Implement :: on the end of a name meaning .WHO, so now Foo::<&bar>() style things work.
22:32
jnthn Time for some rest & 22:46
[Coke] wants an IRC client that uses irssi when I'm here, but the weblogs when I return. 23:03
[Coke] ... are the names in the weblog color coded? TimToady keeps showing up bold-green. 23:09
flussence [Coke]: I guess some of them are hardcoded - p6eval is too 23:57
(it seems to use a stable hashing algorithm as well :) 23:58