»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released! Set by diakopter on 6 September 2010. |
|||
tylercurtis | rakudo: sub Good ($time) { say "Good $time #perl6." }; Good time #perl6 | 00:00 | |
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
ash_ | rakudo: sub Good ($time) { say "Good $time \#perl6." }; Good time # note the \# | 00:02 | |
00:02
mfollett joined
|
|||
p6eval | rakudo 8827d0: OUTPUT«Good 1285889946 #perl6.» | 00:02 | |
ash_ | although 128589946 is not as meaningful as one would hope | ||
tylercurtis | std: sub Good ($time) { say "Good {$time.perl} #perl6." }; Good time # perl6 | ||
p6eval | std 1d6fdf3: OUTPUT«ok 00:02 119m» | ||
tylercurtis | rakudo: sub Good ($time) { say "Good {$time.perl} #perl6." }; Good time # perl6 | ||
p6eval | rakudo 8827d0: OUTPUT«Good 1285889998 #perl6.» | 00:03 | |
tylercurtis | rakudo: sub Good ($time) { say "Good $time #perl6." }; Good now # perl6 | ||
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
tylercurtis | rakudo: sub Good ($time) { say "Good $time \#perl6." }; Good now # perl6 | ||
p6eval | rakudo 8827d0: OUTPUT«Good Instant:2010-09-30T23:40:32.751667Z #perl6.» | ||
tylercurtis | Interesting. I wonder if that's submitted. | 00:04 | |
masonkramer doesn't see the bug | |||
tylercurtis | STD parses it but Rakudo doesn't. | 00:06 | |
std: sub Good ($time) { say "Good $time #perl6." }; Good time #perl6 | |||
p6eval | std 1d6fdf3: OUTPUT«ok 00:01 119m» | ||
ash_ | std: sub Good ($time) { say "Good $time \#perl6." }; Good time | ||
p6eval | std 1d6fdf3: OUTPUT«ok 00:01 119m» | ||
ash_ | hmmm | ||
wonder what's up with that | 00:07 | ||
masonkramer | oh | ||
tylercurtis | rakudo: "#foo"; | ||
p6eval | rakudo 8827d0: ( no output ) | ||
tylercurtis | rakudo: "$_ #foo"; | ||
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Confused at line 22, near "\"$_ #foo\";"» | ||
00:13
colomon_ joined,
colomon left,
colomon_ is now known as colomon
|
|||
masonkramer | rakudo: say "#foo"; say "$_ #foo" | 00:13 | |
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Confused at line 22, near "say \"$_ #f"» | ||
masonkramer | rakudo: say "#foo" | 00:14 | |
p6eval | rakudo 8827d0: OUTPUT«#foo» | ||
masonkramer | rakudo doesn't print the value of the last expression | ||
00:17
stkowski left
00:20
jest left
00:22
mfollett left
00:27
jferrero left
00:28
jest joined,
jest left
00:32
mavrc left
00:35
nymacro left
00:48
fod joined
00:54
tylercurtis left
01:01
isBEKaml left
01:04
envi joined
01:17
tylercurtis joined
01:19
mfollett joined
01:25
mfollett left
01:31
satyavvd joined
01:34
bluescreen left,
satyavvd_ joined
01:35
satyavvd left,
satyavvd_ is now known as satyavvd
01:36
satyavvd left
01:37
molaf__ joined
01:41
molaf_ left,
am0c^ joined
01:50
meppl left
01:52
meppl joined
02:03
daemon left
02:05
daemon joined
02:06
TiMBuS joined
02:10
lue left,
lue joined
02:11
dominix joined
02:19
mfollett joined
02:20
mfollett left
02:22
Italian_Plumber left
|
|||
colomon | rakudo: role A { has $.b; }; my $c = A.new(:b(10)); say :$c.perl; | 02:33 | |
p6eval | rakudo 8827d0: OUTPUT«"c" => .new(b => 10)» | ||
colomon | rakudo: role A { has $.b; }; my $c = A.new(:b(10)); say $c.b; | ||
p6eval | rakudo 8827d0: OUTPUT«10» | ||
colomon | that doesn't seem to be working in my current code. :\ | 02:39 | |
oh wait, yes it is. hmmm. | 02:41 | ||
02:43
leprevost joined
|
|||
masonkramer | oh. now I get tylercurtis's bug =P | 02:44 | |
02:44
duff joined
02:48
Italian_Plumber joined
02:50
leprevost left
02:56
justatheory left
02:59
Italian_Plumber left
03:04
Italian_Plumber joined
03:05
LionMadeOfLions left
03:13
LionMadeOfLions joined
03:25
duff is now known as PerlJam
03:28
Italian_Plumber left
03:29
Italian_Plumber joined
03:32
Italian_Plumber left
03:33
Italian_Plumber joined
03:42
meppel joined
03:46
meppl left
03:47
dukeleto joined,
Schwern joined
03:54
Italian_Plumber left
03:55
nymacro joined,
Italian_Plumber joined
03:56
dominix left
03:59
satyavvd joined
04:04
Italian_Plumber1 joined
04:05
mikehh left,
Italian_Plumber left
04:15
PerlJam left
04:20
exodist is now known as Exodist
04:22
ggoebel left
04:25
Italian_Plumber1 left
04:31
xinming_ joined
04:33
xinming left
04:43
am0c^ left
04:51
sftp left
04:56
pythonian4000 is now known as pythonian4000afk
04:59
jql joined
05:23
Guest23195 joined
05:44
masonkramer left,
masonkramer joined,
ash_ left
05:45
justatheory joined
05:47
justatheory left,
tylercurtis left
05:50
grew left
|
|||
sorear | good * #perl6 | 06:04 | |
(thunderstorms really crimp my hacking time. otoh, they're quite pretty.) | |||
FWIW, I plan to completely ignore TheDamian | 06:10 | ||
06:12
fod left
06:16
dju left
06:20
am0c^ joined
06:24
grew joined
06:40
Schwern left
06:46
dual left
06:55
am0c^ left
07:07
Mowah joined
07:14
baux joined
07:15
Schwern joined
07:20
am0c^ joined
07:23
araujo left
07:36
icwiener joined,
am0c^ left
07:37
am0c^ joined
07:38
kst joined
07:48
wtw joined
07:59
daxim joined
08:06
pythonian4000afk is now known as pythonian4000
08:09
icwiener left
|
|||
jnthn | o/ #perl6 | 08:17 | |
moritz_ | \o | 08:18 | |
sorear | o/ #jnthn | 08:23 | |
08:24
buubot left
08:26
dukeleto left
08:28
buubot joined
08:41
masak joined
|
|||
masak | oh hai, #perl6! | 08:41 | |
nymacro | good evenin' gov'na | 08:42 | |
jnthn | lolitsmasak! | ||
masak | lol! | 08:45 | |
I won't be longing around very stay today. | |||
moritz_ thinks masak is longing for other shores | |||
masak | pinin' for the fjords, p'haps. | 08:46 | |
moritz_ | masak: I hope you don't return as a resting parrot :-) | ||
masak | I'll try not to. :) | 08:47 | |
I'll try to return as a well-rested parrot instead. | |||
jnthn | :-) | ||
masak | I'm supposed to release Yapsi tonight, but I don't know what connectivity I will have, so the timeliness of the release is a bit uncertain. | 08:48 | |
jnthn | .oO( Official Perl 6 release delayed! ) |
08:49 | |
masak | had I realized this sooner, I might have put together a release guide and asked someone else to do the release... | ||
jnthn: ssh! you'll end up on Slashdot if you keep repeating that :P | |||
nymacro | Perl 6: It will come out sometime. So will Duke Nukem Forever. | 08:50 | |
08:51
buubot left
|
|||
moritz_ | and The Hurd! | 08:51 | |
masak | let's not forget about Xanadu and Plan 9. | 08:52 | |
also, I hear that fifth-generation computers from Japan have been delayed. they're no longer to be released in the 80s, but... sometime later. | 08:53 | ||
08:54
buubot joined
|
|||
flussence | :( the hardware curse got me today | 08:59 | |
half the morning bus services broke down at the same time... | 09:00 | ||
nymacro | :) | ||
09:00
icwiener joined
|
|||
flussence blames it on solar radiation | 09:01 | ||
.oO( even though there's almost none of that visible today ) |
09:02 | ||
sorear | if you blame the climate in general, I can share | 09:03 | |
I was kept away from #perl6 by freak thunderstorms | |||
flussence | I think they're headed my way... | ||
sorear | Technically, yes. | 09:05 | |
However it will take a while for storms to blow from San Diego to the Isle of Man, even if they are going in the right direction. | 09:06 | ||
masak | an interesting short note by Erik Naggum about why "is it finished?" is the wrong question toask: www.xach.com/naggum/articles/199506...um.no.html | ||
flussence | heh | ||
jnthn | ...wtf...this machine I'm working on at $dayjob is making some...not good noises... | 09:08 | |
flussence | oh no, not you too! | ||
jnthn | My keyboard here failed yesterday! | ||
flussence starts running backups, just in case | 09:10 | ||
jnthn | :-) | ||
I suspect the noise I'm hearing is just a fan on the way out. | 09:11 | ||
09:12
kjeldahl joined
|
|||
sorear | jnthn: What is OUTER:: in a where{} block? | 09:12 | |
jnthn | The sub | 09:13 | |
well | |||
in sub foo($x where 42) { } | |||
it'd be foo | |||
(replace 42 with something interesting :-)) | |||
Needs to be since we're binding the parameters into the lexpad of foo and conditions can look at already bound ones. | 09:14 | ||
09:16
icwiener left
|
|||
jnthn | Same for defaults, fwiw. | 09:17 | |
sorear | What if foo is a multi? | 09:19 | |
moritz_ guesses it's just the current candidate, not the full multi | |||
jnthn | The multi-ness is all about the symbol installation rather than the sub itself being different | ||
e.g. you make the same thing as for a non-multi and it just gets stuck in a candidate list instead of the lexpad. | 09:20 | ||
So, what moritz_ said. | |||
09:21
pjcj left,
pjcj joined
09:22
mikehh joined
|
|||
sorear | I'm more wondering how something can be run in the sub's lexpad before we've committed to which candidate we're running. | 09:22 | |
jnthn | ? | 09:23 | |
If you're asking that I think your mental model of multis is wrong. | |||
sorear | call &foo | ||
&foo resolves to the proto | |||
jnthn | Right, which then calls a dispatcher. | ||
masak | I also see no problem. | ||
moritz_ | and at some point, the where-block is checked | 09:24 | |
and the where-block is an ordinary closure | |||
sorear | the dispatcher does $sorted-candidates.first({ $capture ~~ $^a.signature }) | ||
jnthn | Right | ||
masak | I guess the optimizer may re-order and complicate things, but then it's the optimizer's mess, and it has to correct for its own lies. | ||
jnthn | Taht's an really inefficient implementation, but essentially OK. | ||
sorear | moritz_: Normal closures are run AFTER the enclosing sub's ENTER time | 09:25 | |
If the multi dispatcher is going to call where blocks while deciding what to call, then things are reversed | |||
jnthn | Doing a signature bindability check means you need to get a lexpad made so you can put such things in place. | ||
In Rakudo we re-use the one from the winning candidate for the "real" invocation. | |||
sorear | Asides from being written in Perl 6, what's slow about that? | 09:27 | |
moritz_ | you can be smarter about where to start searching, based on the nominal types | 09:28 | |
09:28
am0c joined
|
|||
sorear | Unrelated: How do you plan to handle stuff like dir(), IO::Socket::INET, etc in PortableRakudo? nqp::readdir, nqp::gethostbyname, etc? | 09:28 | |
moritz_ | yes, that's the plan | ||
09:39
am0c left
09:43
hugme left
|
|||
masak | have a good weekend, everybody! | 09:51 | |
I might not re-surface until Monday, in the Netherlands. | |||
o/ | |||
09:51
masak left
09:54
timbunce joined
09:55
am0c joined
09:59
jferrero joined
|
|||
nymacro | perlcabal.org is down? | 10:06 | |
moritz_ | yes, that's a feather1 service | 10:07 | |
which said goodbye in a cloud of smoke | 10:08 | ||
10:08
ruoso left
10:10
oyse joined
10:11
oyse_ joined,
oyse left,
oyse_ left
10:13
oyse joined,
oyse left
10:14
oyse_ joined
|
|||
mathw | o/ | 10:14 | |
10:18
tadzik joined
|
|||
tadzik | oh hai | 10:20 | |
10:40
mavrc joined
10:43
am0c^ left
10:48
mavrc left
10:49
mavrc joined
10:57
orafu left
10:58
orafu joined
|
|||
moritz_ back from nom | 11:04 | ||
11:06
Italian_Plumber joined
|
|||
jnthn | moritz_: Nice nom? | 11:08 | |
moritz_ | /~/ | 11:09 | |
'twas OK | |||
11:10
pythonian4000 is now known as pythonian4000afk
|
|||
jnthn | Same...mine was less good that yesterdays. | 11:10 | |
But yesterdays was pancakes... :-) | |||
11:16
wamba joined
11:35
oyse_ left
11:36
oyse joined
11:38
tadzik1 joined
11:40
tadzik left
|
|||
takadonet | morning | 11:51 | |
11:52
xabbu42 joined
|
|||
colomon | o/ | 11:52 | |
11:53
satyavvd left
|
|||
jnthn | o/ colomon | 11:54 | |
colomon | good morning! | 11:55 | |
11:55
amkrankruleuen joined
|
|||
moritz_ | good localtime() | 11:55 | |
rakudo: say ~now.^methods(:local) | 11:56 | ||
p6eval | rakudo 8827d0: OUTPUT«new from-posix to-posix Str perl ACCEPTS Bridge Real Bool Int Rat Num Complex reals isNaN abs exp ln sqrt roots sign floor ceiling truncate round cis unpolar rand sin asin cos acos tan atan sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech | ||
..acosec… | |||
11:56
tadzik1 is now known as tadzik
|
|||
moritz_ | rakudo: say now.WHAT | 11:57 | |
p6eval | rakudo 8827d0: OUTPUT«Instant()» | ||
moritz_ | rakudo: say ~Instant.^methods(:local) | ||
p6eval | rakudo 8827d0: OUTPUT«new from-posix to-posix Str perl ACCEPTS Bridge Real Bool Int Rat Num Complex reals isNaN abs exp ln sqrt roots sign floor ceiling truncate round cis unpolar rand sin asin cos acos tan atan sec asec cosec acosec cotan acotan sinh asinh cosh acosh tanh atanh sech asech cosech | ||
..acosec… | |||
moritz_ | oh, Instant does Real | ||
colomon | rakudo: say Instant ~~ Real | 11:58 | |
p6eval | rakudo 8827d0: OUTPUT«1» | ||
moritz_ | rakudo: say Instant.^roles | ||
p6eval | rakudo 8827d0: OUTPUT«Real()» | ||
moritz_ | rakudo: say 'good ' ~ <morning noon afternoon>[time.hour div 8] | 11:59 | |
p6eval | rakudo 8827d0: OUTPUT«Method 'hour' not found for invocant of class 'Integer' in main program body at line 22:/tmp/ZR4KJnMjwT» | ||
moritz_ | rakudo: say 'good ' ~ <morning noon afternoon>[DateTime.now.hour div 8] | ||
p6eval | rakudo 8827d0: OUTPUT«good noon» | 12:00 | |
tadzik | rakudo: DateTime.now.hour.say | ||
p6eval | rakudo 8827d0: OUTPUT«11» | ||
12:03
Schwern left
|
|||
nymacro | goo noon moritz_ | 12:04 | |
moritz_ wonders why the server clock is not in UTC | |||
rakudo: say DateTime.now | 12:05 | ||
p6eval | rakudo 8827d0: OUTPUT«2010-10-01T11:42:05Z» | ||
moritz_ | it seems completely off | ||
nymacro | it isn't completely off. I'm just from the future. | 12:06 | |
moritz_ | past, actually :-) | ||
Fri Oct 1 12:06:53 UTC 2010 | 12:07 | ||
since the trailing Z stands for UTC (iirc), it's past | |||
Juerd hates the T in ISO datetimes | 12:09 | ||
Makes it unreadable | |||
moritz_ | 1 Oct 11:47:59 ntpdate[30106]: step time server 24.189.19.214 offset 1385.646993 sec | 12:11 | |
flussence | huh, I always thought the T was optional... | ||
Juerd | It's not; I have a few s/T/ / and s/ /T/ | 12:12 | |
nymacro | moritz_, it is nearly the 2nd here. So I'm from the future ;) | 12:13 | |
moritz_ | nymacro: we need those future people; welcome to #perl6 :-) | ||
nymacro | it isn't like I have anything better to do; in the future robots do all my work for me | 12:15 | |
(PS. invest in SuperRobototronics, it will pay off) | 12:18 | ||
flussence | argh... all this date talk prompted me to check $dayjob's servers and two of them weren't even running ntp. | 12:19 | |
oyse | Is perlcabal.org down at the moment? I am trying to access the synopsis, but no response from the server | 12:20 | |
moritz_ | oyse: yes, down | ||
you can read the POD versions on github.com/perl6/specs/ for now | 12:21 | ||
oyse | moritz_: thanks | ||
moritz_: Github parses pod. Nice :) | 12:22 | ||
12:22
mjk joined
|
|||
flussence sees a very unpleasant error in the server log | 12:22 | ||
"time correction of 31535909 secionds exceeds sanity limit (1000)" :( | 12:23 | ||
s/i// | |||
moritz_ | oh wow | ||
flussence | yeah, not exactly 2 minutes off | ||
moritz_ | rakudo: say 31535909 / 3600 / 24 | 12:24 | |
p6eval | rakudo 8827d0: OUTPUT«364.998946759259» | ||
moritz_ | oh, nearly exactly one year | ||
maybe some license expired, and somebody "adjusted" the server clock? :-) | 12:26 | ||
12:27
cognominal left
|
|||
colomon | loliblogged: justrakudoit.wordpress.com/2010/10/...s-forward/ | 12:27 | |
12:31
abra joined
|
|||
moritz_ | yes, // '' should work | 12:32 | |
daxim | colomon, the blog is too narrow to read the code comfortably | ||
flussence | the "lots of small classes in several files" thing bothers me too sometimes. | 12:34 | |
daxim | heeeeey, java! | 12:35 | |
moritz_ sometimes just packs some utility classes into the files of other classes | |||
oyse | rakudo: required Dummy; | 12:37 | |
p6eval | rakudo 8827d0: OUTPUT«Could not find sub &Dummy in main program body at line 22:/tmp/DdRlcvCmPU» | ||
oyse | rakudo: require Dummy; | ||
p6eval | rakudo 8827d0: OUTPUT«Unable to find module 'Dummy' in the @*INC directories.(@*INC contains: lib /home/p6eval/.perl6/lib /home/p6eval//p1/lib/parrot/2.8.0-devel/languages/perl6/lib .) in main program body at line 26» | ||
tadzik | non-strictness mentioned in S01 is NYI? | 12:41 | |
moritz_ | correct | ||
12:41
[Coke] left
12:42
plainhao joined
|
|||
tadzik | hmm, I still didn't get my head around this. Role is not to be instantiated, but what is it worth if we're able to .new it anyway? | 12:43 | |
moritz_ | yes | ||
www.perlmonks.org/?node_id=862830 # another reason why backporting p6 features to p5 is not always as shiny as it looks | |||
12:44
lafille joined
|
|||
tadzik | uhm, I wasn't expecting a boolean answer for that | 12:44 | |
12:44
lafille left
|
|||
moritz_ | but what you wrote is correct | 12:45 | |
a class that only does that role is autogenerated for you | |||
Juerd | I can probably get feather1 back online today, but only with 1 GB RAM | 12:46 | |
tadzik | mhm | ||
Juerd | Better than nothing, I guess. Any strong objections? | ||
(The RAM that was in feather0 was supposed to go into c25, feather1's new host, but it's broken now) | |||
jnthn | tadzik: You're not instantiating the role. | 12:49 | |
All method calls on roles actually cause a class that composes the role to be magically created. | |||
And the call is forwarded to that class instance. | |||
Which can actually dispatch methods. | |||
12:50
bluescreen joined
|
|||
tadzik | I see | 12:50 | |
github.com/perl6/specs/blob/master//S02-bits.pod :( Where is the "I can wait" button? | 12:51 | ||
12:53
tylercurtis joined,
tylercurtis left
12:57
jferrero left
|
|||
oyse | does require support :from<lang> the same way as use does? | 13:00 | |
13:10
mjk left
|
|||
Juerd | blazar has a huge file, ~blazar/tmp/bar.txt | 13:11 | |
At 81 MB that's a pretty large text file | 13:12 | ||
I mean 1.1 GB | |||
Contains nothing but nullbytes. | |||
13:14
perlpilot joined
|
|||
jnthn | It may compress well ;-) | 13:15 | |
13:15
cognominal joined
|
|||
perlpilot | I got an email from an L Wall this morning. It gave me brief pause while skimming my messages. | 13:15 | |
:-) | 13:16 | ||
moritz_ | Juerd: afaict blazar is dead | 13:18 | |
he had cancer | |||
13:18
Patterner left
|
|||
moritz_ | (I hope I'm not confusing him with anybody... will see if I find a reference | 13:18 | |
13:21
ash__ joined
13:23
araujo joined
|
|||
perlpilot | moritz_: www.perlmonks.org/?node_id=735465 | 13:23 | |
13:24
perlpilot is now known as PerlJam
|
|||
Juerd | moritz_: Oh :( | 13:25 | |
13:29
Psyche^ joined
13:30
Psyche^ is now known as Patterner,
colomon left,
colomon joined
13:32
PerlJam left,
PerlJam joined,
ruoso joined
13:34
colomon_ joined,
colomon left,
colomon_ is now known as colomon,
ggoebel joined
13:36
am0c^ joined
|
|||
mathw | \o/ | 13:46 | |
13:46
Mowah left
13:51
am0c left
13:58
am0c^ left
14:00
colomon left
14:04
Guest23195 left
14:08
colomon joined,
Mowah joined
|
|||
ash__ | *crickets* its quiet today | 14:11 | |
mathw | it is | 14:12 | |
I'm wondering if everybody dissolved in the rain | |||
14:13
colomon left
|
|||
moritz_ inside | 14:13 | ||
slavik | a girl at wr0k has a red and white umbrella | ||
ash__ | it's pretty dry outside here, but i think i am in a different part of the world than some of you folks | 14:14 | |
14:14
ash__ is now known as ash_
|
|||
slavik | NYC | 14:14 | |
it's been raining off and on for the last couple of days | |||
mathw | It's chucking it down here | ||
it took a bit of a break around lunchtime | |||
moritz_ | slavik: how very frankonian of her | ||
mathw | it merely drizzled | ||
but now it's really raining again | |||
slavik | starsmedia.ign.com/stars/image/arti...41-000.jpg | ||
yes | 14:15 | ||
ash_ glad to see clear skys here | |||
zombies!? | |||
slavik | that's what her umbrella looks like ... | ||
yes! | |||
I am about to ask for some tvirus | |||
ash_ | hurry, barricade the door and find something to hit them with | ||
slavik | I am in a NOC ... | ||
ash_ | noc ... network operations center? (google may have failed me | 14:17 | |
) | |||
mathw | that's what it usually means | 14:18 | |
14:18
mikehh left
|
|||
mathw wonders how the C++ compiler can have forgotten about a macro from one line to the next | 14:18 | ||
(and no, the one line isn't #undef MACRONAME) | |||
ash_ | at least the raptor's haven't figured out how to open the doors yet (google images of NOC reminded me of Jurassic Park) | ||
14:28
am0c^ joined
14:33
sftp joined
14:34
satyavvd joined
14:36
abra left
|
|||
oyse | Are there any Test::More'ish test modules available for Perl 6? | 14:36 | |
moritz_ | Test.pm contains lots of ideas from Test::More | 14:37 | |
and from Test::Exceptions, for that matter | |||
tadzik | oyse: modules.perl6.org is actually everything we have. Besides Test of course | 14:38 | |
14:38
wtw left
|
|||
oyse | ok. I will take a look at Test.pm | 14:39 | |
14:39
xabbu42 left
14:41
meppel left
14:42
meppl joined,
daxim left
14:45
colomon joined
|
|||
ash_ | anyone in here familiar with js, or prototype inheritance? | 14:51 | |
Juerd | Somewhat | 14:53 | |
gfldex | ash_: i am | ||
Juerd | Read "new" as "clone" and everything will make sense ;) | 14:54 | |
ash_ | lol, i was thinking that too | ||
moritz_ | and keeping one "empty" object around from which you clone corresponds to having a class | 14:55 | |
gfldex | remove that class thing from your head when you think about prototype inheritance | 14:57 | |
flussence | I'm writing JS right now actually, but I wouldn't mind a distraction | ||
14:57
icwiener joined
|
|||
moritz_ | gfldex: only if it confuses you | 14:58 | |
flussence | .oO( $dayjob can write php in any language... ) |
||
gfldex | moritz_: that's the point! | ||
ash_ | just kinda toying with the idea, but gist.github.com/606320 is an approach to prototype inheritance in perl6 | ||
i have the same example in js, if you have nodejs installed you can run it with node /filename.js, but you'll need 1 function i didn't include to get the multi-inheritance to work right | 14:59 | ||
its kinda a one-to-one mapping, so it might not be the right approach for perl6, but i just wanted to see how it might work | 15:00 | ||
flussence | looks pretty nice | ||
15:00
mkramer joined
|
|||
ash_ | the question is, what happens if you mix a normal class and a prototyped class? also, should i have to say protoclass B is A.new or should the .new be implied? | 15:01 | |
flussence | I think that should be implied there | 15:02 | |
moritz_ | "mix" in what sense? | ||
15:02
colomon left
|
|||
gfldex | ash_: how close do you want it to be with JS? | 15:02 | |
ash_ | gfldex: i don't care if it matches JS i just want the concept to transfer | 15:03 | |
moritz_: "mix" as in a prototype class inheriting from a normal class, or a normal class inheriting from a prototyped class | |||
gfldex | then .new is wrong alltogether | ||
ash_ | i am not sure i follow | 15:05 | |
gfldex | var mommy = {baz: function(){ console.log('baz')}}; var child = {}; child.__proto__ = mommy; # that's what new does; mommy.another = function(){console.log('another')); child.another(); | ||
in JS a prototype _is_ some other object, not a clone of some other object | 15:06 | ||
and there is only one object that dont got a prototype, usually called Object | |||
i lied a bit. new creates an empty object, then calles the cunstructor function as a method of that object and then sets the prototype | 15:11 | ||
in most implementations it sets .constructor to the constructor function so you have something type-like | |||
ash_ | got ya, i think i understand, i'll look up __proto__ i don't know what that attribute is | ||
gfldex | if you do foo.bar() the runtime will look for ['bar'] in foo, if it doesnt find it it looks in foo.__proto__['bar'], if it doesn't find it it looks in foo.__proto__.__proto__['bar'] ... * | 15:13 | |
JS got the most stupid way to have inheritance :) | |||
ash_ | hmmm | 15:14 | |
and saying var foo = new Foo; sets foo.__proto__ = Foo.prototype? | |||
15:14
cotto left
|
|||
gfldex | it sets foo.prototype.__proto__ = Foo.prototype | 15:16 | |
ash_ | okay | ||
gfldex | ash_: developer.mozilla.org/en/JavaScrip...ject/proto | ||
ash_ | i just found that, and i am reading it now | 15:17 | |
gfldex | ash_: developer.mozilla.org/en/JavaScrip..._Revisited | ||
ash_: don't forget that functions are objects in JS, what is very usefull | |||
ash_ | ya, i know, but i don't know how that can translate logically to perl6, unless there is some special way of saying this function-like object is also possibly an object, which is why i used 'protoclass' in that example i wrote up instead of 'class' | 15:18 | |
15:18
colomon joined
15:19
Guest23195 joined,
am0c^ left
|
|||
gfldex | you have to overload .(), what doesnt work right now | 15:19 | |
moritz_ | not? | ||
rakudo: class A { method postcircumfix:<( )>($x) { say "OH HAI $x" } }; A.new.('JS') | 15:20 | ||
p6eval | rakudo 8827d0: OUTPUT«OH HAI Capture()<0xfd60708>» | ||
ash_ | is that a raw capture? | ||
wonder why its not OH HAI JS... | |||
moritz_ | rakudo: class A { method postcircumfix:<( )>(\$x) { say "OH HAI $x" } }; A.new.('JS') | ||
p6eval | rakudo 8827d0: OUTPUT«OH HAI Capture()<0xfd5e3f0>» | ||
moritz_ | rakudo: class A { method postcircumfix:<( )>(\$x) { say "OH HAI $x[0]" } }; A.new.('JS') | ||
p6eval | rakudo 8827d0: OUTPUT«OH HAI JS» | ||
ash_ | rakudo: class A { method postcircumfix:<( )>(\$x) { say "OH HAI $x[0]" } }; A.('JS') | 15:21 | |
p6eval | rakudo 8827d0: OUTPUT«OH HAI JS» | ||
moritz_ | ash_: I remember it has to do with lazy context, but I don't remember the exact reasons | 15:22 | |
gfldex | rakudo: class A { method postcircumfix:<( )>(\$x) { say "OH HAI $x[0]" } }; my $a = A.new; $a('o.0'); | ||
p6eval | rakudo 8827d0: OUTPUT«OH HAI o.0» | ||
gfldex | there might be a open ticket that needs closing | ||
gfldex goes looking for ticket | |||
moritz_ wonders how far you can get with has $.proto handles *; | 15:26 | ||
afk | 15:27 | ||
ash_ | okay, but i thought the whole point of prototype-based OO was you had a prototype object that you cloned, so you have your prototype of your object that you clone into an instance, but it requires the prototype to be pretty malleable, and the interesting thing is you can use your sub-objects to make new objects via the same cloning operations. its not all that different than what p6 does already, it just has different semantics for de | ||
object | |||
15:29
mantovani left
|
|||
gfldex | that's not how JS is doing it | 15:30 | |
you have an empty object that is cloned | |||
but why would you want to clone an empty hash? | |||
ash_ | well, there are some implied things your getting via Object.prototype | 15:31 | |
gfldex | nope | ||
you get implied things from Object | |||
and for any var a = {}; you get a.prototype.__proto__ = Object.prototype | 15:32 | ||
so if you get all the properties from Object that are there or added later at runtime | 15:33 | ||
15:33
Ross joined,
Ross left,
Ross joined
|
|||
gfldex | and that's why JS sucks :) | 15:33 | |
ash_ | okay, well, one sec, lets look at another language that does prototype-based inheritance | ||
lua does prototype-based | |||
in lua, a new object is made from a hash, so: Vector = { } \n function Vector:new(x) ... end; makes a new object you can call new from by doing: Vector:new(0) | 15:34 | ||
gfldex | what does setmetatable(object, { __index = Vector }) do? | 15:35 | |
ash_ | but really Class:method is syntax sugar for Vector.new(self, argx) so | ||
thats like: my $obj = { ... }; bless $obj, 'Vector'; return $obj; | 15:36 | ||
15:36
pyrimidine joined
|
|||
ash_ | its the same as JS sorta, if self.x fails it looks in __index.x then in __index.__index.x etc... | 15:37 | |
15:37
jaldhar left
15:39
oyse left
15:40
cotto joined
15:42
am0c joined
|
|||
ash_ | you could emulate the whole prototype thing with a couple of hashes and a dispatch function | 15:44 | |
gfldex | indeed | 15:45 | |
ash_ | it would be nice to be able to do most of that without having to uses hashes though | 15:50 | |
15:52
sjn left
15:53
risou joined
15:54
ruoso left
15:56
Italian_Plumber left
15:58
justatheory joined
|
|||
ash_ | is there a way to tell if something is callable? | 15:59 | |
16:00
M_o_C joined
|
|||
PerlJam | ash_: I think if it has a "do" property, it's callable. | 16:00 | |
TimToady | rakudo: say &print does Callable | ||
p6eval | rakudo 8827d0: OUTPUT«Null PMC access in clone() in 'infix:<does>' at line 37 in 'infix:<does>' at line 537:CORE.setting in main program body at line 22:/tmp/NXqor71nBI» | ||
TimToady | oo | ||
rakudo: sub foo {}; say &foo does Callable | 16:01 | ||
p6eval | rakudo 8827d0: OUTPUT«foo» | ||
ash_ | rakudo: say &print.can('invoke'); | ||
p6eval | rakudo 8827d0: OUTPUT«» | ||
16:01
am0c left
|
|||
ash_ | &print is probably because its in pir? maybe? | 16:01 | |
the Null PMC access i mean | |||
either way /submits bug | |||
TimToady | rakudo: say &infix:<Xxx> does Callable | 16:03 | |
p6eval | rakudo 8827d0: OUTPUT«Could not find sub &infix:<Xxx> in main program body at line 22:/tmp/ZJOpTAhpAM» | ||
TimToady | rakudo: say <a b c> Xxx 3 | 16:04 | |
p6eval | rakudo 8827d0: OUTPUT«aaabbbccc» | ||
ash_ | rakudo: say ?&infix:<xx> | ||
p6eval | rakudo 8827d0: OUTPUT«Bool::True» | ||
ash_ | isn't X a modifier on xx? | ||
TimToady | unless xx is a modifier on X :) | 16:05 | |
ash_ | hmm | ||
good point | |||
rakudo: say ?&infiix:<X> | |||
p6eval | rakudo 8827d0: OUTPUT«Could not find sub &infiix:<X> in main program body at line 22:/tmp/iD8rDYiWbG» | ||
ash_ | err i duno if that would be infix | ||
hmm wonder what it would be | |||
16:05
synth left
|
|||
TimToady | but yes, meta-ops tend to treat their op as the function that they do HOP on | 16:05 | |
ash_ | rakudo: say &infix:<xx> does Callable | 16:06 | |
p6eval | rakudo 8827d0: OUTPUT«Null PMC access in clone() in 'infix:<does>' at line 37 in 'infix:<does>' at line 537:CORE.setting in main program body at line 22:/tmp/_9dcPUttPb» | ||
16:06
am0c^ joined
|
|||
TimToady | so Xxx really means something like crosswith(&infix:<xx>) | 16:06 | |
ash_ | rakudo: multi sub print ($a, $b, $c) { }; say &print does Callable; | 16:07 | |
TimToady | however, a p6 implementation should be able to generate &infix:<Xxx> at need | ||
p6eval | rakudo 8827d0: OUTPUT«Null PMC access in clone() in 'infix:<does>' at line 37 in 'infix:<does>' at line 537:CORE.setting in main program body at line 22:/tmp/onUnnxpcY7» | ||
ash_ | hmmm, so another bug? | 16:08 | |
s/bug/rakudo bug/ | |||
TimToady | well, perhaps the old multi implemention showing through; it didn't really believe in &foo | ||
that should improve with jnthn++'s new model | |||
ash_ | i was testing if i added user-defined part a sub if it would show up as "does Callable" | 16:09 | |
TimToady | and I think that most built-ins are declaraed multi as a matter of policy | ||
*-a | |||
ash_ | rakudo: multi foo { }; say &foo does Callable; | 16:10 | |
p6eval | rakudo 8827d0: OUTPUT«Null PMC access in clone() in 'infix:<does>' at line 37 in 'infix:<does>' at line 537:CORE.setting in main program body at line 22:/tmp/r3Y4_fl37R» | ||
ash_ | ah | ||
so its only mutli's that give the null PMC error then? (possibly, need to check it more) | 16:11 | ||
16:11
Lorn left
|
|||
ash_ | anyone know how to send an update to a ticket in rt.perl.org? | 16:12 | |
i think someone told me once, but i forget these kinds of things | |||
colomon | [email@hidden.address] | 16:13 | |
? | |||
moritz_ | ash_: reply to the confirmation mail | 16:14 | |
ash_ | moritz_: thanks | 16:15 | |
colomon | ah, update. | 16:16 | |
jnthn back from $dayjob | 16:18 | ||
ash_ | gist.github.com/606426 very simple and ugly prototype based objects using hashes and a dispatch function | ||
16:22
kjeldahl left
|
|||
ash_ | gist.github.com/606426 updated to have inheritence | 16:24 | |
TimToady | ash_: did anyone ever answer your = question? = is always mostly-eager; you have to use := to get lazy list binding | 16:25 | |
ash_ | TimToady: i read in something i found about perl6 from 2007 that $ context was eager and @ context was lazy, thats what i was wondering if it is still true | ||
16:28
cdarroch joined,
cdarroch left,
cdarroch joined
16:30
amkrankruleuen left
16:32
dual joined
16:36
Lorn joined
16:39
Chillance joined
16:40
baux left
|
|||
ash_ | jnthn: do you know much about prototype based inheritance? | 16:41 | |
jnthn | ash_: I'd have a clue how to write a PrototypeHOW. :-) | ||
ash_: I guess it's mostly be a case of keeping the method store per object, and the object having also a reference back to its prototype. | 16:43 | ||
ash_ | gist.github.com/606426 does that look reasonable to you? | ||
that is a silly implementation of prototype based objects using hashes and a special dispatch function | |||
the hash based thing does actually run in rakudo currently | 16:45 | ||
the other thing in the gist is sorta a possible way of implementing it | |||
jnthn | Yeah, it looks at least fairly sane. | ||
Once I get the meta-model stuff a bit further along, it could be fun to play with writing a PrototypeHOW | 16:46 | ||
16:46
nymacro left
|
|||
jnthn | (I'm going to be writing ClassHOW in NQP.) | 16:46 | |
TimToady | ash_: the eager/lazy distinction has turned out to be primarily operator driven, not sigil driven | 16:47 | |
ash_ | a concern is what if you pass something other than a prototype to .^prototype? also, how would instance's work? i haven't figured these issues out | ||
16:47
satyavvd left
|
|||
TimToady | $foo may contain something lazy, but +$foo will ask it for .elems if it's Positional, for instance | 16:47 | |
ash_ | TimToady: got ya, thats sorta what i figured after seeing people discuss it in here | ||
16:48
sjn__ joined,
stkowski joined
|
|||
TimToady | it's still kinda true, but it's the need for a scalar operand that derives from something listy, which probably gets bound to some $ internally, but not necessarily from the user's view of sigils | 16:49 | |
jnthn | ash_: IIUC, there are only instances | 16:50 | |
e.g. a new instance is just an object with a prototype pointing to the thing it's an "instance" of. | |||
ash_ | ya | ||
thats how they work | 16:51 | ||
jnthn | Things only get more interesting if you want to start doing v8-esque shadow classes. | ||
ash_ | but would that play nice with the current dispatch logic? for methods, attributes, etc.. | ||
jnthn | I think it's workable. | ||
ash_ | thats more what i wasn't sure of, if it would play nice wit the current system | ||
jnthn | Well, I know the smop++ folks could handle prototype-y stuff, and my API isn't a million miles from that. | 16:52 | |
ash_ | do you know if they had any examples? | 16:53 | |
jnthn | I don't reacall one specifically | 16:55 | |
May be worth looking through the repo. | |||
ash_ | should i use .^prototype or should i use .^add_method / .^add_attribute? | 16:56 | |
jnthn | Very likely .^add_method and .^add_attribute for adding methods and attributes to the prototype. | 16:57 | |
huf | give me back perlcabal.org :) | ||
jnthn | Otherwise, people won't be able to write prototype Foo { has $!x; method foo() { ... } } and have it work out. | ||
16:58
ilogger2 joined
|
|||
ash_ | jnthn: i guess, the thing i am wondering about is what is the difference between doing class A { ... }; then using A.^add_method; vs prototype-based? | 17:00 | |
is the end result any different? | |||
gfldex | with add_method multiple inheritance is easier to handle | 17:01 | |
and you can make less sane assumptions with prototype-chains | 17:02 | ||
or the other way around, prototype based is even more dynamic then add_method | 17:03 | ||
ash_ | i am not sure i understand what you mean by 'more dynamic' | 17:04 | |
gfldex | imagine you want to cache bindings, so you don't have to walk down the prototype chain with each and every method call | 17:05 | |
finding out when you have to flag the cache as dirty is quite tricky | 17:06 | ||
ash_ | thats a concern of normal inheritance too | 17:07 | |
jnthn | ash_: I think the difference is where you stick the method. | ||
ash_: For a class-based system, it lives in the meta-object | |||
For a prototype based one it'd live in the instance. | |||
ash_ | isn't the meta-object an instance? | 17:08 | |
jnthn | Of the metaclass | ||
Not the same thing as an instance of the class | |||
(for the OO case) | |||
ash_ | i am just trying to find out what is different between the two so we can clearly define it for PrototypeHOW | ||
17:09
kjeldahl joined
|
|||
jnthn | I think that a lot of it really is where things like add_method, add_attribute etc put stuff. | 17:09 | |
ash_ | so, prototype-base: methods live in the instance, inheritance checks (recursively) the prototype of the instance | ||
jnthn | Yes | ||
That sounds right. | |||
vs. class-based where methods live in the meta-object, which is referred to by many instances. | 17:10 | ||
ash_ | okay | ||
can those interact with eachother? | 17:11 | ||
should those interact with each other? | |||
jnthn | That probably gets into the messy issue of meta-class compatibility. | ||
17:11
rdesfo joined
|
|||
ash_ | eg: class A is protoclass { ... } { ... } | 17:11 | |
jnthn | (short answer: it's probably painful...) | 17:12 | |
ash_ | or, protoclass A is Mu { } | ||
gfldex | ash_: gist.github.com/606510 imagine this fellow is a prototype of some object, would you do it that way with classes? | ||
jnthn | ash_: My feeling is that delegation is a good direction to look in. | 17:13 | |
PerlJam | what does "interact with each other" mean exactly? | 17:15 | |
ash_ | s/interact/inherit/ | ||
s/with/from/ | |||
rdesfo | is there a perl6 version that works with nokia's n900? | ||
gfldex | o.0 | ||
tadzik | I think so | ||
now how was he named, /^^ snark .+ / I think | 17:16 | ||
PerlJam | If Perl 6 supports prototype-based and class-based object systems, both of those should be built using the same tools so that they are "object compatible" I think. (i.e., you can switch from one object model to the other fluidly) | ||
tadzik | rdesfo: search for perl6 at identi.ca | ||
17:17
mberends joined
|
|||
tadzik | seen snarkyboojum | 17:17 | |
aloha | snarkyboojum was last seen in #parrot 3 days 11 hours ago joining the channel. | ||
ash_ | PerlJam: well, that might prove to be difficult, considering how they both function, but not impossible | 17:18 | |
rdesfo | tadzik: thanks | ||
17:19
MayDaniel joined
|
|||
PerlJam | ash_: yeah, I'm just dreaming a little bit right now :-) | 17:19 | |
ash_ | i think it would be a good first step to prototype prototype-based by itself, then worry about how they interact | ||
gfldex | PerlJam: it's tricky because with prototype based objects augmenting objects is very very easy, both for an instance and a 'class' | 17:21 | |
jnthn -> noms, back later | |||
17:22
Schwern joined
|
|||
ash_ | gfldex: did you see gist.github.com/606426 ? the hash based one does work with rakudo currently, if you want to try it out, its not pretty, but it does basically what prototype-based OO should, i think | 17:24 | |
the 2nd file in the gist is more my idea i am working with for how it might look once PrototypeHOW is implemented | 17:25 | ||
17:27
ruoso joined
|
|||
ash_ | now, how to declare a multi method for a prototype based object is beyond me | 17:29 | |
17:39
rdesfo left
17:44
masonkramer joined,
bluescreen joined
17:50
ruoso left
17:51
bluescreen left
17:52
bluescreen joined
18:13
ruoso joined
|
|||
mberends decommutes uk -> nl | 18:17 | ||
18:17
mberends left
18:18
mavrc joined
18:19
cbk joined
18:23
rlb3 joined
18:25
[Coke] joined
18:31
timbunce joined
|
|||
diakopter | o_O | 18:33 | |
diakopter waits for dalek | 18:34 | ||
18:34
dalek joined,
ChanServ sets mode: +v dalek
|
|||
diakopter | prepare for the onslaught | 18:34 | |
moritz_ | \o/ | ||
diakopter guesses there's lots of catch-up to do | |||
tadzik | oh wow | 18:35 | |
18:36
^Mike joined
|
|||
^Mike | Will Perl6 have a builtin boolean type? | 18:36 | |
tadzik | ^Mike: it alredy does | ||
18:36
dalek left
|
|||
^Mike | fair enough | 18:37 | |
Does it use the words 'true' and 'false'? | |||
tadzik | rakudo: my Bool $a = 7.Bool; say $a.WHAT; say $a.perl | ||
p6eval | rakudo 8827d0: OUTPUT«Bool()Bool::True» | ||
tadzik | rakudo: my Bool $a = false; say $a.WHAT; say $a.perl | ||
p6eval | rakudo 8827d0: OUTPUT«Could not find sub &false in main program body at line 22:/tmp/DR75ZB8MoQ» | ||
tadzik | rakudo: my Bool $a = False; say $a.WHAT; say $a.perl | ||
p6eval | rakudo 8827d0: OUTPUT«Bool()Bool::False» | ||
tadzik | gotcha | ||
^Mike | nice | 18:38 | |
tadzik | so I'm afraid it uses the words True and False :) | ||
ash_ | rakudo: say Bool::False; # is the long name for it | ||
p6eval | rakudo 8827d0: OUTPUT«Bool::False» | ||
ash_ | rakudo: say Bool::True, 1.so, 1.defined; | ||
18:38
tylercurtis joined
|
|||
tadzik | aye | 18:38 | |
p6eval | rakudo 8827d0: OUTPUT«Bool::TrueBool::TrueBool::True» | ||
18:38
dalek joined,
ChanServ sets mode: +v dalek
|
|||
ash_ | rakudo: say 0.so; | 18:38 | |
p6eval | rakudo 8827d0: OUTPUT«Bool::False» | ||
ash_ | .so is a test for iffy | 18:39 | |
tadzik | rakudo: my $you = 5; if $you.say.so {} | ||
p6eval | rakudo 8827d0: OUTPUT«5» | ||
tadzik | rakudo: my $you = "yes"; if $you.say.so {} # better | 18:40 | |
p6eval | rakudo 8827d0: OUTPUT«yes» | ||
ash_ | well, if .so returns True then in an if statement, it would be considered true | ||
18:40
Util joined
|
|||
ash_ | rakudo: say 0.so; if 0 { say 'fail' } else { say '0 is false' } | 18:40 | |
p6eval | rakudo 8827d0: OUTPUT«Bool::False0 is false» | ||
ash_ | rakudo: say ().so | 18:41 | |
p6eval | rakudo 8827d0: OUTPUT«Bool::False» | ||
ash_ | rakudo: say ().WHAT | ||
p6eval | rakudo 8827d0: OUTPUT«Parcel()» | ||
ash_ | rakudo: say Nil().WHAT | 18:42 | |
tadzik | yep. And it's not defined | ||
p6eval | rakudo 8827d0: OUTPUT«Could not find sub &Nil in main program body at line 22:/tmp/qc4507eWG4» | ||
ash_ | rakudo: say 0.defined | ||
p6eval | rakudo 8827d0: OUTPUT«Bool::True» | ||
ash_ | 0 is defined, same with 1...Inf | ||
there is a difference between defined-ness and .so | |||
tadzik | yep | 18:43 | |
TimToady | n | ||
oops | 18:44 | ||
TimToady wasn't disagreeing | |||
disagreeable though he may be | |||
ash_ | rakud say "".defined | 18:45 | |
rakudo: say "".defined | 18:46 | ||
p6eval | rakudo 8827d0: OUTPUT«Bool::True» | ||
18:47
^Mike left
18:56
nooodl joined
|
|||
hudnix | well I just spent a miserable two hours figuring out that the error message "Type objects are abstract and have no attributes, but you tried to access @!foo" in fact had nothing to do with the attribute @!foo or anything else in my class, but was really complaining that I had declared my object with "my $obj;" instead of "my $obj .= new" | 18:56 | |
nooodl | hmm, i'm currently on windows and want to try out rakudo... i'm using parrot, downloaded the rakudo addon. i get an error -- "could not load oplib `perl6_ops'" | 18:57 | |
hudnix | Personally, I would either set up a virtualbox or dualboot linux to try out rakudo if I had a windows box. | 19:00 | |
sjohnson | i would just ask one of your computer pals who runs ubuntu linux as a server somewhere and can give you a shell to play around | ||
hudnix | or that. | 19:01 | |
sjohnson | <--- is using that computer for screen'd irc | ||
tylercurtis | hudnix: When you do "my $obj", you're creating a variable $obj whose value is the type object for the type it is constrained to. In this case, since you didn't specify a type constraint, it's Any, I think. | ||
nooodl | i run ubuntu, too, and perl 6 works on there for sure :) | ||
tadzik | why not just use the Star msi? | ||
have you tried that, nooodl? | |||
nooodl | tadzik, nope | ||
tylercurtis | nooodl: I know that for Rakudo * 2010.07, there's a binary MSI, but I don't think there's one for later releases yet. | 19:02 | |
tadzik | then do. It's supposed to Just Work [tm], and has modules and funny stuff and ponies | ||
nooodl | is there a big difference? | ||
tadzik | well, yes | ||
[Coke] | . | ||
tadzik | if you mean the 2 months difference between releases | ||
19:02
sjohnson is now known as [Pepsi]
|
|||
hudnix | tylercurtis: Yes I gathered that, eventually, it's just that the error message didn't immediately point me to suspect that that was the problem, as it was complaining about something inside the class. | 19:02 | |
[Pepsi] | ( `ー´) | 19:03 | |
[Coke] | phenny: tell moritz_ I don't have that access for TPF. | ||
phenny | [Coke]: I'll pass that on when moritz_ is around. | ||
tadzik | jnthn: *poke poke* | ||
nooodl | rakudo star's working | 19:06 | |
hudnix | personally I think there should be a clear demarcation between class methods and instance methods. Then the error would be something like "attempt to call an instance method on a type object". | 19:07 | |
19:08
nsh joined
19:09
sbp joined
|
|||
ash_ | rakudo: class A { method foo { if self.defined { say 'Invoked from class'; } else { say 'Invoked from instance'; } }; say A.foo, A.new.foo; | 19:12 | |
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
ash_ | rakudo: class A { method foo { if self.defined { say 'Invoked from class'; } else { say 'Invoked from instance'; } } }; say A.foo, A.new.foo; | ||
p6eval | rakudo 8827d0: OUTPUT«Invoked from instanceInvoked from classBool::TrueBool::True» | ||
19:15
ruoso left
19:20
ingy joined
|
|||
ash_ | rakudo: class A { multi method foo (where { ?self.defined }) { say 'Invoked from class'; }; multi foo ( where { !self.defined }) { say 'Invoked from instance'; } } }; A.foo; A.new.foo; | 19:21 | |
p6eval | rakudo 8827d0: OUTPUT«===SORRY!===Can not do non-typename cases of type_constraint yet at line 22, near ") { say 'I"» | 19:22 | |
ash_ | std: class A { multi method foo (where { ?self.defined }) { say 'Invoked from class'; }; multi foo ( where { !self.defined }) { say 'Invoked from instance'; } } }; A.foo; A.new.foo | ||
p6eval | std 1d6fdf3: OUTPUT«===SORRY!===Confused at /tmp/XsBA1QzVA5 line 1:------> d }) { say 'Invoked from instance'; } } ⏏}; A.foo; A.new.foo expecting statement modifier loopParse failedFAILED 00:01 120m» | ||
19:22
rlb3 left
|
|||
tylercurtis | ash_: that only works if your instances are defined. | 19:22 | |
19:22
nine joined
|
|||
tylercurtis | ash_, also, I think you need a : after that parameter to specify that it's an invocant parameter. | 19:23 | |
ash_ | is there no way for the where to check tat? | ||
that* | |||
tylercurtis | I think the currently planned way to distinguish type objects and instances is Foo:U versus Foo:D. | 19:24 | |
ash_ | what would the method signature look like? | ||
19:25
ingy left,
ingy joined
|
|||
ash_ | method foo(Foo:U $self:) { }? | 19:25 | |
19:25
timbunce left
|
|||
colomon | foo (A:D $a:) maybe? | 19:25 | |
TimToady | no, A:D is a just type, not a maybe type :) | 19:26 | |
ash_ | multi method foo (A:D $self:) { ... } # so, like that? | 19:30 | |
std: class A { multi method foo (A:D $self:) { say 'Invoked from class' } multi method foo (A:U $self:) { say 'Invoked from instance' } } }; A.foo; A.new.foo; | |||
p6eval | std 1d6fdf3: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/oOP7EIgaVh line 1:------> A:D $self:) { say 'Invoked from class' }⏏ multi method foo (A:U $self:) { say 'In expecting any of: bracketed infix | 19:31 | |
..infix … | |||
ash_ | hmm | ||
std: class A { multi method foo (A $self:) { say 'Invoked from class' } multi method foo (A $self:) { say 'Invoked from instance' } } }; A.foo; A.new.foo; | |||
p6eval | std 1d6fdf3: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/sHxEzbHyjl line 1:------> (A $self:) { say 'Invoked from class' }⏏ multi method foo (A $self:) { say 'Invo expecting any of: bracketed infix | ||
..infix … | |||
19:32
tylercurtis left,
timbunce joined,
[Pepsi] is now known as sjohnson
|
|||
moritz_ | sorear: which mono version is required for niecza? | 19:34 | |
phenny | moritz_: 19:03Z <[Coke]> tell moritz_ I don't have that access for TPF. | ||
jnthn | ash_: Need a ; in there after the } before teh second multi | 19:35 | |
tadzik | jnthn: mind updating the Star msi? | ||
19:37
ruoso joined
|
|||
ash_ | std: class A { multi method foo (A:D $self:) { say 'Invoked from class' }; multi method foo (A:U $self:) { say 'Invoked from instance' } } }; A.foo; A.new.foo; | 19:37 | |
p6eval | std 1d6fdf3: OUTPUT«===SORRY!===Confused at /tmp/3WK75uWjBl line 1:------> elf:) { say 'Invoked from instance' } } ⏏}; A.foo; A.new.foo; expecting statement modifier loopOther potential difficulties: $self is declared but not used at /tmp/3WK75uWjBl | ||
..line 1… | |||
ash_ | whats the "expecting statement modifier loop" from? | ||
moritz_ | sorear: nevermind, just found the README.pod :-) | 19:40 | |
ash_ | rakudo: my $a = method { say $!b }; class B { has $!b; }; my $b = B.new(:b(5)); $b.$a(); # TimToady is that supposed to work? | ||
p6eval | rakudo 8827d0: OUTPUT«5» | ||
TimToady | no | 19:41 | |
ash_ | okay, just wondering, jnthn said it probably won't work in the future | ||
jnthn | tadzik: I'll see if I can do it at the weekend. | ||
tadzik | jnthn++ | ||
jnthn | TimToady: I'm happy for it not to work, though part of me wonders how people will get at attributes if they're constructing a class "by hand" (e.g. using calls on the meta-object). | 19:43 | |
TimToady: I'm happy enough if the answer is "a pragma". | |||
TimToady | or some variant of 'trusts' | ||
jnthn | github.com/jnthn/test-mock/blob/mas...ock.pm#L56 is an example from real code I've written, fwiw. | 19:44 | |
TimToady | ash_: the "expecting statement modifier loop" naturally falls out of what it would have been looking for at the end of a normal statement (which a declaration is, really). but the "Confused" is LTA | ||
when it could report "Unbalanced closing bracket found" | |||
and that could also be one of those messages that is difinitive enough that it should suppress the (automatically generated) list of what it was looking for there | 19:46 | ||
*definitive | 19:47 | ||
ash_ | okay, so that wasn't an error it was more of a warning? | 19:48 | |
TimToady | the error is Confused. the other is just more info about what state the parser was in at the time | ||
a distraction in this case | 19:49 | ||
19:53
kiffin joined
19:54
kiffin left
19:58
uniejo joined
20:02
kiffin joined
|
|||
Grimnir_ | is there any official place to get perl6 modules? | 20:04 | |
or "official"? | |||
tadzik | where they lie is the place :) It's github | ||
moritz_ | modules.perl6.org | ||
Grimnir_ | oh, nice | ||
moritz_ wonders why google still links to proto.perl6.org, which now redirects to modules.perl6.org/ | 20:10 | ||
oh, it's a 302 redirect | 20:11 | ||
should be 301 | |||
gfldex | it's going to take a few more months for google to become self-aware | ||
moritz_ | now it's a 301 | 20:13 | |
20:16
kiffin left
|
|||
Grimnir_ | perlcabal.org seems to be down | 20:23 | |
moritz_ | it is. | 20:24 | |
Is nobody reading p6c? | |||
Grimnir_ | errm... apparently not. what is p6c? | 20:28 | |
moritz_ | the perl6-compiler mailing list | ||
20:31
standz joined
|
|||
moritz_ | (automtatic installation)++ | 20:33 | |
I've just done a 'cpan install App::cpanminus' on a pristine Debian Squeeze | |||
and then a 'cpanm STD' | |||
and it worked all without errors | |||
just had to hit enter a few time to confirm installation of dependencies | 20:34 | ||
now I'm trying 'cabal install Pugs' | |||
that needs 'cabal update' first, but now runs for some time without error | |||
20:45
nooodl left
|
|||
moritz_ | but pugs compilation fails :( | 20:49 | |
21:04
uniejo left,
araujo joined
|
|||
diakopter | moritz_: I didn't get anything from p6c | 21:13 | |
moritz_ | www.nntp.perl.org/group/perl.perl6....g6854.html | 21:14 | |
21:14
ingy left,
ingy joined
|
|||
diakopter | (I mean, I don't remember unsubscribing from that list...) | 21:14 | |
jnthn got the mail | 21:17 | ||
diakopter | moritz_: but which version of ghc do you have | ||
(do we have) | |||
21:17
dalek left
|
|||
moritz_ | The Glorious Glasgow Haskell Compilation System, version 6.12.1 | 21:17 | |
diakopter | hrm | 21:18 | |
21:19
bluescreen left
|
|||
diakopter | moritz_: similar to this error log? hackage.haskell.org/packages/archiv...e/ghc-6.10 | 21:22 | |
fails at 21 of 89 | |||
moritz_ | diakopter: github.com/audreyt/Pugs.hs/issues#issue/1 that's the error | 21:23 | |
uhm, I just realized that for turning SVG::Plot into a Chart::Clicker port, I need to first port Geometry::Primitive and Graphics::Primitive | 21:25 | ||
a dozen and two dozen classes each | 21:26 | ||
diakopter | `o' | ||
21:26
jferrero joined
|
|||
sjohnson | ( `ー´) | 21:27 | |
21:34
timbunce left
21:35
cspencer joined,
synth joined
|
|||
cspencer | was just looking for the perl 6 spec docs, but perlcabal.org seems to be down | 21:36 | |
21:37
synth left
21:38
synth joined,
synth left
|
|||
sorear | good * #perl6 | 21:40 | |
sjohnson | hi | ||
21:40
timbunce joined
|
|||
sorear | moritz_: I develop on mono git master, because it's massively faster. Ergo, I may accidentally depend on something not in 2.4. Let me know if that happens. | 21:41 | |
tadzik | cspencer: yep, it is. You can read them on github though | 21:42 | |
cspencer | tadzik: thanks - which repository are they located in? | 21:43 | |
tadzik | cspencer: github.com/perl6/specs | ||
cspencer | tadzik: thank you! :) | ||
tadzik | cspencer: you're welcome! :) | ||
21:53
sparky_ joined
22:00
sparky_ left
22:03
mjk joined
22:05
cspencer left
22:08
dalek joined,
ChanServ sets mode: +v dalek,
dalek left
22:14
ruoso left
22:16
sjn joined
22:17
dalek joined,
ChanServ sets mode: +v dalek
22:18
dalek left
22:19
dalek joined,
ChanServ sets mode: +v dalek
|
|||
diakopter | ok, dalek should start spewing any time now | 22:19 | |
tadzik panics | 22:25 | ||
It'd be a lot easier if masak was present | 22:26 | ||
hmm, I just thought about something like grep, but with Perl 6 regexes. What do you think? | 22:27 | ||
sorear | diakopter: who is dalek living with now? | 22:28 | |
22:29
timbunce left
|
|||
diakopter | :) | 22:31 | |
67.217.170.47 | |||
sorear | ENORDNS | ||
diakopter | no, just a new vps I just created | ||
moritz_ is busy moving p6eval to it also | 22:32 | ||
we needed to upgrade debian | |||
sorear | I think that's in the same /8 I am; US west coast? | ||
diakopter | actually it's supposedly in Ashburn, VA | ||
Grimnir_ | if I want to make an array of foo of bar, how do I do that? it complains if I do "my Array of Foo of Bar $colors;". if I make "my List of Foo of Bar $colors;", I don't get an error | 22:33 | |
sorear | Grimnir_: 'my @colors' | 22:34 | |
Grimnir_ | yeah ok, I don't have to be explicit about the type, but if I want to? | 22:35 | |
I'm trying to do something kind of like in the perl6 advent: "my Cup of EggNog $mug = get_eggnog(); | 22:36 | ||
" | |||
from perl6advent.wordpress.com/2009/12/1...-18-roles/ | |||
22:36
tylercurtis joined
22:37
saaki joined
|
|||
jnthn | my TypeOfThingInIt @foo; | 22:42 | |
The typename there is the type of the things in @foo, not the type of the container. | |||
Generally, type names always mean "what will I get back if I ask this to give me a value". | |||
So for arrays and hashes it's the type of the value. my Foo &x menas that you want a sub that declares itself as returning foo, because you get a value out of a sub by calling it. | 22:43 | ||
22:51
am0c^ joined
22:54
cspencer joined,
tylercurtis left
|
|||
cspencer | p6eval: enum VarNames <Foo Bar Baz Qux>; my Array of VarNames $a; | 22:55 | |
perl6: enum VarNames <Foo Bar Baz Qux>; my Array of VarNames $a; | |||
p6eval | rakudo 8827d0: OUTPUT«Method '!select' not found for invocant of class '' in main program body at line 22:/tmp/Pk09FOA_4u» | ||
..pugs: OUTPUT«***  Unexpected "of" expecting ":" or "(" at /tmp/ljHebOL6eS line 1, column 43» | |||
cspencer | is there someway i might be able to work around this error? | 22:56 | |
sorear | cspencer: my Array $a | ||
don't declare types on arrays, it WILL NOT WORK | |||
cspencer | sorear: alright, that's easy enough :) | ||
gotcha | |||
sorear | it's one of the bugs listed in the last R* release announcement | 22:57 | |
(not that I can really gloat; Niecza doesn't support type annotations on *anything*) | |||
23:10
kjeldahl left
23:17
am0c joined
23:19
mjk left
23:21
florz joined
|
|||
sorear | hmm | 23:23 | |
I wonder what a good way to handle nextsame; is | |||
I'd rather NOT force all method calls to go through a Perl 6 run-once loop with control exception handlers | 23:24 | ||
they're already one of the most expensive operations | |||
araujo | www.ideone.com/UJUjI | 23:30 | |
23:32
flussence_ joined
23:33
meppl joined,
flussence_ is now known as flussence
23:39
MayDaniel left
23:49
d4l3k_ joined
|
|||
diakopter | d4l3k_: um | 23:49 | |
die die die | |||
23:49
d4l3k_ left
|
|||
Juerd | diakopter: That's a weird way to greet an old friend | 23:49 | |
23:50
d4l3k_ joined
|
|||
Juerd | Feel free to kill it though | 23:50 | |
23:50
d4l3k_ left
|
|||
diakopter | done. | 23:50 | |
touch /service/dalekbot/down | 23:51 | ||
svc -d /service/dalekbot/down | |||
afk& | |||
23:52
Juerd_ joined,
Juerd_ is now known as Juerd
23:58
ruoso joined
|