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 messagecurrent 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 wsFAILED 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 valueUse 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 exceededcurrent 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 itcurrent 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«11» | ||
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 |