perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
s1n pmichaud: yay, i made a difference :) 00:09
Tene rakudo: !!! 00:13
p6eval rakudo 96de99: OUTPUT«Syntax error at line 1, near "!!!"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
Tene syntax error?
!!! is NYI?
rakdo: ???
rakdo: ...
rakudo: ??? 00:14
rakudo: ...
p6eval rakudo 96de99: OUTPUT«Syntax error at line 1, near "???"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤» 00:15
rakudo 96de99: OUTPUT«No exception handler and no message␤current instr.: 'return' pc 17364 (src/builtins/control.pir:39)␤»
Tene Huh.
00:16 justatheory_ left 00:17 rocket_guatemala left
TimToady rakudo: ... message 00:24
p6eval rakudo 96de99: OUTPUT«Statement not terminated properly at line 1, near "message"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤» 00:25
TimToady std: ... message
p6eval std 26570: OUTPUT«Undeclared routine:␤ message used at 1 ␤ok 00:02 35m␤» 00:26
TimToady std: ... 'message'
p6eval std 26570: OUTPUT«ok 00:02 35m␤»
00:28 bacek_ joined 00:36 nihiliad joined
wayland76 TimToady: I'm working on a Perl6 keyboard layout for XCB (ie. XWindows). Are there any characters you particularly want on it? I've already got lots of quoting constructs, and the "cents" sign. Anything else? 00:53
00:56 km2 joined 01:01 rocket_guatemala joined 01:02 justatheory joined 01:03 rocket_guatemala left
TimToady hiragana? :) 01:04
wayland76 Oh, did I mention Greek? That too :)
It would probably be possible to set it up so that hiragana is an option, if people want that. But I was more asking if there were any other Unicode characters you were planning to put into Perl6 01:06
TimToady std: sub αβγ {...}
p6eval std 26570: OUTPUT«ok 00:02 35m␤»
TimToady you mean, besides all of 'em :)
wayland76 I had a rakudobug when I tried something like that on it.
TimToady missing icu?
wayland76 TimToady: Yeah, I meant a limited number that might be used for operators or other special things like that 01:07
TimToady rakudo: sub αβγ {...}
p6eval rakudo 96de99: ( no output )
TimToady well, various latin-1 chars are more likely, though long term we'll end up using some number of the mathy ops like set ops
wayland76 rakudo: my $αβγ = 1 01:08
TimToady seems like a compose key is more useful than a keyboard
p6eval rakudo 96de99: ( no output )
01:08 amoc left
wayland76 rakudo: my $αβγ = 1; print $αβγ; 01:08
p6eval rakudo 96de99: OUTPUT«1» 01:09
wayland76 I think it's fixed :)
Ok, I was planning on working Latin-1 stuff in somehow. and I'm assuming that the ISO standard Ctrl+Shift+U123 works, and multiple levels and stuff. 01:10
I'll look at the set operators particularly, though
(since you mentioned them)
TimToady then there's APL :P
wayland76 I've got them already :) 01:12
Well, I'm working on them, anyway :)
01:14 sephee joined
TimToady I'd like a keyboard I can define my own compose sequences on the fly :) 01:14
01:15 PhatEddy joined
wayland76 TimToady: Seen the Avant Stellar? 01:15
www.cvtinc.com/products/keyboards/stellar.htm 01:16
01:17 hercynium joined
PhatEddy rakudo: say $*NOTDECLARED 01:18
p6eval rakudo 96de99: OUTPUT«Use of uninitialized value␤␤»
PhatEddy rakudo: say ''
p6eval rakudo 96de99: OUTPUT«␤»
PhatEddy With the NOTDECLARED - there's an open RT #57578 but I am not sure there is still a problem. Anyone see one? 01:20
01:23 japhb left
TimToady can't complain at compile time because you don't know what your dynamic context will be 01:24
and $* will look up the dynamic context
PhatEddy Does the S02 proclamation "Most variables with twigils are implicitly declared or assumed to be declared in some other scope" apply here? 01:25
TimToady yes 01:27
with $*, the closest analogy is environment variables
until you run the program you don't know whether it's defined at all
it's just we're treating every dynamic scope as a "process" in that sense 01:28
PhatEddy That ticket has not been updated in about a year so I will just forward the conversation to moritz (the author) and let him mull it over. thx 01:29
pugs_svn r26571 | azawawi++ | [S:H:P6] version 0.48 contains STD which now warns about redeclared variables 01:30
01:39 azawawi joined 01:40 dukeleto joined
azawawi TimToady: how can i differentiate between an STD error and warning? I need to display them in separate categories in Padre Perl6 error list. 01:40
TimToady for now, it always puts the warnings at the end, after "Other potential difficulties" or some such 01:41
and currently the undef/redef errors are all warnings 01:42
I suppose I could put out a special marker between
azawawi so PARSE FAILED marks the beginning of errors and Other potential difficulties = warnings... 01:43
TimToady: thx 01:47
01:49 fridim_ left 02:04 azawawi left
PhatEddy std: // 02:04
p6eval std 26571: OUTPUT«##### PARSE FAILED #####␤Can't understand next input--giving up at /tmp/221jjEvDXb line 1:␤------> //␤ expecting ws␤FAILED 00:02 37m␤»
02:10 silug joined 02:12 SamB left 02:13 SamB joined 02:14 nbrown joined 02:17 justatheory left 02:20 PhatEddy left 02:21 alester left 02:23 nbrown left, nbrown joined 02:47 eternaleye joined 02:59 agentzh joined 03:08 japhb joined 03:15 sri_kraih joined 03:17 agentzh left 03:20 Limbic_Region left 03:21 hercynium left
pugs_svn r26572 | lwall++ | [gimme5] modify ||'s eval{} to allow panics through 03:26
r26572 | lwall++ | [STD] parse \c, \o, \x consistently, helmut++
r26572 | lwall++ | [STD] give better error message on //, PhatEddy++
03:35 sri_kraih_ left 03:37 orafu left, orafu joined
s1n perl6: my %p = <a 1 b 2>; for %p.keys -> $key { say %p<$key> } 03:39
p6eval elf 26572: OUTPUT«Not a HASH reference at ./elf_h line 260.␤ at ./elf_h line 5881␤»
..pugs: OUTPUT«␤␤»
..rakudo 96de99: OUTPUT«Use of uninitialized value␤␤Use of uninitialized value␤␤»
s1n so what am i doing wrong with that?
if i say just $key or %p<a> (or b), it works 03:40
03:42 alanhaggai joined
pugs_svn r26573 | lwall++ | [Cursor] fix bogus duplicate enum warnings 03:42
TimToady %p{$key}, not <$key>
<$key> is equiv to {'$key'} 03:43
s1n oh yeah, i keep mixing that
<> and {} still doesn't seem intuitive yet
TimToady <> always quotes
03:43 agentzh joined
s1n (this is totally out of honest curiousity, not judging) what was the need that made <> necessary? 03:44
TimToady consistency with the qw form, convenience without special-casing {} like p5 does 03:45
and the fact that so many hash lookups are done with fixed keys anyway
not all of which are identifiers
s1n oh okay (i always liked how {} made me / allowed me to do what i wanted) 03:46
i typically never have fixed lookup things :)
TimToady and it became more important with adding the sigil into the variable name: CALLER:<$x>
CALLER::<$x> rather 03:47
s1n what's that? 03:48
TimToady same as $CALLER::x
s1n or better, where's that?
TimToady but gets the sigil where it belongs
likewise OUTER::<$x>, etc
oh, S02:2000 or so
fetch kid from karate & 03:50
03:56 ab5tract joined 03:59 sephee left 04:03 alanhaggai left 04:04 SamB left 04:06 sri_kraih_ joined 04:09 angelixd left 04:21 Kisu left
pugs_svn r26574 | lwall++ | [STD] allow any radint inside \c[...] 04:23
04:25 justatheory joined, bacek left 04:26 sri_kraih left
pugs_svn r26575 | lwall++ | [STD] put role params into new pad 04:36
04:38 sri_kraih joined 04:39 lambdabot left 04:41 lambdabot joined
pugs_svn r26576 | lwall++ | [hyper.t] dedup class 04:56
04:58 sri_kraih_ left
pugs_svn r26577 | lwall++ | [STD] lexical Foo::Bar symbols should be rooted in current lexpad 04:59
05:08 ejs joined, skids left 05:12 zamolxes left
pugs_svn r26578 | lwall++ | [eval.t] dedup EvalTester class 05:13
05:16 orafu left, orafu joined
pugs_svn r26579 | lwall++ | [rule-in-class-Str.t] start turning 'is also' into 'augment' to see who screams :) 05:18
r26580 | lwall++ | [times.t] dedup $stop 05:22
TimToady zzz & # now dejetlagged to somewhere between CDT and MDT :) 05:30
05:33 justatheory left 05:44 lambdabot left 05:48 lambdabot joined 05:49 lambdabot left 05:53 meppl joined, lambdabot joined 05:54 lambdabot left 05:56 ejs left 05:58 lambdabot joined
literal perlgeek.de/blog-en/perl-6/tidings-....writeback 06:21
moritz_: hm, post from the future? :P
moritz_ literal: so to say ;-) 06:23
TimToady: Rakudo screams. I've submitted a patch to RT that turns 'is also' into 'augment', but I didn't want to apply it because it breaks too many of the test 06:26
pugs_svn r26581 | moritz++ | [t/spec] remove pointless test import.t 06:28
06:35 amoc joined, ab5tract left 06:41 iblechbot joined
pugs_svn r26582 | moritz++ | [t/spec] simplfiy eval.t to not use lexical classes 06:46
06:50 azawawi joined 06:56 DemoFreak joined 07:05 amoc left 07:09 azawawi left 07:12 amoc joined
arnsholt rakudo: class A { method x { say 1; } }; class B is A { method x($self:) { A.HOW.dispatch(self, "x"); } }; (B.new).x; 07:12
p6eval rakudo 2faf4b: OUTPUT«1␤»
arnsholt rakudo: class A { method x { say 1; } }; class B is A { method x($self:) { A.HOW.dispatch(self, "x"); } }; B.x; 07:13
p6eval rakudo 2faf4b: OUTPUT«maximum recursion depth exceeded␤current instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:98)␤»
arnsholt Is this a bug, or something about dispatch of static method invocations I'm missing? 07:14
07:18 wayland76 is now known as oracle
oracle Reply hazy. Ask again in 4 hours :) 07:18
07:18 mberends joined, oracle is now known as wayland76
moritz_ arnsholt: I don't know. In case of doubt submit it as a bug, and have it rejected if it's not a bug after all ;-) 07:19
wayland76 Ooh! SOmeone who knows stuff is awake! My apologies!
lambdabot wayland76: You have 3 new messages. '/msg lambdabot @messages' to read them.
moritz_ who? ;-)
wayland76 moritz_: Well, compared to me, anyway :)
mberends @tell masak git pull proto - dogfood patch :) 07:20
lambdabot Consider it noted.
arnsholt moritz_: Sounds sane enough 07:21
07:26 alanhaggai joined
eternaleye (re embedding the git revision) Why not do something in tools/ that generates, say, a RakudoVersion.pir (.include'd where appropriate) containing the appropriate content for -V, that gets called by the makefile when building a binary? the script in tools/ could check for .git, and if it isn't present, use a commitish from a file. 07:31
mberends eternaleye: aye. would it be able to generate some kind of ascending sequence in the version, eg 09-04-nnn as previously discussed? 07:35
Of course it could, if we want it to. Friendlier than (abbreviated) SHA-1 id. 07:40
Matt-W Morning 07:43
mberends Matt-W: Morning
07:48 nihiliad left 07:56 riffraff joined
eternaleye mberends: run this in your rakudo clone: export LAST_TAG=`git tag -l '????-??' | sort -r | head -n 1`; echo $LAST_TAG `git log refs/tags/${LAST_TAG}..HEAD --pretty=format:'%h%n' | wc -l` `git log -1 --pretty=format:%h` | perl -nlpe 's/\s+/:/g' 07:58
Should give the right string
The export is necessary because `...` creates a nested scope. 07:59
The real issue will be rewriting that in pure perl instead of POSIX shell for the win32 folks 08:00
08:01 rindolf joined, rindolf left
Matt-W But Perl's really good at just that sort of thing :) 08:02
eternaleye dpaste.com/39539/ 08:09
It was easier than I thought.
Just 4 lines :D
08:10 amoc left
eternaleye Although, reverse( sort() ) and shift() might be clearer 08:10
moritz_ or $throwaway[-1]
eternaleye facepalms 08:11
It followed from that it was initially pop( sort() ), and I only added @throwaway when perl complained about needing an array, not a reverse 08:12
08:12 ejs joined
moritz_ use List::Util qw(maxstr); 08:12
(it's a core module) 08:13
eternaleye Yeah, I still haven't got what's in core affixed in my brain. Still, my code does accomplish its goal, and it really was just a JFDI to myself. 08:17
I just realized how perfect an example this could be of bikeshedding XD 08:18
08:27 eMaX left 08:37 masak joined
mberends eternaleye: Good example :) Looks adaptable to other formats if preferred. Incrementing a counter in a file, similar to parrot/VERSION would be an easy extension. 08:42
masak mberends: Goedemorgen, meneer. 08:44
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
masak @massage
lambdabot mberends said 1h 23m 41s ago: git pull proto - dogfood patch :)
masak :) 08:45
masak pulls
mberends: cool. 08:46
mberends masak: huomenta (?)
masak that's not Dutch, is it? :) 08:47
mberends quite. submitted a P6 for P5 devs talk proposal for YE2009. 08:48
masak splendid. 08:49
ah. Finnish.
well, World TakeOver Plans should include flooding YAPC::EU talks with P6 stuff. :) 08:50
kane_ classic clues that you are reading finnish: 1) I is the most common vowel. 2) there are K's everywhere 3) every letter is repeated at least once in sequence
mberends heh
masak only (1) applies here, though.
kane_ funny observation in a dutch store. there's a brand called 'euroshopper', which is present in the UK, holland, germany, sweden, finland (and 1 or 2 more of 'those' countries). as such, the name of the product is written in dutch, swedish, etc on the package 08:52
now assume the length of the name is X in dutch/swedish. it is guaranteed >3X in finnish
it's like freaking entish at times
masak it's a tradeoff. 08:53
the win is structure and logic.
(or so I've been told)
kane_ and 17 different cases (german has 4 and even THAT is confusing)
masak meh. Finnish is easy. even small children can learn it.
kane_ making finnish rank extremely high on the 'hard to learn' curve... but yeah, the finns seem to manage just fine :)
mberends it's said that 3 year olds in every nation have no problem learning the lingo. 08:54
kane_ i learned 4 out of 5 languages i speak before the age of 8
after that.. it got significantly harder
masak mberends: I like your dogfood patch, but it has an unfortunate hidden assumption -- do you see it? 08:55
mberends masak: I thought about the installer process overwriting its own source file, but the compile/execute mode should survive that. I guess you mean something else... 08:56
masak yes. 08:57
think about a recent commit you made.
mberends ok, I give up. suspect that directories are somehow involved. 09:01
masak "default rakudo and project directories to be same as where proto is installed, so that they all become siblings." 09:02
but... it's only a default.
not an inherent rule.
which suggests that proto needs to be marked as special somehow in projects.list 09:03
mberends ah, so the proto project needs an exception for itself... like you're saying
masak I've been thinking of this for a while, and if we eventually include rakudo and parrot,
they should be marked as special in the same way.
mberends agreed.
masak I suggest settting 'type' to 'meta' or some such.
"masak's third rule of projects: every project evolves to contain the term 'meta' somewhere" 09:04
mberends relatedly, I'm creating a Gitorious repository account to raise the baskets/eggs ratio. 09:05
masak excellent.
for what project?
wayland76 (Incidentally, Quenya is based on Finnish, in some ways :) )
masak wayland76: aye.
and Latin.
mberends I think forking HTTP::Daemon out of perl6-examples will help dependent installations. 09:06
masak mberends: if you do that, I'll cede the need for a copy in Web.pm
and introduce a dep instead.
mberends exactly, the right way forward imho. 09:07
masak 是.
09:09 wayland76 left
masak chooses to mark proto as type 'bootstrap' instead of 'meta' 09:09
09:09 bacek_ left
masak mberends: Druid grew and grew until it sort of burst out into a class hierarchy. I suspect proto will follow the same path, if it's still needed when it reaches that point. proto precompilation will then become an extra installation step. 09:11
mberends good idea. 'installer' startup time is a little slow. that does mean a small 'installer' main program calling some kind of 'meta-installer' (sorry) PIR module. 09:14
masak three lines. 'use v6;' 'use Proto::Installer;' 'Proto::Installer.run(@*ARGS);' 09:17
we need that, too, if things like WTOP are supposed to use proto's API to query about all known Perl 6 projects. 09:18
mberends I'll have tuits later today, if you want to delegate the refactoring. 09:20
masak oh, gladly. 09:21
I'm doing the 'bootstrap' patch now, but then I'll leave proto alone for the day.
09:21 ejs left 09:22 ejs joined 09:24 c9s_ joined 09:32 c9s left
jnthn morning, 6folk 09:35
masak jnthn: oh hai
jnthn: Rakudo day today?
jnthn masak: No, tomorrow. 09:36
Too many distractions today.
masak ok. tomorrow is actually better. 09:37
Uppsala is pretty distracting today as well.
and not in a good way. :/
mberends tax returns are also distracting :( appropriate amount of fun <= 0 09:38
masak bute sub of the day: gist.github.com/104370 09:43
s/bute/cute/
hm, we have &lines in Bratislava. \o/ 09:44
masak fixes
jnthn .grep({$^keep-all-nonempty-lines}); 09:45
:-)
masak jnthn: that's what makes it cute.
jnthn Yeah, took me a moment to catch on...
masak :) 09:46
self-documentation.
mberends: I just force-pushed to proto on github, so if you pulled in the past half-hour, you might need to force-pull. sorry about that. :/ 09:51
mberends masak: git pulled now, all fine :) 09:52
masak phew.
in 'do not rebase upstream' is not a restriction in git istelf, only in its culture.
(and rightly so, of course)
ok, proto now assumes Bratislava or higher, not Oslo or higher. 09:54
09:56 bacek joined
masak leaves proto for the day 10:02
I like reading the comments in the 'installer' script. they all go 'when this happens, we need to think of this', '...and this', '...and this would be nice'. all very YAGNI. 10:03
10:05 c9s joined 10:21 c9s_ left
Matt-W masak: Nice way to have comments 10:28
Too many things don't have enough comments
or the wrong kind of comments
Form needs more comments 10:29
jnthn suspects "'Do tha' stuff" counts as the wrong kind of comment
Matt-W Generally one prefers a slight increase in precision regarding what stuff to do :) 10:34
jnthn It's the one "English" comment in a file I just came accross. 10:41
Matt-W What are the other comments written in? 10:48
masak Swedish, I'd guess.
jnthn: you've mentioned that comment before. commenting is somewhat of an art, I think. 10:49
(one that I don't claim to be good at, but I'm slowly learning.)
jnthn Aye, that one is an extreme example of how to be completely useless. 10:50
masak somewhat higher on the scale, I'm becoming increasingly annoyed by commented-out code with no reason given for commenting it out. 10:51
it's becoming one of those "pet peeves" of mine. 10:52
10:52 payload left
jnthn I've got a load of it in one system I'm working on. It was all generally old code that was replaced. 10:52
Matt-W I try to tidy that sort of thing up when I've finished playing 10:53
masak Matt-W: well, me too. but I play in-between commits.
Matt-W I make no apology for the mess that is Form's code right now, I'm still playing with that
masak Matt-W: no apology needed. I don't presume to impose my coding standards on others. 10:54
jnthn (They had no version control before I took over, so I guess no way to get back to older versions.)
10:54 meteorjay left
masak jnthn: bitrot works much faster on commented-out code, as evidenced by the code in our DNA. 10:55
and that codebase has _no_ explanatory comments whatsoever. 10:56
10:56 Jedai left 10:57 Jedai joined
jnthn Oh, for sure it does. 10:57
My inclination has been to rip out commented out code rather than maintain it. 10:58
masak jnthn++
jnthn Some of it has no doubt been commented out 5 years ago or maybe more.
masak ouch.
masak moves to another hacking location 11:01
11:01 masak left 11:18 payload joined 11:21 fridim_ joined 11:27 zamolxes joined 11:28 iblechbot left 11:38 masak joined 11:39 hanekomu joined 11:41 |Jedai| joined 11:46 DemoFreak left, DemoFreak joined
moritz_ rakudo: say " ab ".trim 11:48
p6eval rakudo 2faf4b: OUTPUT«ab␤»
moritz_ masak: that can simplify your cute sub from earlier even more
masak moritz_: thank you. 11:49
mberends: just diving in to fix that. pull --rebase as needed.
mberends oki :) 11:50
frettled jnthn++ - I tend to agree, at least as long as we have version control and can track the changes, that's _far_ more useful.
masak rakudo: say [" a", "b ", " c "].map({.trim}).perl 11:51
p6eval rakudo 2faf4b: OUTPUT«["a", "b", "c"]␤»
masak rakudo: say [" a", "b ", " c "].map(*.trim).perl
p6eval rakudo 2faf4b: OUTPUT«["a", "b", "c"]␤»
masak Rakudo++
frettled :)
moritz_ @karma Rakudo
lambdabot Rakudo has a karma of 11
moritz_ @karma rakudo
lambdabot rakudo has a karma of 11
moritz_ *.method is cute
frettled @karma jnthn
lambdabot jnthn has a karma of 244
moritz_ @karma moritz
lambdabot moritz has a karma of 577
moritz_ @karma moritz_ 11:52
lambdabot You have a karma of 53
moritz_ commits > irc
frettled @karma masak
lambdabot masak has a karma of 143
masak moritz_: it works very well with map, too.
frettled everyone who matters have better karma than rakudo. ;)
11:55 Jedai left
jnthn @karma TimToady 11:58
lambdabot TimToady has a karma of 31
jnthn he matters too!
11:59 alanhaggai_ joined
masak jnthn: and he has better karma than rakudo. it still works. :) 11:59
moritz_ @karma lwall
lambdabot lwall has a karma of 319
moritz_ lambdabot has lost much of its karma records it seems
@karma audreyt
lambdabot audreyt has a karma of 16
moritz_ perlbot used to have good karma records, but it's not in here anymore 12:00
masak we need a bot written in Perl 6. 12:01
pmichaud good morning, #perl6 12:02
masak pmichaud: good * 12:03
hanekomu is leaving use.perl.org. use.perl.org/~hanekomu/journal/38895
frettled @karma pmichaud
lambdabot pmichaud has a karma of 391
frettled @karma lambdabot
lambdabot lambdabot has a karma of 0
masak I agree with much he's saying, but I want to stay for now.
hanekomu masak: yes, it's just too painful
frettled lambdabot++
hanekomu dagolden++ 12:04
masak it'd be nice to help improve use.perl.org somehow.
hanekomu the front page might just aggregate journals entries, but then there's no point in having them in use.perl in the first place - there are enough aggregators already 12:05
frettled masak: that way leads the road to madness ;)
hanekomu and the journals are a bit low-tech
plus
you'd have to convince pudge, which, from what i've heard, is a bit... difficult
maybe if you packed your request into a political song, you might get a reply
masak hanekomu: I hear what you're saying. and I've been frustrated with use.perl.org many times in the past 8 months. 12:06
jnthn sings...The democrats will lose, only if you choose, use.perl's resurrection, before the next election... 12:07
hanekomu I think it only still exists (in any relevant form) because of the journal writers.
masak plus, the site was ugly even at the time when sites were designed like that.
hanekomu yeah :)
jnthn I only post on use.perl.org because it seems to still have some readership, but if less and less people post there it's only going to lose it... 12:08
Matt-W It's also very slow 12:09
hanekomu Matt-W: yes. It's ok if you adblock all that crappy JavaScript. 12:10
It doesn't look much different without it...
masak adblocking the crappy javascript. good idea.
masak does that
frettled adblock? 12:11
NoScript!
Anybody browsing the web should either disable JavaScript etc. completely in their web browser, or use Firefox with NoScript.
ben :\ 12:12
frettled (web browsers that don't support active client-side content excepted, of course)
ben So many sites rely on JavaScript :[
frettled the amount of 0-day exploits isn't even funny
ben: which is why NoScript allows you to permit javascript semi-selectively
ben I realise that, but it still sounds like a chore.
Also I might not even realise a site would be more usable with javascript when just using it without it. 12:13
12:13 alanhaggai left
frettled it's a bit bothersome, but not quite as bothersome as to watch your browser crash and burn, have your computer turned into a useful zombie for spamming/attacking others, etc. 12:13
LylePerl Please have tried to update use.perl.org before, but pudge isn't having any of it
Please = People
It's like some of the other Perl sites and I find it really upsetting 12:14
lists.cpan.org hasn't worked for ages, I offered to fix and update it but was given a flat "no thanks"
It's like the Perl success stories on www.oreillynet.com/pub/a/oreilly/pe...ories.html 12:15
pmichaud how many spectests do we lose by converting 'is also' --> 'augment' ? 12:16
masak pmichaud: let me know when you do, please :)
LylePerl I offered to update that with modern success stories but got no where :(
moritz_ $ ack -l 'class.*is\s+also' t/spec|wc -l
14
pmichaud well, it's slightly more than that because some 'is also's involve more than one test 12:17
but it doesn't look like _that_ high a number.
masak rakudo: role A {}; role A is also { has $.foo }
p6eval rakudo 2faf4b: ( no output )
LylePerl It's like some people who control certain core parts of Perl want to to get outdated
moritz_ tests like S04-statements/for.t need to be fudged
pmichaud looking.
hanekomu or just don't care but are too much of a control freak to give any of it up
moritz_ pmichaud: that was the number of files (-l), not of occurences
pmichaud moritz_: ah, yes. thanks. 12:18
12:18 [particle]1 left
LylePerl It's very frustrating 12:18
moritz_ without it's 27
pmichaud surely for.t could be rewritten to not require 'is also'
LylePerl I've been working on a new project, some details at wiki.perlportal.com
pmichaud (or 'augment')
masak hanekomu: couldn't one argue that with the privilege of having use.perl.org also comes the responsibility of listening to the community? 12:19
moritz_ LylePerl: agreed. Luckily the dev.perl.org admins accepted my patches to modernize some of the perl6 pages
pmichaud is also/augment really should be thought of as EVILMONKEYPATCHING
masak pmichaud: well, aren't they specced to need 'use MONKEY_PATCHING'?
Matt-W They were last time I checked 12:20
LylePerl It's annoyed me to the point that I'm thinking, if they aren't going to fix it, then I'll create a modern attractive alterative
hanekomu masak: yes
fridim_ I think only doc.perl.org is fine :/
masak we could patch EVIL_ in there, of course, but... :)
pmichaud masak: perhaps so, but my point remains that unless we're specifically testing 'augment', we probably shouldn't be using it in the tests.
fridim_ s/doc/perldoc/
masak fridim_: that one is very fine.
Matt-W LylePerl: You could make us some amazing sites for Perl 6 :) 12:21
pmichaud LylePerl: creating an alternative is a normal part of 'creative destruction'
12:21 [particle]1 joined
LylePerl Matt-W: Already working on it :) 12:21
fridim_ some catalyst clean code with great CSS :)
masak it's sad, because use.perl.org is a very nice domain name.
frettled yep
pmichaud the main reason I post on use.perl.org is because I'm led to believe that's a primary source for people to get their Perl news. If there's a better location, I'd likely use that.
masak it ought to have a correspondingly nice software. 12:22
frettled use-perl.org is available :)
moritz_ well, then you need blog.perl.org instead
12:22 iblechbot joined
LylePerl pmichaud: Hadn't heard that term before, but you are right 12:22
pmichaud LylePerl: 'creative destruction' comes from economics, where new businesses replace older ones
arnsholt pmichaud: Creative destruction, that's Bakunin, right? 12:23
Ah, right. Not Bakunin then
LylePerl They could have news.perl.org and link it up with perlsphere and you've already got a better use.perl.org
masak I'm conservative; I'll probably be one of the last to leave the sinking ship that is use.perl.org. but I'll happily try new alternatives as they arrive, and I hope that one will eventually replace use.perl.org 12:24
moritz_ it would be nice to have a leaner, selected feed, and a broad, cover-all feed
LylePerl I'm going to provide perl moveable type blogs at blog.perlportal.com 12:25
Then several plagger agregators at news.perlportal.com
Matt-W Oooh 12:26
masak I want something where the HTML markup is less crippled. a non-ugly layout would be nice, too.
LylePerl PerlSphere has got a bit big, things need to be broken down 12:27
Matt-W Just something clean and simple would suit me
When I'm doing sites I have no patience for cross-browser compatibility hacks
masak amen to clean and simple.
Matt-W Probably a good thing I don't do them for a living
LylePerl I was thinking that maybe things could be split by tag. Such that a blogger would add the tag Adv, Int or Beg and the aggregator would know to put it in the advanced feed, etc 12:28
moritz_ I don't like the division by skill level
that would be good for tutorials, but nto for blogs
masak agree.
most often, I don't write at a particular skill level. 12:29
I just write stuff.
Matt-W It's hard to think in skill levels
Stuff I think is easy some people find really hard
ben I am a beginner with perl but I do not think I would be interested in a feed tagged as being of low skill level
LylePerl I just thought that someone new to perl might be put off by reading really complicated posts they don't understand, so could select more basic stuff they'd find useful
Maybe I'm wrong... Still early days
Matt-W I think as long as they're titled appropriately, a beginner can easily pick out the kind of thing that covers basics 12:30
masak LylePerl: it's an example of categorization, which works good in theory but bad in practice.
see www.well.com/~doctorow/metacrap.htm for other examples.
jnthn -> slovak class 12:31
12:31 payload left
LylePerl I'll cross that bridge when I come to it. Still got a lot to do. Anyone who is interested in getting involved details are at wiki.perlportal.com 12:32
masak jnthn: mať zodpovedajúce množstvo zábavy!
LylePerl feels like he's hijacked the channel and gone off topic so will stop now
masak well, blogs are an important part of the Perl 6 community as well. 12:33
Matt-W Yes 12:34
I even wrote a blog entry about Perl 6 once
masak Matt-W: you too? :)
pmichaud I think blog discussions are on-topic for Perl 6 -- we're often looking for better ways to "get the word out" about what is happening with Perl 6. 12:35
Matt-W masak: don't you remember? It was about action methods for grammars 12:36
pmichaud and yes, having use.perl.org as a primary outlet for p6 news often is at cross purposes with what we're hoping to do
12:36 ejs left
masak Matt-W: I remember it. it was good reading. please write more. :) 12:36
Matt-W masak: I probably will write one about Form itself at some point before too long
If I get into the habit I'll have to see about getting onto planet perl 6 12:37
moritz_ that's why I'm spilling Perl 6 stuff on the ironman aggregator
masak Matt-W: when the time is ripe, I plan to review your project.
frettled moritz_: ditto
Matt-W masak: meep
masak :)
Matt-W How are you on text justification algorithms?
I'm sure you can come up with a better one
masak Matt-W: make sure you write code that stands public review, s'all. no pressure. :) 12:38
moritz_ no justifications; it's forgiveness here :-) 12:39
Matt-W Oh it mostly does
It's just a bit scrappy in places
masak all projects are.
Matt-W I accept patches for tidyings :)
masak Matt-W: that's much of what a review is about.
Matt-W: when I reviewed Pod::Parser, I also sent 10 patches in a pull request to mberends. 12:40
Matt-W :)
I started using reduction operators
frettled Hey, I got good feedback for changes to my blog here, and I even implemented them.
Matt-W they're fun
masak aye. 12:41
Matt-W It's like having foldr, but the syntax is nicer
masak moritz_: I got this idea to code-review the spectest suite. given time, I might do that this weekend.
Matt-W [+] @list instead of foldr (+) 0 list
moritz_ masak: if that results in patches... good 12:42
masak :)
moritz_ masak: it's full of repetitions, and thus very bad code in very many places
masak I think it would.
moritz_: sounds promising.
Matt-W yay
go masak
moritz_ but there's also a point to it - not using fancy features improves the chances of running them by early implementations 12:43
masak I'm not sure that's such a strong argument. 12:44
but I will know when I look at actual repetitive code.
for loops are still a fairly simple construct. 12:45
12:45 hanekomu left
pmichaud I agree -- I'd like the tests to focus more on the feature they're testing and less on using some other fancier construct in the process. 12:45
moritz_ the second point is fudging 12:46
having tests in a data structure makes fudging much harder
masak nod. 12:47
because fudging is out-of-band and selective on certain functions.
moritz_: one could make two data structures in such a case; one with unfudged tests, and one with fudged ones. 12:48
moritz_ masak: that doesn't scale for multiple implementations 12:49
masak oh. you're right. 12:50
:/
frettled simple tests for simple problems, eh?
masak how many implementations are currently targetting the spectest suite, using the fudging system?
12:51 alanhaggai_ left
moritz_ currently only one 12:51
masak I call YAGNI. 12:52
moritz_ two, actuallz
pugs does
masak ok.
moritz_ and elf could be, if mncharity set up a proper test harness
I'd be willing to help with fudging 12:53
frettled mmm, fudge
12:56 riffraff left 12:58 xinming_ is now known as xinming
PerlJam good swineflu er, morning #perl6 13:03
Matt-W hi PerlJam
LylePerl Is the logo on www.perl6-projects.org/ the official Perl 6 one? Or is it the usual onion? 13:04
moritz_ LylePerl: it's as close to official as we have one
LylePerl: but it's not really final
PerlJam LylePerl: Camelia is official-ish (Larry created her and endorses her :)
13:04 wolverian joined
Matt-W Ow! 13:04
my eyes!
frettled hee-hee 13:05
I suspect that some other stylistic representation of the butterfly is needed for an O'Reilly book.
well, at least in the reference series.
PerlJam frettled: no, O'Reilly has a camel
Matt-W yeah
frettled PerlJam: for Perl 5, yes.
Matt-W the camel is their logo for perl
they'll use it again I think
if they publish programming perl 6
frettled Someone will have to talk with them about that. 13:06
PerlJam frettled: Perl is Perl is Perl is Perl
Matt-W I suppose they could switch to a two-hump camel for perl 6
frettled PerlJam: :)
Matt-W it's too big for a one-hump camel
frettled Matt-W: you mean an actual camel rather than a dromedarian?
Matt-W it might even need a three-hump camel
frettled two camels humping?
Matt-W lol 13:07
the booksellers might not like that
LylePerl It doesn't come across as that attractive to corporate entities...
PerlJam frettled: What makes bactrians "actual camels" and dromedaries not? 13:08
frettled PerlJam: semantics :) 13:09
13:09 masak left
arnsholt PerlJam: They're just two different species of camel 13:10
But when most people say "camel", they usually mean the two-humped version
13:10 ruoso joined, masak joined
frettled this is also a long-standing Perl joke 13:11
ruoso Hello!
frettled that is, I recall it being around around '94 or '95, when I first saw the camel book, I don't know if it's a really old joke.
LylePerl As much as I truly respect Larry's programming abilities... That logo reminds me quite a bit of his website... 13:12
13:15 masak left, km2 left, masak joined 13:16 payload joined
TimToady perhaps O'Reilly could just add a couple butterfly wings to their current camel... 13:19
ruoso I like the camelia... but it's much more a mascot than a logo 13:21
it has some practical problems when you try to use it as a logo
TimToady well, okay, what's the logo of Linux that isn't Tux? :)
LylePerl TimToady: Would you mind I had my designer make a smoothed off version?
ruoso TimToady, linux doesn't really have a logo... 13:22
PerlJam smoothed off?
ruoso TimToady, but tux is considerably more logo-oriented than camelia
TimToady if you want to make big camelia look a little more like the 32x32, esp in the P6, that'd be okay
pmichaud LylePerl: groups.google.com/group/perl.perl6....750d54cbef 13:23
ruoso there needs to be a black-white version as well
TimToady >>ö<< is a valid simplification :)
pmichaud and
groups.google.com/group/perl.perl6....8db755a860
(TimToady's previous musings on the subject) 13:24
moritz_ »ö« even?
13:24 eric256 joined
TimToady that too 13:24
pmichaud Is Camelia from Texas? ;-)
TimToady when she wants to be 13:25
LylePerl Ok. I'll see what we can come up with, I'll post some samples later...
ruoso LylePerl, please consider getting the various applications of the logo as well, if that's possible 13:26
PerlJam having a grey-scale or black and white version would be ncie. 13:28
er, nice
pmichaud misses dalek.
ruoso usually, you need versions for monocolor, 2 colors and 3 colors besides the full color version (although you don't usually want to have a logo with more than three colors) 13:29
TimToady LylePerl: note that the smoothest existing version is pugs/misc/camelia.odg currently, since it's in OpenOffice Draw 13:30
13:31 masak left 13:34 exodist joined
LylePerl ok 13:34
13:35 skids joined
TimToady just had horrors of trying to work from the .png :) 13:36
the 16x and 32x versions are also in pugs/misc 13:37
ruoso: well, maybe we can raise the bar on logos as we have raised the bar on other things :) 13:38
13:38 payload left
TimToady but certainly camelia was designed to decolorize, among other things. it's one of my requirements 13:38
ruoso TimToady, well... yeah... but I'd delegate that raising for a graphic designer ;) 13:39
TimToady pistols at dawn?
ruoso heheh
ruoso notes that he does like the camelia, but it currently stands only as a mascot... we need a logo version of it... 13:40
13:41 jhorwitz joined
skids TimToady: just make sure you trademark her before book publishers do :-) 13:41
TimToady well, I can leave that up to the various Perl Distribution Corporations to come up with
yes, trademark is a potential issue 13:43
13:44 masak joined
pmichaud currently, if a book publisher attemped to use camelia as a trademark, wouldn't that be a copyright infringement? ;-) 13:44
13:45 riffraff joined
TimToady but I'd really rather not have to say »ö«® or even »ö«™ 13:45
PerlJam rakudo: sub time-it { "hi" }; say time-it();
p6eval rakudo 69a37f: OUTPUT«Could not find non-existent sub it␤current instr.: '_block14' pc 68 (EVAL_16:45)␤»
TimToady pmichaud: Oh, I don't doubt we could call them on it, but doing so could induce ulcers
13:52 SamB joined 13:54 [particle] joined
skids They wouldn't use camelia. They'd use a butterfly and TM "the use of a butterfly in association with perl6", so there'd be no recourse :-) 13:55
13:58 km2 joined 14:02 c9s_ joined 14:03 c9s left, c9s_ is now known as c9s 14:05 DemoFreak left
pugs_svn r26583 | lwall++ | [camelia] add a subtle TM to (maybe) prevent theft 14:05
14:06 DemoFreak joined 14:09 mj41 joined
diakopter TimToady: I hope I didn't offend with the all-blown-up camelia... 14:11
I thought it looked really neat way over-anti-aliased 14:13
pugs_svn r26584 | pmichaud++ | Some references and discussion surrounding Camelia. 14:14
r26585 | lwall++ | [camelia] also add subtle TM to odg and svg versions 14:15
TimToady diakopter: the latest version will probably blow up better since it's got more transparency info 14:16
pmichaud TimToady: who/what is Camelia a TM of...? 14:17
(for now, at least?)
skids perlfoundation has lawyers, no? 14:19
diakopter (see the definition of foundation...) :P
14:20 diakopter sets mode: -o diakopter
pmichaud I'm not asking for a full legal treatment; just that normally one says "Camelia is a trademark of {TPF|Larry Wall|...}" 14:20
and I can put that in the camelia.txt file that was just committed. 14:21
14:21 Eevee_ joined
ruoso isn't the fact that we openly published it something that already prevents someone from registering it? 14:21
pmichaud well, trademarks have to be defended, also. 14:22
skids It's not the image itself, perse, it's the act of using it for a certain purpose.
diakopter uspto.gov has no "camelia" registration record (for computer science... there are a couple for other contexts)
but the use of that logo as a 2d/3d recognizable form is already protected by the initial use, afaik, ianal (but my siblings and father are) 14:24
pmichaud it's slightly more complicated than that -- it has to be initial use "in commerce"
afaik, we haven't had a commercial transaction yet.
diakopter sends larry $5 on paypal 14:25
pmichaud although placing camelia on perl6-projects.org is probably a good start. And I have camelia as the logo at github.com/perl6
moritz_ should I also place it on rakudo.de? 14:26
or should rakudo remain unassociated for now? 14:27
pmichaud also, I suppose we should be writing "Camelia" instead of "camelia", since it's a proper name. Camelia might not like the lowercase version :-)
rakudo has its own (temporary) logo -- see rakudo.org and github.com/rakudo
jnthn And given life-size she's a few meters across, it's probably best to do what she likes.
14:27 cj joined
moritz_ pmichaud: that's what I use as well 14:28
14:28 spx2 left, spx2 joined
jnthn masak: (slovak) Did that couple from Google Translate? ;-) 14:29
But yes, I did have. :-) 14:30
masak jnthn: aye. how did I do? :)
I'll be out eating barbecueue food, checking in on you regularly. 14:31
&
skids If I read this right, if we want Camelia to be freely usable across the OpenSource Perl6 community, we actually want to get it legally declared "diluted" at some point, and that's the way to prevent squatting/appropriation.
So yes, using it as much as possible, from as many sources as possible would be good in that case. 14:32
So rather than defending it, the exact opposite -- make it indefensible. 14:33
jnthn masak: Well, you managed to use a couple of words I hadn't seen before. ;-)
pmichaud skids: I'm not sure that's exactly what is wanted. (more) 14:34
it's not only a question of avoiding someone else grabbing the mark such that nobody else can use it
pugs_svn r26586 | lwall++ | [camelia.txt] add some legalese about copyright and trademark status
TimToady feedback welcome
pmichaud we also want to make sure the mark isn't used for inappropriate purposes
i.e., so that someone doesn't start trading on the mark in a way that is contrary to the purposes of the mark 14:35
there are many ranges of opinion on that topic though. :-)
TimToady++ # looks like an excellent start to me 14:36
TimToady I think we have to undilute it before we dilute it :)
skids That may very well be the case :-) 14:37
TimToady anyway, see misc/camelia.txt now
eric256 any idea when web 2.0 came to mean blogs? lol, got a marketing person refering me to a web2.0 page thats nothing but a blog...lame
14:38 alester joined, DemoFreak left
skids en.wikipedia.org/wiki/Trademark_dil...arnishment 14:38
TimToady diakopter: thanx for the bux 14:39
skids We'd want it blurred, but defended against tarnishment.
ruoso eric256, don't be angry... web2.0 is already over... we're getting to web3.0
skids (if I get pmichaud right) 14:40
eric256 ruoso: ;)
pmichaud skids: yes, I think that's about right. Anyway, IANAL, but I think what TimToady++ has put in camelia.txt is a good enough start for now.
14:41 rocket_guatemala joined
TimToady it's unclear whether I'm a better lawyer than a graphic designer, but at least Artistic 1 has stood up in court (for now) 14:42
ruoso TimToady, I think you more as an artist than as a graphic designer... and I think the camelia is a nice piece of art... 14:43
TimToady or would you prefer swords? 14:44
ruoso ;) 14:46
skids Whoohoo I managed to speed up rakudo a whopping 0.5% :-) 14:48
14:48 Eevee left
jnthn ftw 14:48
jnthn hopes he might manage to win us a little more than that cez may 14:49
s/cez/during/ 14:50
TimToady ...not to mention the fact that I have two daughters who are both excellent at graphic design, and a son who has done the cover graphic on *two* books.
ben Is that supposed to speak for your excellent artistic genes, or for knowing when to do outsourcing? 14:51
skids estimates max 2% to be gained by playing with rolling hashes in Parrot Str.
So interesting as a passtime, but not too useful.
TimToady ben: I'll never tell... ;)
pmichaud we really need some profiling capabilities for parrot. :-( 14:52
ruoso TimToady, sorry if it looks that I was just bitching... but I'm honestly trying to make a constructive critique here...
skids The 0.5% came from calculating the current naive hash in some places where it was being left uncalculated, string_make, substr, const_cstring_cache 14:55
Because doing the math while it was in write cache saved pulling the contents into read cache later.
14:56 frew|work left, abra joined 14:57 hercynium joined
skids But there are some places hidden in the parser tools where a string with a calculated hash is manipulated without zeroing the hash, and that's nearly impossible to track down. 14:57
14:57 mofino joined
TimToady ruoso: detailed critique is fine, but meta-discussion tends not to be terribly useful to me, is all 14:57
14:58
ruoso TimToady, fair enough... I'll restrict my talk to the practical logo usage...
TimToady, but, for sure, no hard feelings around it... 14:59
15:06 alanhaggai joined 15:07 Psyche^ joined 15:09 Eevee_ is now known as Eevee, justatheory joined 15:14 rocket_guatemala left 15:19 Patterner left, Psyche^ is now known as Patterner 15:21 pmurias joined 15:33 baest joined
pmurias ruoso: hi 15:37
lambdabot pmurias: You have 1 new message. '/msg lambdabot @messages' to read it.
pmurias ruoso: i can't reproduce the segfault in mildew 15:38
15:40 payload joined 15:48 payload left, payload joined
TimToady maybe we should rename one of the things named "proto". I'm thinking protoobjects could use a shorter name in any case. 15:49
jnthn type object ain't much shorter, but construes its normal use 15:52
Or a common use at least.
ruoso hmm... 15:54
I've been considering prototypes and protoobjects to be about the same 15:55
TimToady I suppose we could just call them types...
ruoso pmurias, hi
jnthn On the other hand, protoobject kinda fits as "prototype", which always made more sense to me than the proto plurality declarator.
TimToady but the idea of "prototype-based" OO is that your parent is a prototype, which isn't what these are about 15:56
jnthn yeah
I'm not sure I'd be too opposed to just calling them types.
I guess they're only one type of thing that represents a type. 15:57
TimToady the main thing is there's no Type type, since p6 types are just undefined instances
jnthn If you allow for punning, then that definition essentially fits for roles too. 15:59
TimToady I guess if we went QM they're most like leptons, as charge carriers with little mass
thinking how we explain it...the type of a type is the same as any instance of the type, er... 16:00
even for those types that can't have instances, er...
PerlJam a one-syllable name would be nice :)
TimToady it's a type carrier the way certain particles are charge carriers, gluons and such 16:01
I suppose we can just say "type object" when "type" is ambiguous 16:03
jnthn type is a slightly hand-wavey thing in Perl 6 anyway. :-)
Given that you can essentially use a value as a type constraint. 16:04
It's just a very limited type.
PerlJam call them models.
TimToady sorry, that's two syllables :)
literal mold
PerlJam literal++ 16:05
I couldn't think of any good one syllable words.
TimToady course, type is three syllables in 日本語...
mold...cast...caste... 16:06
mofino so that's a door, a woman standing, and ... a bunch of boxes stacked together?
PerlJam you could call them "kinds"
TimToady O kinderlein kommet... 16:07
16:07 meteorjay joined
ruoso TimToady, not always... 16:07
actually... depends on what you mean by parent
jnthn, Dog{ :name<Fido> } is not a type
exactly... they are proto-objects 16:08
by the original sense of "proto"
TimToady that's a curried type
16:08 sitaram joined
TimToady that's why they sell curry combs for Dogs 16:08
jnthn ruoso: Depends what you mean by "a type" - for sure you can't write it everywhere you can write type-ish things though... 16:09
TimToady but any time you can name a type, or use .WHAT, it shows up as one of these objects
jnthn Sure, if you name it it works out.
TimToady it's a whatitis 16:10
16:10 [particle]1 left
PerlJam wotsit 16:10
TimToady as opposed to whatisit, which in Hebrew is "mann", iirc
*manna
jnthn Though I hadn't really been expecting that ::T = Dog{ :name<Fido> }; sub foo(T $x) { } would have a sub that only accept types of Dog called Fido though...
(Not sure if you were expecting that either...) 16:11
ruoso jnthn, me neigther
protoobjects are a bit more abstract than types
type is a narrower definitino
TimToady how so?
16:11 sitaram left
jnthn If a proto-object represents all possible values for an instance, then it fits very well as a type. 16:12
ruoso jnthn, that's a definition of a class
jnthn Erm, all possible values for a class...
pmurias literal: mold would create confusion with smop mold's
jnthn ruoso: There is no class object in Perl 6.
ruoso a protoobject is simply a potential object 16:13
jnthn Thus that leaves proto-objects filling the "represents everything in the domain" role.
literal then use the British spelling, mould :)
ruoso it's an "yet to be" object
TimToady that's not how we define class
PerlJam so ... it's a "pot"? :)
TimToady in p6 a class is just a type with a certain kind of .HOW 16:14
that happens to share a metaclass object among multiple values
ruoso right... proto-objects might have whatever .HOW it pleases 16:15
TimToady so .WHAT is really the identity op, while the type is a .HOW carrier
so it's more of a howzit 16:16
so far I'm not getting any bad vibes about renaming protoobjects to types 16:17
pmurias ruoso: p6opaque doesn't work yet in re-mildew? 16:18
16:19 [particle]1 joined
TimToady there's only like 464 uses of the term already in the specs... :) 16:19
pugs_svn r26587 | pmurias++ | [re-smop] fixed some warnings and a leftover smop_lowlevel_alloc in p6opaque 16:21
16:21 Util joined
pmurias ruoso: i'm porting over Array 16:22
ruoso so you see Dog{ :name<Fido> } as a type? 16:23
I'd see type much more from a Wittgesteinian perspective than a Hegelianian one... meaning... a type is not something that "represents everything in the domain", but "something that we use to define a domain, to the extent we can define it"
so, that way, Dog{ :name<Fido> } isn't a type, because it has no use being used to define a domain
my $dog = Dog.new( :name<Fido> }; say $dog.does(Dog{:name<Fido>});
that returns False
16:23 [particle]2 joined
ruoso pmurias, p6opaque is not yet finished... 16:23
16:24 [particle] left
ruoso but notice that there's no fundamental difference between Dog and Dog{ :name<Fido> } 16:24
the same way as there isn't a difference between Dog and Dog.clone
but if you say 16:25
my $dog = Dog.new; say $dog.does(Dog.clone)
it will also return False
mberends [type] how about ilk: en.wiktionary.org/wiki/ilk
jnthn rakudo: class Dog { }; my $dog = Dog.new; say $dog.does(Dog.clone) 16:27
p6eval rakudo 69a37f: OUTPUT«1␤»
jnthn rakudo: class Dog { }; my $dog = Dog.new( :name<Fido> }; say $dog.does(Dog{:name<Fido>}); 16:28
ruoso hmmm... that surprises me
p6eval rakudo 69a37f: OUTPUT«Statement not terminated properly at line 1, near "( :name<Fi"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
TimToady hmm, "ilk has no plural"
jnthn ruoso: How so?
mberends we could manufacture 'ilken' 16:29
ruoso jnthn, Dog and Dog.clone are different things
TimToady but they have the same type
jnthn I'd never really thought of cloning a proto-object as creating a new type.
PerlJam I like something like "gist" or "essence" or "spirit" or "soul" more than "ilk"
ruoso but .does expects a Type, not something from witch it will take the type from
TimToady you're thinking of protoobjects as prototypes again 16:30
PerlJam (Or just "type" :-)
TimToady there's no such thing as a Type
jnthn Dog{ ... } is still a proto-object, just one with a WHENCE
TimToady all Dogs have the same type, including undefined ones
or more linguistically, including the generic Dog 16:31
ruoso ok... we got the an important point...
PerlJam TimToady: including ones that have traits added to them too, right?
ruoso so far, the spec is pretty liberal in the sense of thinking class-based or prototype-based
TimToady I would think of a Dog with a WHENCE as a partially instantiated Dog
but still a Dog
actually, it's lazy instantiation 16:32
ruoso in my mindset, Dog is the type
I mean... the thing the name "Dog" points to
TimToady since we can't really run the WHENCE until we have a real object to put the attributes in
16:33 riffraff left
TimToady all these things return the same Dog object for .WHAT 16:33
including Dog itself
Dog.WHAT.WHAT.WHAT.WHAT === Dog
Dog.clone.WHAT === Dog 16:34
jnthn Right. And Dog{ :name<Fido> }.WHAT == Dog
TimToady ===
jnthn Right. And Dog{ :name<Fido> }.WHAT === Dog
TimToady basically we treat the issue of instantiation as completely orthogonal to the type 16:35
Socrates does Man
Man does Mammal
ruoso right... 16:36
but...
ok... 16:37
Dog has a pointer to itself as the WHAT
so Dog.clone still points the WHAT to the original Dog 16:38
but...
when you do $dog.does(Dog.clone) 16:39
does it mean it will ask the WHAT of the thing sent as parameter?
TimToady yes
ruoso rakudo: my $a = 1; say $a.does(2);
p6eval rakudo 69a37f: OUTPUT«1␤»
pmurias ruoso: what's the naming convention? some functions are named like SMOP__NATIVE__capture_positional and others as smop_nagc_unlock
ruoso hmm... that's unexpected 16:40
jnthn Heh, I'm surprised Rakudo got that one right...it wasn't what I expected either. :-)
ruoso pmurias, hmm... I think we might just choose one of them...
pmichaud I'm not surprised.
ruoso but is that right?
jnthn rakudo++ though
ruoso: If we call .WHAT on it, it just falls out like that.
pmichaud Rakudo actually does things more through the .HOW than the .WHAT
TimToady well, 2 is a subset type of Int
ruoso in that case it was supposed to fail 16:41
TimToady but subset types don't show up as the types of actual storage
pmichaud i.e. $foo.does($x) is really asking if $foo's .HOW does $x's .HOW
jnthn ruoso: 2.WHaT === Int
1 does Int
ruoso jnthn, I see that this is what happens 16:42
I'm arguing about wether this is sane
pmichaud, .HOW? wasn't it supposed to be .WHAT?
pmurias TimToady: so a objects type would be itself?
jnthn S12 reseves it.
For now Perl 6 reserves the right to change how all these macros
and the corresponding C<^> forms are defined in terms of each other.
TimToady does's arg is taken as a storage type, not as a constraint type
the type of True is Bool 16:43
even though True is a constrained type of Bool
rakudo: True.WHAT
p6eval rakudo 69a37f: ( no output )
TimToady rakudo: say True.WHAT
pmichaud (true is broken in rakudo, sorry)
p6eval rakudo 69a37f: OUTPUT«()␤»
TimToady pugs: say True.WHAT
p6eval pugs: OUTPUT«Bool␤»
ruoso pugs: say 0.does(True)
p6eval pugs: OUTPUT«␤»
ruoso pugs: say False.does(True) 16:44
p6eval pugs: OUTPUT«1␤»
ruoso that really surprises me
16:44 nihiliad joined
TimToady pugs: say False ~~ True 16:44
p6eval pugs: OUTPUT«␤»
TimToady just as Dog{} is a type plus a WHENCE, a constrained type is a type plus a constraint 16:45
ruoso I'd expect the semantics of .does to be the same of $thing ~~ Type
TimToady True is Bool where { 1 }
pmichaud smartmatch is syntactically different, though. (more) 16:46
1.does(2) is different from 1 ~~ 2
16:46 barney joined
jnthn (second is 2.ACCEPTS(1) 16:46
pmichaud but 1 ~~ 2.WHAT is more like what .does does.
jnthn )
ruoso I said $thing ~~ Type 16:47
pugs: my $a = False; say $a ~~ True;
p6eval pugs: OUTPUT«␤»
ruoso pugs: my $a = False; say $a.does(True);
p6eval pugs: OUTPUT«1␤»
pmichaud I don't understand the $a ~~ True meme here
True isn't a type.
it's a special case in the smart match table (Bool) 16:48
ruoso right...
TimToady but subset types are like that, they're named as types, but if you try to use them as a type rather than a constraint, they squirrel off to being their actual base type
this idea comes from Ada, actually
pmichaud not to derail the conversation, but at some point I'd like a clarification on the meanings/dependencies of .true, .Bool, and .defined 16:49
ruoso rakudo: class Dog {}; my $a = Dog.new; say $a.does(Dog.clone); say $a ~~ Dog.clone 16:50
p6eval rakudo 5a02ee: OUTPUT«1␤1␤»
pmichaud and I'm guessing that from what TimToady said above, Bool is not an enum any longer?
jnthn I think Bool is more special than an enum has been established for a while, *but* I'm still not completely clear on exactly what it is either. :-) 16:51
pmichaud I'd really like to get rakudo's booleans straightened up, if only because we get the brokenness illustrated by 16:43 <TimToady> rakudo: say True.WHAT 16:53
16:53 eternaleye left
jnthn *nod* 16:54
Same.
also Rakudo explodes on 0 but True and the like.
TimToady see irclog.perlgeek.de/perl6/2009-04-25#i_1093620
pmichaud well, let's start with a basic question... is there a .Bool method on Object (or Any) ? 16:55
masak backlogging over all your .WHO and .WHAT makes it all look like an Abbott and Costello sketch. 16:56
pmichaud Third base!
masak :)
pmurias ruoso: i'm not sure how to handle in the RI DSL's pairs of types which know each others internals like Array and ArrayProxy and Mold and MoldFrame 16:57
pmichaud i.e., iiuc, the common way to override stringification is to provide a .Str method. Does this generalize to .Bool also, or do we keep .true for that?
masak couldn't we keep the fish =<> as a special term meaning $*IN.get ?
(not an entirely serious suggestion)
pmichaud masak: when would one use it?
masak hm.
jnthn golf?
obsfucation?
masak pmichaud: while =<> { ... }, perhaps. 16:58
ruoso pmurias, pairs of types?
pmichaud masak: that should probably be for lines() { ... }
ruoso pmurias, ah... i see what you mean... I usually call that "community" of types...
TimToady pmichaud: did you look at my backref?
pmichaud TimToady: yes, I did.
ruoso pmurias, you simply allow them to know then internals of each other
pmurias like %knows? 16:59
TimToady all the boolean contexts call .true, so it's fairly fundamental
masak pmichaud: aye, probably. I remember being thrown off when starting doing Perl 6 by the fact that looping over input is 'for', not 'while'.
jnthn TimToady: So essentiall you're saying we have two different mix-in mechanisms?
ruoso pmurias, just %include "something.h"
pmichaud TimToady: so, there's not really a .Bool method by default, then? (that's fine with me if that's the case) 17:00
TimToady we can certainly provide a .Bool that calls .true and returns a Bool enum
pmurias ruoso: i wander if having the community in the same file wouldn't make sense?
pmichaud but defining method Bool on a class doesn't really affect its boolean value
(if I understand what you're saying)
TimToady correct
pmurias then they could use each other static functions/data
ruoso pmurias, not necessary
TimToady and .true may or may not map to a storage bit
depending on whether we're using Bool:rw or Boo:ro 17:01
pmichaud okay, a slightly related question -- how does one override numification?
TimToady I think this rw vs ro thing runs through a lot of other roles too
do we want the interface with or without the attributes, basically
or maybe, if the accessor is overwritten and doesn't access the storage, we don't allocate it, but that might be hard to compute 17:02
pmurias we will need a directive to disable emitting of the struct declaration if we are going to support the community of types via a .h
ruoso pmurias, don't need to... just expose functions to access the internals 17:03
TimToady like, there's Positional:rw and Positional:ro, and Associative:rw and Associative:ro 17:04
give or take a notation or two
pmichaud okay, I need to re-read the backref with all of this in mind.
jnthn TimToady: I'm not sure why those two would want to be rw and ro? 17:05
Since they don't imply a storage mechanism, just an interface contract?
TimToady as soon as you allocate has Bool $.true it's a storage mechanism 17:06
ruoso maybe it's an interface contract that allows storage decisions
TimToady or bit, or whatever it is
but we don't want $x but True to allocate a bit when it doesn't need to 17:07
Tene enum Bool is also < FileNotFound >;
jnthn ruoso: Then just do List or Array, which make the storage decision. :-) 17:08
TimToady precisely because Array === Positional:rw
jnthn erm...huh?
TimToady okay, back up a step 17:09
I'm trying to look at all the typish things we've defined so far
jnthn I had it as role Array[::T] does Positional[T] { ... }
(but Range also does Positional, etc)
TimToady and we've given different names to things that are really the same interface, but with rw characteristics 17:10
jnthn Well, List does Positional too...
Which is ro.
TimToady but the Bool discusion seems to indicate that we *haven't* done that with Bool 17:11
there's a BoolBit vs a BoolIF
we have no way of distinguishing those currently with a single name Bool
pmichaud what are the two cases there? 17:12
I mean, example of BoolBit and example of BoolIf
I can come up with BoolBit
my $x = True; # BoolBit
or even
my $x = ?(1);
jnthn I figure when you say does True and does False you just want the methods, but when you say does Bool you want a storage location. 17:13
TimToady it's basic value semantics vs variable semantics
immutable vs mutable
why do we split some of the names but not others?
jnthn We could probably get somewhere in that one by saying True and False don't do Bool.
But that causes other confusion...
Or at least surprise.
TimToady they don't do Bool:rw, but they do Bool:ro
we have a Range with is Range:ro, and a RangeIterator which is Range:rw 17:14
jnthn Where Bool:ro is syntactic sugar for "Bool without its attributes"?
TimToady or maybe the other way around :)
jnthn Or would we actually write a separate role Bool:rw { } and role Bool:ro { }
TimToady I don't know, all I know is we're being very inconsistent
pmichaud well, let me ask a slightly different one 17:15
if I have "hello" but 42
what is that doing, exactly?
are we doing a :ro versus :rw sort of thing there also?
TimToady it's a good question 17:16
by analogy with the but True, I'd say
pmichaud because I see "hello" but True as really being the same sort of thing.
TimToady that 'but 42' adds an Int:ro role with a .Int method that returns the constant 42
or something like that
pmichaud that constant 42 has to be stored somewhere, yes? 17:17
17:17 cj left
pmichaud so we are talking about storage of something 17:17
TimToady method Int () { return 42 }
pmichaud okay
so we dynamically build a .Int method for the 42, I can buy that
TimToady but with Bool it's method .true, seemingly
pmichaud right, which is why I was asking about .Bool
seems like .Bool ought to be fundamental 17:18
jnthn my $x = 100 but 42; say Int($x); # 42?
pmichaud (more)
but also going back to another point I asked earlier
if I have my $x = "hello" but 42; say Num($x)
# ???
TimToady well, .Bool and .true could just be the same thing. It's true() and Bool() that are multis, and on a different level 17:19
pmichaud is it still 0.0 because 42 happened to be an Int?
TimToady I'd be okay with .Bool being fundamental, if it's more consistent
that would depend on how Num() is dispatched, I suppose 17:20
and what we consider the new type to be, since it's a mixin
ruoso TimToady, i'd argue that we could require .true to return a native bool 17:21
17:22 ejs joined
TimToady as a runtime mixin, one could argue that the Intliness should override the Strliness 17:22
on the theory that it's the new anonymous type that does Int directly, but Str is ancestral 17:23
but it kinda plays havoc with our notion of pseudo-named equivalence 17:24
we know that $x does Int and we know it does Str
ruoso TimToady, wasn't that the reason for all the built-in types being Roles? 17:25
PerlJam TimToady: but $x.WHAT is ... ?
TimToady nothing is ever "the reason" for anything
there's always lots of reasons
PerlJam: yes, that's the question
ruoso so there's no conflict between being both Int and Str
PerlJam TimToady: well, if we expose the implementation details a little bit, it's ANONmumble isn't it ? :) 17:26
TimToady it *does* both Int and Str
justatheory hands some Str to his ancestors
TimToady but it *is* still a Str, I think most people would expect
jnthn I'd expect so too.
PerlJam I'd expect a string with a hidden stash of Int
17:26 zamolxes left
TimToady but how hidden? $x ~~ Int 17:27
pmichaud multi foo(Int $x) { say 'Int'; }; multi foo(Str $y) { say 'Str'; }; foo("hello" but 42)
ambiguous? if not, which one wins?
PerlJam pm: I'd expect the latter to win
(right this moment anyway ;) 17:28
jnthn But why?
TimToady arguably, they're tied
jnthn If they are both roles, then we do both of them.
So I'd expect tied in this case.
PerlJam because the "but 42" always feels like postit notes to me
TimToady and you have to say foo(+$x) or foo(~$x)
PerlJam and postit notes don't change the essence of the thing. 17:29
jnthn PerlJam: It's just simply that it both does Str and does Int so both candidates match.
ruoso TimToady, I don't think it needs to be hidden at all
jnthn And Int and Str are tied, thus the candidates are tied, and if you match both it's a tied dispatch.
PerlJam jnthn: aye, I get what you're saying. I'm just saying this is what my ape-brain expects. 17:30
pmichaud I'm fine with that being tied. 17:31
just was curious about it.
TimToady since we can argue it both ways, a failed tie is probably the correct answer 17:32
and then require + or ~
pmichaud anyway, when thinking about "... but True" I tend to want to have it work the same as "... but 42"
"the same" == "using a similar mechanism to"
TimToady yes, which argues for .Bool (or .bool) being fundamental 17:33
jnthn When you say but True, is it a problem if it always mixes in a storage location too?
pmichaud does it need to?
i.e., does it need to any more or less than "but 42" does?
TimToady why not just mix in a method
jnthn Are we basically saying that...
If the thing on the RHS of does is a role, we mix it in. 17:34
If not, we generate a method of the name of the type of the thing on the RHS that returns that value?
Thus $x but 42 => $x but role { method Int { 42 } }
Could that work? 17:35
That'd mean that you don't actually do Int.
Which also might resolve the ambiguity problem.
pmichaud At first blush, I like that.
TimToady unless it's role Int:ro[42]
jnthn It does mean that we'd have to make .Bool be the significant one.
17:35 angelixd joined 17:36 masak left
pmichaud .true has just always felt very odd to me, once .Str and friends were introduced. 17:36
PerlJam Can I mixin any value? is my $x = $y but $z; perfectly valid?
jnthn PerlJam: I don't see why not.
17:36 masak joined
jnthn PerlJam: Since you're just calling infix:does really. 17:37
pmichaud I'd be fine with .true being method true() { self.Bool }
PerlJam jnthn: then what happens with my $x = "hello" but 42; my $y = 17 but $x; # What method is created on $y?
jnthn TimToady: I'm not too convinced yet by the :rw and :ro variants of roles.
.WHAT gives Str, so you get a method Str { $y } 17:38
TimToady well, at the moment we're making a fundamental distinction between 'but True' vs 'but Bool'
jnthn OK, but with what I'm suggesting but True and but 42 are completely analogous.
PerlJam jnthn: so, no matter how many things are mixed in, the value always keeps the "original type"?
ruoso I wonder if there could be a way for we to stablish precedence in the object in order to pre-solve ties 17:39
without require stringification or numification
jnthn $x but True becomes $x does role { method Bool { True } } because True.WHAT stringifies to Bool.
All you're doing is saying the way that you T-ify. 17:40
TimToady well, this is all very simple in Ruby where everything is single inheritance and duck typing :)
jnthn TimToady: Was that to me or ruoso?
TimToady it was to the world at large
jnthn If to me I didn't get the point...
TimToady: All we're relying on here is that things do have some distinct type. 17:41
PerlJam: Yes, that's what I'm essentially proposing.
TimToady the point is that ruby doesn't do anything like role-based multiple dispatch, or even MI
skids looks up duck typing, guessing it has nothing to do with mallards.
17:41 |Jedai| left
PerlJam jnthn: and so ... how do you get at the 42ness of $x through $y? Or does $y lose the 42ness? 17:42
TimToady but in SI, the type is biased toward the derivative, not the parent
so I'm leary of biasing toward the parent
jnthn TimToady: The way I'm defining this is that you effectively are mixing in an anonymous role, and thus since in multi-dispatch you name things, it doesn't really play into it. 17:43
PerlJam: It'd keep it, since the method that is generated would just return the exact value that is on the RHS of the does.
17:43 masak left
jnthn PerlJam: We just care about the original type for its name. 17:43
TimToady if it's an anonymous role then $x ~~ Int would return false, which also seems bogus 17:44
PerlJam jnthn: so, to get at the 42 that $x brought to $y, it would be $y.Str.Int ?
jnthn TimToady: If you explicitly mixed in a role, e.g. $x does Int(42), you'd do Int.
17:44 masak joined
[particle]2 $x.can(Int) is true, though 17:44
17:45 [particle]2 is now known as [particle]-
jnthn [particle]-: Yes, that's true. 17:45
TimToady: But that'd also get you the storage location.
TimToady well, we do want some way to do that, even to making .Int = 43 work sometimes 17:46
jnthn TimToady: Sure; I saw $x does Int(42); $x.Int = 43; as working. 17:47
PerlJam "sometimes"? How would you designate those times?
jnthn TimToady: But $x does 42; $x.Int = 42; would not.
PerlJam (or, how do you force the ro-ness)
TimToady I can imagine adding a $.Int that isn't rw
jnthn Since in the first you have asked to fix in a storage location and initialized.
TimToady but we don't have syntax for it
17:47 ZuLuuuuuu joined
TimToady unless you write the role yourself 17:48
jnthn And in the second you have asked to mix in a method that returns a value.
[particle]- does it need to be easy?
jnthn TimToady: When would you (commonly) want the storage *and* ro-ness?
TimToady I think add a .Int value and a .Int rw var are the two common desires
adding a .Int ro var seems like something nobody will want to do 17:49
[particle]- until you disallow it.
jnthn Right, and if they do, they can go scribble their own role and mix in it. :-)
TimToady having a ro var seems a bit perverse to me
when you're already forcing it from the outside
and nothing inside the old object knows how to change it anyway 17:50
jnthn Aye.
TimToady so Int(42) vs 42 seems reasonable
or maybe Int{42} is more like what's going on 17:51
if WHENCE took positionals...
jnthn Well, either is syntactic sugar.
So far as S14 defines it.
TimToady trew
jnthn does RoleName(thingy) isn't really a postcircumfix:<( )> on the role. 17:52
TimToady okay, seems like we're achieving some kind of consensus, or at least mutual confusion
PerlJam so, Int(42) vs 42 is the same as Bool vs True ?
jnthn PerlJam: Or Bool(True) to initialize it, but yes.
TimToady yes
jnthn OK. This is feeling reasonably sane to me. 17:53
TimToady and 'but Int' is short for 'but Int(Int)'
PerlJam it makes enough sense for me (as least I feel like I understand it :)
jnthn *nod*
TimToady can die in peace now 17:54
jnthn can dine in peace now
[particle]- VesselWithPestle(PelletWithPoison)
17:54 wollmers joined
PerlJam I guess that means the perl6 design is complete. 17:54
jnthn TimToady: Do you want me to write this into S14 after dinner, or shall I leave it to you?
17:54 masak left
TimToady can't be, wolmers++ just joined :) 17:54
go ahead and scribble 17:55
jnthn OK. I'm going to go ahead and eat first. ;-)
TimToady *wollmers++
sorry
wollmers Good UTC evening;-)
17:56 masak joined, barney left
TimToady wollmers: did you send those messages to p6l or just to me? 17:56
they haven't shown up there yet, is all 17:57
(haven't really had time to think about them yet)
jnthn -> dinner, be back in a little bit
pmichaud lunch 17:58
TimToady likewise lunch, still about on Mountain Time biologically...
jnthn I'm a couple of timezones west too... 17:59
18:02 alanhaggai left
wollmers TimToady: Ooops, mistake. They were targeted for p6l ... 18:04
pmichaud wollmers: I noticed your messages to me were just to me also, fwiw. 18:05
(thank you for them, btw)
really lunch 18:06
18:08 Util left, p6paste joined
literal hm 18:09
18:09 p6paste left 18:12 FurnaceBoy joined 18:16 cj joined, abra left 18:20 bkeeler joined 18:21 frew|work joined 18:22 bkeeler left, bkeeler joined
wollmers pmichaud: Sorry, the usual Reply-Button problem ... 18:23
18:29 wollmers left 19:04 FurnaceBoy left
masak wonders what it would take to implement the Quantum Fourier transform in Perl 6 19:05
mikehh_ \quit 19:11
19:12 mikehh_ left 19:18 ZuLuuuuuu left
meppl good night 19:21
19:22 meppl left 19:29 masak left 19:52 masak joined
jnthn masak: Implemented that quantum fourier transform yet? ;-) 19:53
masak jnthn: no, but I'm intrigued by the thought.
jnthn: I actually know the perfect book for learning more about QC. I haven't gotten that far through it, but I can tell it's really good. 19:54
I borrow it from the university library sometimes and get a few pages further.
it's like yoga for the mind.
jnthn :-) 19:55
masak www.amazon.ca/Quantum-Computation-I...0521635039 # that's the book 19:56
jnthn Seems from the reviews its well liked. 20:00
masak far as I understand, it's _the_ introduction to the field.
20:06 M_o_C joined
masak rakudo: $*IN.get.say 20:22
p6eval rakudo 5a02ee: OUTPUT«␤»
20:23 [particle]1 left 20:24 jhorwitz left
pugs_svn r26588 | masak++ | [evalbot.pl] now feeds the Austrian national anthem 20:30
r26588 | masak++ | on STDIN to elf and Rakudo
masak rakudo: $*IN.get.say 20:35
p6eval rakudo 5a02ee: OUTPUT«␤»
masak waits a little longer
mberends was that the lyrics, or the soundtrack? 20:36
pmichaud The remix.
mberends ah, the transform 20:37
pmichaud Although I wonder if the RIAA will be coming after masak++ now. :-P
masak I'd better hurry up with that Quantum Fourier Transform before they knock down my door. 20:38
rakudo: $*IN.get.say
p6eval rakudo 5a02ee: OUTPUT«␤»
masak hrm.
my commit has gone in, but something isn't working, it seems. 20:39
20:39 ZuLuuuuuu joined
masak oh. 20:40
masak slaps forehead
pugs_svn r26589 | masak++ | [evalbot.pl] forgot quotes in last commit 20:41
masak though the more I think about it, the more I doubt that this was the actual cause of things not working. 20:42
20:44 pmurias left, ruoso left 20:45 bkeeler left
masak rakudo: $*IN.get.say 20:47
p6eval rakudo 5a02ee: OUTPUT«␤»
masak :/
rakudo: lines($*IN).elems.say 20:48
p6eval rakudo 5a02ee: OUTPUT«2␤»
masak rakudo: lines($*IN).perl.say
p6eval rakudo 5a02ee: OUTPUT«["", ""]␤»
skids evalbot should slurp the IRC log on stdin :-) 20:49
masak skids: :)
masak gives up 20:51
as far as I can see, my commit should have desired effect. and I have limited means to debug p6eval. guess I'll just wait for moritz_++ to return. 20:52
what was the other thing I promised to do? oh yeah -- patch Match. 20:54
std: return 42 20:56
p6eval std 26589: OUTPUT«ok 00:02 35m␤»
masak std: return [~] gather {}
p6eval std 26589: OUTPUT«ok 00:02 37m␤»
masak std: return [~] gather {␤}
p6eval std 26589: OUTPUT«ok 00:02 37m␤»
masak pmichaud: so, changing Match.perl to say 'Str' instead of 'text'. is it ok if I change just Match.pm, and not the underlying PGE::Grammar? or should I change the latter as well? 20:58
21:02 DemoFreak joined 21:03 [particle] joined 21:11 bkeeler joined 21:18 Whiteknight joined 21:25 kidd left 21:31 skids left
pugs_svn r26590 | jnthn++ | [spec] Update S14 with new semantics for when a value appears on the RHS of a runtime mix-in operator (C<does> or C<but>), as discussed on #perl6 earlier today. Also a typo fix and a couple of headings to break the document into more managable chunks. 21:41
jnthn pmichaud: And as the above commit notes, Bool can actually stay as an enum now. :-) 21:46
21:47 [particle] left
masak pmichaud: oh! if I'm reading PGE/Match.pir correctly, .text is already just an alias for .Str -- which means that I can call .Str directly on the Match object. 21:58
masak tries
pmichaud masak: I've already converted PGE::Match to use .Str and the other items 22:00
just haven't gotten rid of the old ones yet -- wanted to give the other Parrot languages some time to migrate.
masak nice.
pmichaud: I've realized that I want to blog a review on PGE as well. I will probably do that after I review the spectest suite. 22:01
pmichaud excellent.
masak it was your comment about it being relatively small despite being all PIR that got me interested. 22:02
22:02 eric256 left 22:03 alester left 22:04 iblechbot left 22:08 [particle] joined 22:10 km2 left
jnthn gets his YAPC::EU talks submissions done Just In Time. 22:17
pmichaud (roles) I'm not sure that "stringifying WHAT" is the right answer here, fwiw. 22:19
jnthn No, it's a good approximation. 22:22
But yeah, not spot on since they have () on the end I guess.
22:23 ejs1 joined
jnthn How would you write it better? 22:24
22:24 [particle] left
jnthn I guess it's something like "get the WHAT and then grab its shortname"? 22:25
22:25 c9s_ joined 22:28 M_o_C left
jnthn I guess I can always implement it tomorrow and see what I end up using and patch the spec. ;-) 22:29
masak rakudo: subset FooStr of Str where /^foo/; multi method trim(FooStr $self:) { return "OH HAI" }; say "foo".trim 22:36
p6eval rakudo d4921c: OUTPUT«sh: ./perl6: No such file or directory␤»
jnthn fail
masak is it that time of the hour?
or did I break something? :/
jnthn or half hour...hmm 22:37
22:37 breinbaas joined
pugs_svn r26591 | lwall++ | get rid of the term "protoobject" in favor of "type object" or just "type" 22:37
r26591 | lwall++ | get rid of redundant and confusing Number: lines
jnthn You and your Austrian national anthem. :-)
TimToady note that .perl returns the name without () 22:38
22:38 [particle] joined
masak jnthn: referring to what, the p6eval breakage, or the fact that TimToady is now renaming "proto"? :) 22:38
TimToady or should
jnthn TimToady: Ooh, .WHAT.perl
masak rakudo: subset FooStr of Str where /^foo/; multi method trim(FooStr $self:) { return "OH HAI" }; say "foo".trim
p6eval rakudo d4921c: OUTPUT«sh: ./perl6: No such file or directory␤»
jnthn patches
22:39 c9s left
jnthn masak: Well, given you were hacking up p6eval to make Rakudo sing the Austrian national anthem... :-P 22:39
jnthn glances at the English translation of the lyrics
"let us swear in unity"
masak jnthn: it seemed like a good idea at the time...
jnthn invites the channel to swear in unity at masak ;-) 22:40
(Only in German. ;-))
masak look at it this way: things can only get better from here...
jnthn :-) 22:41
TimToady I dunno, there's always the French anthem...
masak I'm not sure the actual choice of anthem is the problem with p6eval... 22:42
jnthn Note so bad as Liechtenstein, who did write their own words but took the tune of the British one. ;-) 22:43
TimToady $*IN.pick.say
masak $*IN has .pick ? :)
TimToady well, there's only maybe six or seven college songs in the U.S., melodywise...
my highschool song was actually to the tune of Anchors Aweigh 22:44
but then, Bremerton is a navy town, so it made sense
masak: we have a phrase, "pick your poison" :) 22:46
jnthn TimToady: What do you think about getting list context and hash context be .List and .Hash instead of .list and .hash so they match other "get my thingy" calls?
TimToady most anthems are pretty poisonous, in my experience :)
masak seems so.
22:48 skids joined
TimToady jnthn: I dunno, it's not like we can't huffmanize on the Shift key occasionally when there's no conflict with a native type... 22:49
jnthn TimToady: I'm thinking about
pugs_svn r26592 | jnthn++ | [spec] .WHAT stringified gives back TypeName() so use .WHAT.perl to get just TypeName (pmichaud++, TimToady++).
jnthn $x but list(1,2,3)
$x but { a => 1, b => 2 }
Which would generate .List and .Hash methods... 22:50
oh, hmm...that list there on the RHS would flatten I suspect 22:51
And end up as if I'd written $x but 1,2,3
masak ok rakudo isn't building because of this make error:
make: *** No rule to make target `src/parrot/misc.pir', needed by `perl6_s1.pbc'. Stop.
jnthn Which is an error.
TimToady eh? but binds tighter than ,
jnthn oh, sorry
I meant but (1,2,3)
TimToady it gets coerced back to an item in any case 22:52
jnthn Which would be an error.
What about this case:
You can also mixin a precomposed set of roles:
$fido does (Sentry, Tricks, TailChasing, Scratch);
TimToady special syntax, I think 22:53
jnthn Is that a special syntactic form?
OK.
So 42 but list(1,2,3) is different to 42 but (1,2,3)
TimToady yeah
jnthn Nice.
TimToady or not
jnthn We can *almost* squeeze contextual return out of this... 22:54
(Which is why I asked about the .list vs .List)
TimToady not entirely clear if .list and .List mean the same thing yet 22:55
might be a de jure vs de facto distinction there 22:56
like the difference between interpolation of @$foo vs $foo non-interpolation
jnthn Hmm, true. 22:57
TimToady context is not strictly OO in perl
jnthn tbh the whole "oh wows we can haz contextual return with this" was more an afterthough when trying to nail down all of the semantics (or at least not miss too many)...
*afterthought
TimToady contextual return is not a panacaea if it involves cloning a bunch of closures that will go unused 22:58
jnthn I figured I should define what 0 but (x, y) where x and y ain't roles was, since the semantics are defined for when they are roles.
Sure.
Perhaps we shouldn't be encouraging this way. :-)
22:58 nihiliad left
masak ok, my local Rakudo doesn't build either. 22:59
TimToady well, but (1,2,3) would give you a collision like (True,False)
23:00 hanekomu joined
masak I'm compiling it with a bleeding-edge Parrot. can anyone confirm? 23:00
masak checks Parrot commit log in the meantime
jnthn TimToady: Yes. 23:02
masak pmichaud: found it! your 5f0765da broke Rakudo.
jnthn TimToady: Thus why I wondered if but list(1,2,3) was different.
masak trying the obvious fix.
23:03 ejs1 left, Limbic_Region joined, orafu left
jnthn And there we were blaming it on Austria's anthem... 23:03
23:03 orafu joined
masak what were we thinking? 23:04
Austria's anthem: come back. all is forgiven.
23:05 ejs1 joined
masak yah, now it builds. committing. 23:05
TimToady maybe you should try Edelweiss instead and see if it works better... 23:06
23:06 [particle] left
jnthn rakudo: say $*IN.get 23:06
p6eval rakudo d4921c: OUTPUT«sh: ./perl6: No such file or directory␤»
jnthn ah, too soon
TimToady I note, however that STD doesn't actually parse 'but' as a special form 23:07
masak there, pushed.
jnthn Rakudo doesn't parse it as a special form exactly, but it handles does Foo(42) for example specially
masak but I'm getting a compile error later in the build process... :/ 23:08
perhaps due to the missing file. I dunno.
TimToady but that's just a coercion of 42 to Foo
jnthn ?
TimToady which is why I was thinking of using Foo{42} instead
jnthn $x does Foo(42) is ($x does Foo).Foo = 42 or something, right?
TimToady yes, but how do you tell it was a coercion and set of rw? 23:09
vs a bare Foo literal, whatever that is...
how do we distinguish Int(42) from 42
jnthn Syntax?
TimToady not if it's not a special form 23:10
but Int{42} could be lazy coercion
jnthn OK, my point was it doesn't need to be parsed as a special form, the semantic analyzer can deal with it.
That's how Rakudo handles it.
Just treats the RHS of does and but specially.
TimToady well, that's a possibility, but there could be other uses for Int{42} 23:11
not to mention List{1,2,3}
jnthn On the RHS of does and but?
Hmm 23:12
TimToady no, just other places where a positional WHENCE makes some kind of sense
23:12 orafu left
jnthn At the moment I'm essentially treating the 42 in $x does Int(42) as a kind of "and initialize with this" adverb to infix:<does> 23:13
23:13 orafu joined
jnthn Changing the syntax to Int{42} wouldn't make a huge difference and yes, I can see the analogy with WHENCE. 23:14
And it means List(...) isn't ambiguous.
So sounds sane... 23:15
masak I'm going to bed now. there's a build error originating in src/parser/actions.pm.
TimToady night
masak Method 'ast' not found for invocant of class 'ResizablePMCArray'
good night.
jnthn night masak, see you tomorrow
masak Rakudo day tomorrow! \o/
hope it builds by then. :P
jnthn feels expectation pressure
Yeah me too ;-) 23:16
masak sleeps
23:16 masak left
TimToady never happens to me.. ;) 23:16
jnthn TimToady: So anyways, no opposition (and I think support...but I'm tired...) on changing to { } for the initialization value. 23:17
TimToady well, something to think about, anyhoo
jnthn Aye.
pmichaud (broke rakudo).... checking 23:18
jnthn I'll have a crack at getting the new stuff that went into S14 today into Rakudo tomorrow.
TimToady and simplifies the run-time decision to "is it defined yet"
if not defined, is rw, if is defined, is ro
jnthn So we can play with it and see how it feels.
Oh, hmm, that's a neat distinction.
I was just going to say "is it a role" 23:19
Oh hmm...so what about $x does SomeProtoObjectHere ?
pmichaud oh yes, I forgot to add the file.
adding.
funny, the missing file doesn't show up when I do 'git status' 23:20
TimToady is undefined, so adds SomeProtoObject slot with undef value, which happens to also have the type SumeProtoObject
for same speeling or other
but Foo turns into but Foo[Foo]
Foo{Foo} rather
if we end up with the WHENCE solution 23:21
jnthn So in that case we generate a role { has Foo $.Foo } ?
TimToady Foo is already a role, so we just use it
jnthn Or a role { method Foo() { return Foo } } ?
I was saying what if Foo isn't a role? 23:22
class Foo { }; $x does Foo
pmichaud my question is more along the lines of
TimToady ah, well, we take an immutable snapshot, is what I've said in the past
pmichaud my $x = MyInt.new; $x = 42; "hello" but $x
does that change the Int semantics of "hello" ?
jnthn pmichaud: No. 23:23
pmichaud okay, so we can use 'but' to affect values only for the natively coerced types
I'm fine if that's the case
TimToady point is that $x is defined, so uses value override only
jnthn pmichaud: You'd get a .MyInt mixed into the cloned "hello" though 23:24
TimToady and value override doesn't affect the type of "hello"
pmichaud also, I'm curious if ~(Int.WHAT) eventually ends up being "CORE::Int()" instead of just "Int()"
I guess I"m asking if that sort of "but override" would affect +("hello" but $x) 23:25
I was also curious earlier about what happens with ("hello" but 42).perl ..... but I'll leave that for another day :-)
jnthn I thoguht .WHAT stringified to short name, and .WHO to long name?
pmichaud "short name" means more like "generic name", not "last component"
jnthn pmichaud: It's going to just dispatch to .perl on Str, as currently defined. 23:26
pmichaud i.e., as opposed to something like Int:auth<...>:ver<...>
(if I'm reading the spec right, at least)
jnthn I think the spec has changed on that at some point too...
TimToady well, all of these short names are presumably lexically aliased to the long name
jnthn rakudo: class Foo::Bar { }; say Foo::Bar.WHAT 23:27
p6eval rakudo d4921c: OUTPUT«sh: ./perl6: No such file or directory␤»
pmichaud yes, but does the protoobject know its short name?
(just pushed fix so that perl6 hopefully builds again)
jnthn pmichaud: In Rakudo, yes. ;-)
pmichaud jnthn: no, currently what you just gave will produce "Foo::Bar()"
TimToady its .perl should know it, I think
pmichaud (yes, it used to give just "Bar", but with the recent changes it now produces "Foo::Bar()") 23:28
jnthn pmichaud: OK, that's changed since last time I tried it.
BTW, why are the () on there?
I never quite caught onto the reasoning for that...
pmichaud TimToady: so, .perl needs to be able to produce a protoobject's name relative to the lexical scope of .perl's caller?
23:29 mizioumt1 joined
pmichaud jnthn: it's to avoid 23:29
my Int $x; say ~$x; # "Int"
the parens are meant to indicate it's a little special
jnthn Ah, OK.
TimToady it's to avoid confusing data with metadata, basically
jnthn OK, makes sense.
TimToady and it happens that if you eval "Int()", you end up with Int anyway
jnthn o rly? 23:30
TimToady since empty coercion is defined to return the type object undefined
jnthn Ah, OK.
Is co-ercion a special syntactic form, or just postcircumfix:<( )>?
TimToady Nil coerced to Anything is Anything, I guess you might say
pmichaud so, back to my earlier question 23:31
TimToady just postcircum
pmichaud class MyInt is Int { ... }; my $x = MyInt.new; $x = 42; say +("hello" but $x); # 0 ?
jnthn TimToady: Just defined on proto-objects?
TimToady: And other type-ish things? 23:32
pmichaud although I guess that $x = 42 step doesn't do what I mean
so
TimToady what's a protoobject? :P
jnthn type object :-P
pmichaud class MyInt is Int { ... }; my $x = MyInt.new(42); say +("hello" but $x); # 0 ?
jnthn pmichaud: Yes, as currently spec'd.
pmichaud I'm okay if the result of the above is 0... just want to make sure that's the intent. 23:33
23:33 ejs1 left
jnthn pmichaud: And I can't see a clean way of making that do otherwise. 23:33
pmichaud and it's partially why I'm wondering if "stringify type to build method" is correct.
TimToady however, but MyInt{$x} is potentially a different matter
since it's a proto^Wtype object with a WHENCE 23:34
pmichaud and there's also class Foo::Int { ... }; $x = Foo::Int.new; +("hello" but $x); # changed numification?
jnthn Right. Then it is up to whatever is defiend by MyInt.
TimToady so we might do something more official with the type mixin
something more like MI 23:35
or like official composition 23:36
jnthn pmichaud: By CORE::Int gives us .Int I'd venture a yes to that one...
TimToady anyway, it may be one of those "doctor it hurts when I do this" sort of things, at least until we think of something more consistent
pmichaud anyway, I have to join family for dinner... but it just seems to me that stringifying the type to produce the method name of the mixin is akin to testing type identity by doing $x.WHAT eq 'Int' 23:37
i.e., it's putting too much emphasis on the name.
(especially since names, as we've seen, aren't always what we expect them to be) 23:38
TimToady sure, but what's the identity of a mixin then?
pmichaud I don't know.
TimToady would be simple if we weren't doing MI and multiple dispatch :) 23:39
pmichaud I'm only raising the flag so that the snipers can shoot it down and I can later say "okay, I raised the flag" :-)
TimToady yes, it's a valid and strong point, but I don't think any of us are smart enough to figure it out tonight. :)
pmichaud agreed.
I think that's exactly what I'm saying, in fact.
jnthn Aye.
TimToady do don't do that. :) 23:40
*so even
pmichaud just that I noticed some things didn't quite smell right and so I'm alerting others to the possible smell.
TimToady gah, blow my own punchline...
jnthn In the meantime, we have something that's good enough and resolves the "how to sort out booleans".
pmichaud jnthn: yes, until it doesn't. :-)
TimToady junctional types, here we come... 23:41
pmichaud but it did also occur to me earlier that ~(Int.WHAT) may start producing "CORE::Int()"
since we're really talking about CORE::Int as the type.
jnthn TimToady: Those are nasty.
TimToady unless someone has hidden it. :)
jnthn: you're tellin' me... 23:42
pmichaud jnthn: it *also* occurred to me that since all of our types are really in "CORE::", we might end up avoiding conflicts with Parrot class names anyway :-P
jnthn TimToady: I'm really worried about issues surrounding type identity and all sorts if we go down that road.
TimToady: And hwo we'd define narrowness, which isn't unrelated to that.
TimToady yes, well, if we solve it, we probably solve world hunger at the same time, not to mention global warming 23:43
we'll just have to evolve it as we go on, assuming we haven't boxed ourselves into a corner
pmichaud agreed, I'm a bit concerned about the box-into-a-corner part.
TimToady and that depends on which people run into which pain points first, and loudest, I suppose 23:44
jnthn For junctional types, we reserved the syntax.
tbh I just don't think the returns of dealing with those in 6.0.0 are worth the returns. 23:45
TimToady but changing the semantics of 'but Int(42)' to junctional or MI or whatever is a possible danger point
if it ignores the Int type initially and people depend on it
jnthn What exactly are you thinking it will do?
23:46 mizioumt1 left
TimToady eventually, something more like a real mixin 23:46
jnthn I ddn't see that case ignoring the Int type.
That takes the Int role, mixes it in and initializes the single attribute resulting from the mix-in.
23:46 orafu left
TimToady where there's a new anon type that *does* Int but isa something else that does Str 23:46
jnthn Which is different from but 42
23:47 orafu joined, nbrown left
jnthn That's already how such things work though? 23:47
TimToady question is how $x then dispatches to ambig Int vs Str
jnthn With an ambiguity if you do it like that.
TimToady well, Int might be considered exact match because it's via does, while Str might be inexact since it's via isa 23:48
from the viewpoint of the new anon type
jnthn And the $x but 42 syntax did something different to avoid the ambiguity issue.
Well, thing is, I was thinking we'd bias towards the isa rather than the does-a, so hmm.
TimToady yes, it just mixed in the method without the role 23:49
jnthn Right.
TimToady well, with an anon role that isn't related to Int
jnthn Sure.
For constants we can generate one role and re-use it too.
TimToady so it *might* just fall out of what we're already doing
jnthn Yeah. The name issues that pmichaud mentioned are the main concern with this approach.
23:49 mberends left
TimToady and the actual downstream tweaks are how we calculate type distance 23:49
which will be painful regardless 23:50
23:50 mberends joined
jnthn I currently have things very neatly falling out of .ACCEPTS on the narrowness calculations. 23:51
I kinda like that because it's, well, neat.
And easy to explain.
Starting to stick is-a vs does-a stuff into there makes me worry that we're going to end up making it Too Magical.
pmichaud But it insufficiently torments the implementors. :-)
jnthn pmichaud: Well, to me being able to explain Perl 6's MMD as "it's just X" is kinda nice too... 23:52
pmichaud jnthn: agreed. :-)
TimToady hmm, both Int and Str presumably supply a .Num coercion, which is ambiguous by composition, but with the extra isa of a mixin, isn't
any way I argue it, it seems to me that +("foo" but Int(42)) should probably call Int's .Num rather than Str's .Num 23:53
23:53 cj left, SamB left, antiphase left, moritz_ left, patmat left, presh left, PacoLinux left, bkeeler left, jeremiah_ left, baest left, c1sung left, pdc303 left, gbacon left, integral left
TimToady at that point it's just single dispatch 23:53
23:54 moritz_ joined, cj joined, SamB joined, PacoLinux joined, patmat joined, presh joined, antiphase joined, irc.freenode.net sets mode: +o moritz_, hanekomu left, bkeeler joined, jeremiah_ joined, arnsholt joined, StephenPollei joined, baest joined, c1sung joined, pdc303 joined, gbacon joined, jiing joined, krunen joined, integral joined
jnthn TimToady: I wonder if tying prefix:<+> to .Num is the issue. 23:54
There's more than one way to numify...
TimToady it's just the Any version that does it
but if the type is neither strictly Int nor Str, Any is what we get
and it delegates to .Num
jnthn Could it delegate to the least-derived .Num or .Int? 23:55
TimToady that's nonstandard OO.
jnthn I know.
TimToady should call the most-derived
jnthn oh crap
I meant most derived
The first one you find looking from the bottom of the inheritance hierarchy. 23:56
TimToady yes, which with a mixin will be Int rather than Str
jnthn Right.
TimToady so +$x will tend to produce 42.0
which I like a bit better than 0
but only if we say Int{42} rather than 42, by current reckoning
23:56 orafu left 23:57 orafu joined
TimToady since the "but" is implying that the override is also the type, not just the value 23:57
jnthn Oh, I thought we were solving the "when I say 42" case
I figured that does Int(42) would pull in a .Num method as well as a .Int because the Int role would define a .Num method.
TimToady but 42 could still just be .Int mixin without implying type 23:58
jnthn Yes.
I figured it would be.
TimToady or we could say it mixes in the type as well as the value, I suppose
and just write an anonymous role explicitly if you want the other
jnthn Yeah but if we mix in the type we get the storage location and all that lot.
TimToady but role { method Int () { 42 } } is not onorous 23:59
jnthn but role { method Bool() { True } } is worse than but True
TimToady we could still mix in the type and ro interface without mixing in the storage