»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:07
bph left
00:09
p6eval left,
bph joined,
sorear left,
TimToady left
00:10
TimToady joined
00:11
dalek joined,
ChanServ sets mode: +v dalek,
sorear joined
00:13
adriano86 joined
|
|||
adriano86 | anyone know perl 7? | 00:13 | |
00:14
p6eval joined,
ChanServ sets mode: +v p6eval,
bph left,
plobsing left
|
|||
sbp | perl7 is like the speed of light | 00:15 | |
adriano86 | and your coding in perl6 | ||
which makes you retarted by nature | |||
:P | |||
flussence_ | hm, I thought perhaps the incident last night (irclog.perlgeek.de/perl6/2011-03-22#i_3413171) was a one-off. Guess not. | 00:16 | |
sbp | . o O ( someone who formerly lost their tarts in a strange accident? ) | ||
adriano86 | no | ||
its not | |||
im back!! | |||
ah umm | |||
flussence_ | sbp: prosthetic tarts? | ||
adriano86 | hold! | ||
00:16
adriano86 left,
adriano86 joined
|
|||
adriano86 | tadaaa!! | 00:17 | |
00:17
tyatpi_ left
|
|||
adriano86 | guess whos back! | 00:17 | |
00:20
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
00:26
marienz joined,
RichiH joined
|
|||
RichiH | has adriano86 been spamming/trolling in here? | 00:27 | |
flussence_ | today and yesterday. We have logs if you wanna see: irclog.perlgeek.de/perl6/2011-03-22#i_3413171 | 00:28 | |
RichiH | thanks | 00:29 | |
adriano86 | uh? | ||
00:35
noganex left
00:44
plobsing joined
|
|||
diakopter | adriano86: "i dont need a god damn hug; I got a problem that i need solved" isn't really a welcome attitude around here | 00:46 | |
also, name-calling ("idiots") | |||
donri | adriano86: jävlaranama, är du svennebanan också? | 00:48 | |
adriano86 | uh? | 00:50 | |
donri | guess you're using a proxy because you think you're being oh so naughty. | ||
adriano86 | im not following | ||
i just talked to the network ops | |||
and apologized about my behaviour | |||
00:50
woosley joined
|
|||
donri | adriano86++ | 00:51 | |
adriano86 | ye? | ||
donri | i was giving you positive karma :) | ||
adriano86 | ah | ||
jävlaranama, är du svennebanan också? | |||
RichiH | basically, the deal is: let's give him another chance, but please poke marienz or me if there are problems | ||
diakopter | I thought there were no karmabots | ||
adriano86 | my answer is no :P | ||
diakopter | RichiH: okay | 00:52 | |
00:52
noganex joined
|
|||
adriano86 | RichiH wheres the good faith? :( | 00:52 | |
lol | |||
thanks for second chance though | |||
adriano86 taps RichiH | |||
diakopter | sigh | ||
donri | Well, we like to hug trolls and give them second chances -- perl6advent.wordpress.com/2010/12/2...ide-carol/ | 00:56 | |
adriano86 | :D | ||
take care donri ;P | |||
gn | |||
00:56
adriano86 left
|
|||
donri | Sleep tight. | 00:56 | |
01:01
bph joined
01:08
molecules joined,
arlinius joined,
Chillance left
01:09
stkowski left
01:22
molecules left
01:29
bph left,
bph joined
01:40
bph left
01:43
Helios- left
01:44
arlinius left
01:48
Helios- joined
01:49
arlinius joined
02:02
whiteknight left
02:06
tyatpi_ joined
02:15
bph joined
02:26
bph left
|
|||
dalek | ast: b0d6bcf | (Martin Berends)++ | / (2 files): remove S16-filehandles/io.t tempfile, and .gitignore *.niecza |
02:30 | |
02:40
icwiener left,
icwiener_ joined
|
|||
mberends | interesting to read the Jikes JVM GSOC 2011 proposals: infrastructure, garbage collection, concurrency, native structs, ... Sound familiar? jikesrvm.org/Google+Summer+of+Code+2011 | 02:47 | |
02:47
icwiener_ left
02:50
agentzh joined
02:51
tyatpi_ left,
cls_bsd left
02:56
alim left
03:00
orafu left
03:02
GinoMan2440 left,
orafu joined
03:11
tyatpi_ joined
|
|||
sorear | mberends: I think we could usefully pool certain efforts on JVM targetting | 03:26 | |
mberends | oh yay, I am dreading the hugeness of that work :) | 03:27 | |
sorear | I also need a Java component which can generate JVM code with gotos | 03:28 | |
I've historically thought of "I need a JVM port of the CLR bytecode emitter" | |||
03:29
satyavvd joined
|
|||
mberends | it would be nice if the goto related part could be handled by some special code, and the rest handled by standard Java compilers, but I'm not sure if that is achievable. | 03:29 | |
the two bytecode dialects (JVM and CLR) are probably similar | 03:30 | ||
sorear | does the JVM have a managed class-file writer these days? | 03:31 | |
mberends | no idea | 03:32 | |
sorear | niecza relies on System.Reflection.Emit, which is on ~ the same level as ilasm | ||
03:33
GinoMan joined
|
|||
sorear wonders if a jvm version will necessarily entail 1 class per (un-deleted) Perl 6 sub | 03:33 | ||
I haven't seriously studied the JVM since 1.1 days | 03:35 | ||
mberends: should jNQP/jRakudo support gather? | 03:41 | ||
mberends | It Would Be Nice ;) | 03:42 | |
this may help: asm.ow2.org/ also Jasmin contains a B::JVM::Emit cpan.uwinnipeg.ca/htdocs/B-JVM-Jasm.../Emit.html | 03:43 | ||
donri | Jasmin? | 03:44 | |
mberends | JVM Assembler | ||
03:45
s1n joined
|
|||
sorear | mberends: not an option. choose carefully | 03:46 | |
the question of whether to use the native vm activation stack has very pervasive consequences | |||
mberends | good. I don't like blind alleys | ||
yes, I do understand that stack management and concurrency are deeply intertwined. | 03:47 | ||
if gather *demands* CPS, I would be happy to consign gather to the very long term TODO list. | 03:49 | ||
03:49
satyavvd left
|
|||
mberends | life's too short to spend on goals like that, while far simpler problems are still unsolved, such as getting reasonable speed. | 03:51 | |
sorear | niecza/.net uses CPS, and imho it gets reasonable speed. | 03:56 | |
mberends | several serious Perl 5 users have told me they would not compile their current perl 5.12.x with threads enabled because of an approximate 15% performance penalty, so speed is a major issue to at least that group. | 03:57 | |
yes, I think niecza's speed is very nice, one of its nice attributes :) | 03:58 | ||
04:02
nymacro joined
04:03
c9s joined
|
|||
sorear | Perl 5 relies heavily on global variables | 04:05 | |
the "threads penalty" is really a "thread local storage" penalty | |||
for the same reason -fpic hurts perl5 quite a bit | 04:06 | ||
sorear is reading the asm.ow2.org stuff | |||
mberends | I find it surprising that those users prefer a single thread that is 15% faster, to potentially maany more threads that are 15% slower. It shows the preferences and priorities of Perl used in heavy production work (ie most heavy work cannot yet profit from multithreading) | 04:09 | |
04:10
c9s left
|
|||
sorear | mberends: perl 5 threads are shared-nothing | 04:10 | |
mberends | good! | ||
sorear | mberends: real Perl 5 programmers use UNIX, and on unix fork() is just as fast as pthread_create() | ||
fork() gives you all of the benefits of Perl 5 threads without the performance penalty, and is heavily used in real-world p5 code | 04:11 | ||
mberends | oh yes, I sneaked a Unix fork into Perl 6 (Rakudo Zavolaj) for fun :) | 04:12 | |
it probably scales better today. The Parrot developers (bacek++ I believe) have done great work slimming down the size of the Rakudo perl6 process (now 50-60MB as the spectests are running here, was over 100MB) | 04:13 | ||
donri | Real Scotsmen use coroutines | 04:14 | |
mberends | :) | ||
sorear | mberends: does core.pir still require 2000MiB to generate? | 04:18 | |
I stopped following rakudo when it became effectively unbuildable | 04:19 | ||
mberends | it was about 300MiB recently, I'll watch the next one build and let you know | ||
coldhead | scotsmen? | 04:23 | |
mberends | en.wikipedia.org/wiki/No_true_Scotsman | ||
coldhead | no further questions, your honour! | 04:25 | |
04:25
starcoder2 left
|
|||
mberends | just use coroutines! | 04:25 | |
04:27
starcoder2 joined
04:29
flatwhatson left
|
|||
sorear | mberends: ASM is exactly what I need. Thank you. | 04:29 | |
04:29
flatwhatson_ is now known as flatwhatson
|
|||
mberends | sorear: great! | 04:29 | |
mberends thinks of stealing sorear++'s future niecza/jvm work for 6model/jvm ;) | 04:31 | ||
sorear | mberends: I ask about gather because a common jvm backend for niecza and 6model would benefit from them agreeing on whether to use CPS | ||
mberends | yes of course. | 04:32 | |
sorear | I'm probably going to use CPS for niecza/jvm, just because I already know how to make a CPS niecza backend for JVM clones work | ||
mberends | I personally remain skeptical about the long term performance competitiveness of CPS versus stack-based. | ||
sorear | "CPS versus stack-based" is the wrong mental model | 04:34 | |
mberends | it seems to me that in CPS the heap must be used to do much of the stack's job, and the heap is a performance drain. CPS kind of turns your memory into a heap of mini-stacks. | ||
sorear | the question is whether to use the VM's current continuation to model Perl 6's current continuation | 04:35 | |
mberends | but please correct my mental model. | ||
sorear | or whether a different VM structure needs to be used | ||
mberends | I lack the knowledge to make a meaningful comment | 04:36 | |
sorear | the JVM current continuation is fast but inflexible; stuff like gather/take and two-phase continuable exceptions are hard | ||
a continuation is a data structure which holds a return path | 04:37 | ||
mberends | ok | ||
sorear | the JVM implements continuations using opaque stacks; it provides insufficient operations to handle Perl 6 | ||
Perl 6 is designed to be barely runnable using a stack for a language-level continuation, which in practice means that none of the existing implementations are up to the task | 04:38 | ||
mberends | to handle which parts of Perl 6 - gather, junctions I suppose, and what else? | 04:39 | |
sorear | CATCH | ||
$*FOO | |||
mberends | you're beginning to answer your own question, I think | 04:40 | |
sorear | both require scanning up the call stack, which is possible on the CLR but incredibly inefficient (it's basically only designed to be used at breakpoints) | ||
mberends: the question for you is how important these features are | 04:41 | ||
mberends | I've understood "walking the stack" before, but that was with native code, probably therefore a bit different. | ||
sorear | 6model/.net uses a hybrid model; the continuation is split into the return addresses (which are kept in the CLR stack) and the local variables (which are kept on the CLR heap) | 04:42 | |
naively, this is the worst of both worlds, but it could have some benefits if the CLR implementation is doing interprocedural optimizations | |||
mberends | sorear: to me personally, and the Perl 5 users I wrote about, speed is *almost* everything, and niceties like CPS would be welcome only if the perceived overhead is much less than 15%. | 04:44 | |
The Parrot docs state that CPS is an all or nothing architectural choice. I have always harbored a silent hope that this assertion is not entirely true, and that a hybrid system of flow control can be designed. | 04:47 | ||
donri | Child Protective Services? | 04:49 | |
mberends | yes, that too | ||
sorear | CPS is a horrible misnomer but there's nothing better established | 04:50 | |
niecza has an interesting optimization that allows most code to run using very few frame allocations | 04:51 | ||
04:57
donri left
|
|||
diakopter likes it | 05:00 | ||
sorear | "it" ambiguous. | 05:01 | |
diakopter | hee | 05:02 | |
the framepool | |||
sorear | mberends: do you have any other recommended Java libraries for this? | 05:05 | |
mberends | sorear: afraid not. also, $work is beginning to beckon :( | ||
05:05
aindilis left
05:06
aindilis joined
|
|||
sorear | once I get more tuits I'll look into alternate VMs some | 05:06 | |
I suspect dalvik will run fine on this machine :p | 05:07 | ||
diakopter recalls pointing out asm.ow2 to mberends :P | 05:12 | ||
I think. | 05:13 | ||
sorear | diakopter: you do java? | ||
diakopter | when asked to by my employers | ||
oh btw, did you see? sfly is buying tiny prints | 05:14 | ||
$333m | 05:15 | ||
sorear | I don't even know what sfly is. *fails* | 05:17 | |
diakopter | oh, my employer's stock symbol | ||
short for Shutterfly | |||
someone please come work for us. I wrote this job description and posted this position: sfbay.craigslist.org/pen/sad/2270751187.html | 05:20 | ||
mberends | diakopter: Am I allowed to choose on which part of the planet I stay? ;) | 05:22 | |
diakopter | actually, possibly. | 05:25 | |
stay long-term/mostly, anyway | 05:26 | ||
email me @gmail for details, anyone. Sorry for somewhat [OT] | 05:27 | ||
05:27
Lorn left
05:28
Lorn joined
|
|||
mberends | sorear: don't apply! come to (Netherlands|Sweden) instead! | 05:28 | |
diakopter | sorear's too young to have 5-10 years experience supporting production UNIX environments :P | ||
sorear | I've heard rumours the Swedish immigration process is hell | 05:29 | |
mberends | sorear must have a time machine that compresses 20 years of experience into 5 | ||
sorear | diakopter: around 2007 I was supporting 3 production UNIX environments simultaneously. Can I count that as 3 years? | 05:30 | |
diakopter | hm | ||
05:44
ruslan joined,
ruslan left
|
|||
Tene | "depends on negotiation ability" seems pretty unfortunate, but likely true almost anywhere. | 05:45 | |
diakopter | yes :D | ||
05:45
sftp joined
|
|||
diakopter | such a healthy qualifier | 05:45 | |
Tene | I've got most of what's asked for there. | ||
05:47
nulrsan joined
|
|||
diakopter suggests taking such a convo to priv | 05:47 | ||
Tene | I'm not comfortable negotiating. In the past, when speaking with employers about compensation, I've told them that, and so far it's happened to work out well for me. "i'm not comfortable negotiating, and I'm underinformed and poorly calibrated about my value to the company and the job market in this area. If I'm going to work for you, I have to trust you anyway, so I trust you to make me a fair offer." | 05:48 | |
I guess I'm better-informed and better-calibrated these days, though. | |||
TiMBuS | im a metrologist. i will be the judge of that | ||
its just rare for people to even say the word 'calibration' outside of my work so i get excited | 05:49 | ||
Tene | It's not very common in my workplace, but trying to have a sense of how well-calibrated I am on various tasks has been an important tool in my life. | 05:51 | |
sorear | I use calibrated a lot but never with regards to people | 05:52 | |
I have a lot of improvised measuring devices in my life | |||
Tene | I somehow have a vague expectation that someday my habit of placing large amounts of trust in people will fail badly, but so far it's always worked out very well for me, so I'm probably going to keep it up at least until it fails. | 05:53 | |
TiMBuS | can you trust me to hold your gold egg laying goose | 05:54 | |
Tene | Sure. | 05:55 | |
diakopter | hee | 05:56 | |
TiMBuS | aw, you called my bluff. i wouldn't steal it because im too nice. i would just pet it | 05:58 | |
sorear | Tene: how often do you turn your back on strangers? go out in public without a shotgun? | 05:59 | |
a lot of people are a lot more trusting than they realize. You are, relatively to the baseline, a lot less trusting than you say | 06:00 | ||
diakopter | I would make the goose eat its own eggs | ||
mberends | Tene: I have negotiated in a similar way to you before, with the added declaration that I am not averse to leaving if it the offer turns out to be unfair to me. | ||
s/it// | |||
Tene | mberends: It's also relevant that money hasn't ever been the deciding factor in my employment choice. I've found places that I want to work at with a team that I like, and then the compensation details have been secondary to that. | 06:04 | |
I've always meant to try to start caring more about money, but I haven't been able to manage it yet. | |||
mberends | a healthy balance is the key | 06:05 | |
sorear | Tene: you should think of being in an environment you actually want to work in as part of the benefits package | 06:07 | |
Tene | sorear: Yes, I should. Effectively, though, it's been the deciding factor every time so far. | 06:08 | |
It would probably be useful to me if I could care about money more. | |||
mberends | we are probably not the kind of people who would have invented money, but since money is so pervasive it helps to manage it so that it doesn't manage us. | 06:11 | |
06:12
nulrsan left
06:14
sftp left
|
|||
diakopter | real money isn't invented; it comes to be as a measure of the medium of exchange. fiat money is invented. | 06:16 | |
and yes, I used one of the naughty words ('real', 'true', 'correct', 'actual', 'right') | |||
06:16
mkramer1 joined,
mkramer left
06:18
alim joined
|
|||
mberends | what makes me very sad is that modern financial systems have put many people into various situations of economic slavery, resulting in terrible actions such as even murder and suicide. | 06:18 | |
diakopter tooo | 06:19 | ||
06:19
cosimo left
|
|||
sorear | wanted: 1x anarcho-socialist utopia | 06:19 | |
diakopter should note, I wasn't contradicting mberends' comment | 06:20 | ||
wanted: 1x anarcho-capitalist utopia | |||
"It would probably be useful to me if I could care about money more." -> | 06:21 | ||
s/could/needed to/ s/money/where life essentials came from/ | 06:22 | ||
mberends | commute & # on-topic for once ;) | 06:23 | |
sorear | I think that's the definition of "poor" | ||
06:30
mberends left
|
|||
sorear out | 06:43 | ||
06:47
kaare_ joined
07:00
woosley1 joined
07:03
woosley left
07:09
wtw joined
07:28
alim left,
noganex_ joined
07:31
noganex left,
Axius joined
07:38
woosley1 left,
[particle] left
07:46
tyatpi_ left
07:47
f00li5h left
07:49
Mowah joined
08:03
ilogger2 joined,
ChanServ sets mode: +v ilogger2
08:14
woosley1 joined
|
|||
dalek | ok: edeee38 | (Patrick Donelan)++ | src/roles.pod: s/does affect/does not affect/ |
08:16 | |
08:19
fhelmberger joined,
Axius joined
08:33
quester_ joined
08:35
alim joined
08:56
tzhs joined
09:02
Trashlord joined
09:06
f00li5h joined,
Axius left
09:17
Axius joined
09:18
woosley1 left
09:23
quester_ left
09:51
dakkar joined
|
|||
dalek | ecs: cf855ee | moritz++ | S32-setting-library/IO.pod: [S32::IO] bring INET stuff closer to reality |
09:54 | |
09:58
dual joined
10:04
tzhs left
10:19
Axius left
|
|||
moritz_ | mberends++ # roast commit b0d6bcf; those temp files were annoying, but somehow I always searched in the wrong places... | 10:19 | |
10:25
awoodland joined
10:28
Helios- joined
10:33
gfldex joined,
bacek joined
10:38
ascent_ joined
10:50
Helios- left
|
|||
moritz_ | phenny: tell sorear FYI rakudo build mem usage currently peaks at ~600MB on a 64bit platform. ISTR that the GC threshold depends on available mem, so might be different on your machine | 10:50 | |
phenny | moritz_: I'll pass that on when sorear is around. | ||
10:51
Helios- joined
11:07
ggoebel joined
11:11
ggoebel left
11:17
ggoebel joined
11:21
ggoebel left
11:23
shi joined
11:27
ggoebel joined
11:34
awoodland left
11:58
plainhao joined
12:05
ab5tract joined
|
|||
takadonet | morning all | 12:11 | |
12:27
mtk joined
|
|||
moritz_ | hi takadonet | 12:38 | |
12:45
tyatpi_ joined
12:47
ab5tract left
12:55
nadim_ joined
12:56
mtk left
12:58
ascent_ left,
ascent_ joined
12:59
tadzik left
13:03
mtk joined
13:06
bluescreen10 joined
13:08
estrabd joined
13:10
tzhs joined
13:14
[particle] joined
13:17
bluescreen10 left,
mce_ro joined,
bluescreen10 joined
13:19
MayDaniel joined
13:24
xhr joined
13:30
xhr left
13:33
MayDaniel left
13:39
nulrsan joined
13:49
kfo joined
13:56
tyatpi_ left
13:57
plobsing joined
14:11
spq joined
14:15
spq left
14:25
sftp joined,
bluescreen10 left
14:30
alester joined
|
|||
moritz_ | phenny: tell mberends you might consider coming up with a NQP-on-JVM GSOC proposal | 14:32 | |
phenny | moritz_: I'll pass that on when mberends is around. | ||
colomon | \o | 14:44 | |
jnthn | o/ colomon | 14:45 | |
colomon | jnthn! \o/ | ||
How goes it? | 14:46 | ||
dalek | p/ctmo: 81203dc | jonathan++ | src/Regex.pir: Fix --target=pa[rse|st] - got broken at some point in this branch. |
||
jnthn | colomon: Nicely :-) | ||
colomon: I'm in Taipei :) | |||
colomon | wheee! | ||
jnthn | City of nice noms :) | ||
moritz_ | how is the hacking climate over there? | ||
14:46
alester left
|
|||
jnthn | The city is too distracting ;-) | 14:46 | |
14:46
alester joined
|
|||
colomon got six inches of snow overnight, and it hasn't stopped yet. :( | 14:47 | ||
jnthn | I've settled down now to write a very small purely NQP language implementation to use in my talk on Sunday, which is about writing compilers :) | ||
colomon | is NQP the language to be implemented or the language supporting the implementation? ;) | 14:48 | |
jnthn | The latter :) | ||
The language being implemented is called TinyLang because I had a creativity fail | |||
PerlJam | jnthn: just implement lisp :) | ||
moritz_ | colomon: wow. It's quite sunny and warm here, it's the first day I didn't wear a coat while visiting lunch nom location (5 minutes walk or so) | ||
colomon | moritz_: we had a week or two of nice weather, but winter suddenly came back yesterday. | 14:49 | |
14:50
alester left,
alester joined
15:00
tadzik joined
15:04
dukeleto joined
15:05
tyatpi_ joined,
nick joined
|
|||
nick | whoami | 15:05 | |
moritz_ | you're nick. Congratulations. | 15:06 | |
nick | thank you, moritz | ||
this is a quiet room | |||
PerlJam | nick: it's your imagination | 15:07 | |
moritz_ | not generally, just today | ||
nick | so, what is the major purpose of this room for? | 15:09 | |
PerlJam | nick: Discussion of all things Perl 6 | ||
moritz_ | Perl 6 development, community and fan base :-) | ||
PerlJam | and sometimes things Not Perl 6 | ||
But mainly punning | 15:10 | ||
moritz_ | nick: btw that's what the /topic command is for | ||
nick | ok, i am sort of out of fashion using irc | 15:11 | |
moritz_ | fashion is overrated | 15:12 | |
PerlJam | nick: that's okay, we follow a very broad interpretation of the Postel principle around here. | 15:13 | |
nick | maybe it is a stupid question, what is perl6 for? so many new script language, modern, fast, widely used, perfectly designed for internet age, like python, ruby, lua. perl6 even not compatible with it's prior versions. | 15:15 | |
15:16
pmurias joined
|
|||
PerlJam | nick: That's actually a very good question IMHO | 15:16 | |
mathw | It sort of goes right to the heart of why we're here | ||
PerlJam | nick: Perl 5 did a lot of things right. But in the process it did a lot of things wrong. Perl 6 is about doing more things right. :) | 15:17 | |
nick: that's one slice of the answer | |||
15:18
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
mathw | nick: Python 3 is also not compatible with its prior versions, although the change is less dramatic than with Perl 6 I believe | 15:18 | |
PerlJam | nick: Perl 5 is widely deployed and used. Since Perl 6 has been in the works, several features have been ported to work with Perl 5. So, in that sense, Perl 6 is a testbed for new ideas for Perl 5. | 15:19 | |
mathw | Perl 6 also is intended to be a better language than Python, Ruby, Lua etc. (for some value of 'better'). Just because they exist is not a reason not to try something better. | 15:20 | |
nick | yes, that is what i think and expect, but how does it compete with others? can it even take place of perl5? how long will it take to do so? | ||
PerlJam | nick: Why does it need to? | 15:21 | |
sbp | nick: as probably more an observer than these guys, it might interest you to know that in my mind, perl6 is a hybrid of "cutting edge compsci" with "get-your-hands dirty practicality". so perl6 should allow you to make scripts that are easier to develop and yet more powerful (in certain ways) than with the other languages | ||
PerlJam | nick: Why were python and ruby and lua invented? Why didn't they just use an existing language? (like perl ;-) | ||
sbp | as for the relationship of perl5 to perl6, think of perl6 not as a backwards compatible predecessor, but more as perl5's spunky younger sister | ||
er, *successor | 15:22 | ||
mathw | If Perl 6 does replace Perl 5, it would take a very long time to do so, just because of the vast amount of Perl 5 code that's out there | ||
That kind of transition simply isn't feasible, and won't happen. | |||
moritz_ | for me, Perl 6 is the successor of all general scripting languages | ||
sbp | a spunky younger sister doesn't replace her elder sibling | ||
moritz_ | others disagree :-) | ||
sbp | but she might be more cooler and fun to go out with | ||
mathw | What I hope to see is new projects being written in Perl 6. | 15:23 | |
nick | you know, history is burden, perl5 code is already deployed all over the world. | ||
mathw | yes, so is COBOL code | ||
sbp | perl6 is doing better than python3 at least :-) | ||
mathw | But other languages have come along since, and how much new code is written in COBOL now? | ||
PerlJam | mathw: people still write new COBOL code (mainly to support some old COBOL code in a new world) | 15:24 | |
sbp | python3 shows nicely the danger of doing a sucessor to a major language in a more incremental way | ||
mathw | PerlJam: that doesn't really count | ||
sbp | (infuriatingly, because python is my work-a-day programming language still) | ||
mathw | PerlJam: they don't start a completely new project in COBOL... well, not many of them | ||
sbp: From what I've see, Python 3 hasn't done much more than irritate people | 15:25 | ||
PerlJam | sbp: but python3 *will* replace python2 at some point soonish. (perhaps too soonish :) | ||
15:25
nulrsan left
|
|||
moritz_ | where "soonish" is probably "half a decade" or so | 15:26 | |
PerlJam | right | ||
we're all about the long now here :) | |||
sbp | not for as long as they keep releasing 2.x versions at least :-) | ||
PerlJam | sbp: well, the other option is that the python community forks itself to keep the 2.x series alive. | 15:27 | |
sbp | wouldn't surprise me at this rate | ||
moritz_ | would be a real pity, considering how small the difference between 2 and 3 is | 15:28 | |
sbp | and the fact that 3 is actually better | ||
it's just that the advantage vector is of a smaller magnitude than the backwards compat disadvantage vector | 15:29 | ||
moritz_ | at least in the short term | ||
nick | then, who is doing the blueprint work in perl6? larry wall anticipated? | ||
PerlJam | time changes everything :) | ||
sbp | by that time we'll all be using perl6 | ||
PerlJam | nick: larry wall is our language designer, yes | ||
tadzik | hello zebras | ||
moritz_ | though others also contributed a lot to the language | 15:30 | |
moritz_ only tiny parts | |||
15:30
hudnix joined
|
|||
moritz_ | hello panda herder, tadzik :-) | 15:30 | |
PerlJam | moritz_: I don't know ... I think all of the discussion on #perl6 has contributed quite a bit the language over the years. | ||
moritz_: so, in a way, we've all had "major influence" on the language | |||
nick | what is the status of perl6? any authorized major release? | 15:32 | |
PerlJam | nick: The Rakudo compiler releases every month. | ||
moritz_ | and niecza has roughly regular releases too | ||
both are usable for some applications, and pass parts of the official test suite | |||
moritz_ -> commute | 15:33 | ||
nick | how about deployment, what is it's mainly used for and what is it designed for? | 15:34 | |
sbp | github.com/rakudo/star/downloads | ||
PerlJam | nick: everything. | ||
tadzik | it's design for getting the work done, in my experience. And it's not widely used in "production", but e.g. masak-san's blog runs on Perl 6 | ||
strangelyconsistent.org I think | 15:35 | ||
15:35
alim left,
kaare_ joined
|
|||
sbp | a lot of language work depends on people having written billions of modules | 15:35 | |
but there's no perl6 cpan equivalent (yet) | 15:36 | ||
PerlJam | sbp: also, a good chunk of Perl 6 obviates the need for certain modules :) | ||
15:36
hudnix left
|
|||
sbp | yup. depends what you're doing of course | 15:36 | |
say you want to parse a JSON file | 15:37 | ||
tadzik | "There's a module for that!" :) | ||
15:37
hudnix joined
|
|||
sbp | of course, you could just write the p6 grammar for JSON... :-) | 15:37 | |
15:37
donri joined
|
|||
nick | sbp, yes, that is my major doubt, perl5 code everywhere, they may be a tough trouble to be overcame by perl6 | 15:37 | |
sbp | no trouble really | 15:38 | |
if there's perl5 and you want to use perl5, use perl5 | |||
nobody's going to shout at ya :-) | |||
certainly people in the perl6 community will try to build better tools | |||
tadzik | Perl 6 is not the next version of Perl. It's a new language, and there's a reason for that | 15:39 | |
sbp | consider anything with a grammar, say. even my JSON example | 15:40 | |
people are going to look at good perl6 JSON code and say, yeah, I trust that more than say python's json module (which I use as an example because I know from experience it has problems!) | |||
and part of that will be based on the fact that grammars are a key, core feature of perl6 | |||
jnthn | It turns out Perl 6 (or a subset of it, even) is quite nice for writing compilers in. :) | 15:41 | |
nick | ok, understood your guy's opinion, perl6 is not successor of perl5, perl6 is new for modern use, perl6 is designed for no compatible with perl5, right? | ||
tadzik | right | ||
well, it is a successor | |||
sbp | it's a successor but it doesn't replace | ||
the spunky younger sister metaphor is really quite handy | |||
nick | ok, that make sense, i am sort more interested in perl6. | 15:42 | |
tadzik | cool | 15:43 | |
nick | any short tutorial for perl6's glory technique spot? | ||
PerlJam | nick: which one? ;) | ||
tadzik | nick: are you a Perl 5 programmer? | 15:44 | |
donri | define compatible, you should be able to use Some::Module :from<perl5>; | ||
nick | i don't know, i just wanna have a glance at perl6 and taste it's famous flavor. | 15:45 | |
sbp | here's a glance: | ||
sub nonexistent-or-older($target, :than($source)!) { | |||
return $target.IO !~~ :e | |||
|| $target.IO.changed before $source.IO.changed; | |||
tadzik | check out the Advent Calendar then | ||
nick | mainly, i am php,python programmer | ||
15:45
leprevost joined,
fhelmberger left
|
|||
tadzik | nick: perl6advent.wordpress.com/ | 15:45 | |
sbp | } | ||
tadzik | some "Perl 6 at it's awesomest" examples | ||
PerlJam | nick: github.com/perl6/book too | 15:46 | |
15:46
fhelmberger joined
|
|||
nick | great, thank alot to you guys all. | 15:46 | |
15:46
TimToady joined
|
|||
donri | also github.com/perl6/perl6-examples | 15:46 | |
PerlJam | nick: I've been writing some various "introduction to X" articles for Perl 6 at github.com/perlpilot/perl6-docs/tr...ster/intro | ||
donri | also rosettacode.org/wiki/Category:Perl_6 | ||
PerlJam | nick: *definitely* look at the rosettacode | 15:47 | |
nick | btw i am not nick, it is a mistake, i am laurence.miao | ||
tadzik | no no, no perl6-examples | ||
I don't think much of this code even runs | |||
x3nU was fixing it some time ago, but I don't think he moved it any forward significantly | 15:48 | ||
donri | shouldn't rosettacode.org/wiki/JSON#Perl_6 use a % sigil? | ||
tadzik | rosettacode is nice if you want to see how practical solutions in Perl 6 compare to the others | ||
PerlJam | donri: why? | ||
donri: I mean, it *could*, but why should it? :) | 15:49 | ||
donri | i duno | ||
nick | quite late my local time, have to hit bed | ||
15:49
Rotwang joined
|
|||
nick | c u, perl6 guys | 15:49 | |
PerlJam | donri: scalars are the ultimate polymorphic containers in Perl | ||
sbp | oh, you guys did make a JSON parser already | ||
moritz_++ tadzik++ | |||
tadzik | nick: see you soon :) | ||
PerlJam | sbp: modules.perl6.org is your friend :) | 15:50 | |
donri | PerlJam: i thought they behaved differently for e.g. lists | ||
but i suppose you can @($foo)? | |||
tadzik | moritz_++, I didn't do anything about JSON parser :) | ||
15:50
nick left
|
|||
sbp | what is github.com/perl6/misc reserved for? | 15:52 | |
anything in particular? | |||
donri | why is 'is' used for export, rw, copy...? | ||
flussence_ | 'is' is a generic extendible adverb thing | 15:53 | |
donri | i thought it was only inheritance | ||
and that 'does' or 'but' would make more sense | |||
flussence_ | 'is native' uses it too | ||
sbp | I'd like to document the things that we just told nick/laurence.miao on Github somewhere | ||
somewhere in the perl6 organisation namespace sounds like a good idea | |||
on a wiki | |||
PerlJam | sbp: go for it! | 15:54 | |
sbp | hence my asking what misc is for: would misc/wiki be a good place for it? | ||
(using Github's built in wiki functionality) | |||
PerlJam | As good as any. | ||
sbp | okay, making it | 15:55 | |
PerlJam | sbp: if you have the appropriate commit privs, no one is going to yell at you for using them :) | ||
sbp: and if someone comes up with a better place, we can move it then | |||
jnthn | donri: is actually ends up calling trait_mod:<is>, which is multi-dispatch. That decides what actually happens. | 15:56 | |
donri | intrusting | 15:59 | |
TimToady | 'does' and 'but' have strictly circumscribed meanings; 'is' is allowed to do anything to the identity of the declarand | 16:02 | |
donri | also, is it 'also is Foo;' or just 'is Foo;' inside blocks? | ||
I see both used in examples | |||
TimToady | 'also' is newer, less ambiguous | 16:03 | |
16:03
shi left
|
|||
TimToady | "It's not what you does, but who you is." :) | 16:03 | |
donri | :D | 16:04 | |
and you can use that inside arbitrary blocks? | |||
TimToady | only inside the block of a known declarand | ||
which happens to be dynamically scoped in the parser | 16:05 | ||
in fact, in STD it's called $*DECLARAND | |||
it's convenient that the lexical scopes of your program can be represented by dynamic scopes in a recursive descent parser... | 16:06 | ||
donri | I should quote you on that on Facebook and see what grandma' thinks | 16:07 | |
16:08
tzhs left,
ronoreck joined
16:10
hercynium joined
|
|||
sbp | .title github.com/perl6/misc/wiki/Get-Into-Perl6 | 16:19 | |
phenny | sbp: Get Into Perl6 - GitHub | ||
tadzik | sbp++ | 16:20 | |
tadzik adds this and that | 16:22 | ||
moritz_ | somebody please add this to perl6.org somewhere | 16:25 | |
tadzik | github.com/perl6/misc/wiki/_compare/1a3a...17a8 -- my tunes | 16:26 | |
16:29
ymasory joined,
dsp_ joined
16:31
bluescreen10 joined
16:32
dsp_ left,
MayDaniel joined
16:34
dsp_ joined
16:37
xinming joined
16:42
ymasory left
16:45
bluescreen10 left,
mce_ro left
16:55
cdarroch joined,
cdarroch left,
cdarroch joined
16:58
donri left
16:59
donri joined
17:00
bluescreen10 joined,
icwiener joined
17:08
ymasory joined,
fhelmberger left
17:22
donri left
17:24
plobsing left
17:34
ronoreck left
17:38
plobsing joined
17:40
donri joined,
risou joined
17:45
ronoreck joined,
pmurias left
17:50
snearch joined
18:05
impious joined
18:06
stkowski joined
18:11
[hercynium] joined,
[hercynium] left,
[hercynium] joined
18:12
[hercynium]_ joined,
[hercynium]_ left,
[hercynium]_ joined
18:14
hercynium left
18:15
[hercynium] left
18:22
qu1j0t3 joined
18:27
alim joined
18:31
alim left
18:43
MayDaniel left
18:45
alim joined
18:49
snearch left
18:51
dakkar left,
alim left
18:56
alim joined
18:59
alim left
19:03
Chillance joined
19:07
dsp_ left
19:14
saaki joined
19:16
dsp_ joined
19:17
dsp_ left
|
|||
donri | How do I do this inline without subset? my Str where /^H/ $s = 'Hello' | 19:22 | |
19:26
dsp_ joined
19:27
impious left
19:29
mce_ro joined
|
|||
colomon | rakudo: my Str where { $_ ~~ /^H/ } $s = 'Hello; say $s | 19:35 | |
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===In "my" declaration, typename Str must be predeclared (or marked as declarative with :: prefix) at line 22, near " where { $"» | ||
colomon | std: my Str where { $_ ~~ /^H/ } $s = 'Hello; say $s | ||
p6eval | std 4608239: OUTPUT«===SORRY!===Multiple prefix constraints not yet supported at /tmp/wYlWxgatBP line 1:------> my Str ⏏where { $_ ~~ /^H/ } $s = 'Hello; say $sMalformed my at /tmp/wYlWxgatBP line 1:------> my Str ⏏where { $_ ~~ /^H/ } $s = | ||
..'Hell… | |||
19:37
awoodland joined
|
|||
tadzik | ...Hell... | 19:44 | |
19:46
bluescreen10 left
|
|||
TimToady | std: my | 19:51 | |
p6eval | std 4608239: OUTPUT«===SORRY!===Malformed my at /tmp/la8cjjmMrv line 1 (EOF):------> my⏏<EOL> expecting scoped declaratorParse failedFAILED 00:01 118m» | ||
TimToady | std: my Str $s where /^H/ = 'Hello'; say $s; | 19:52 | |
p6eval | std 4608239: OUTPUT«ok 00:01 123m» | ||
TimToady | rakudo: my Str $s where /^H/ = 'Hello'; say $s; | ||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Confused at line 22, near "my Str $s "» | ||
TimToady | rakudo: my Str $s where (/^H/) = 'Hello'; say $s; | ||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Confused at line 22, near "my Str $s "» | 19:53 | |
TimToady | rakudo: my (Str $s where /^H/) = 'Hello'; say $s; | ||
p6eval | rakudo d5ccf9: OUTPUT«Hello» | ||
TimToady | donri: ^^ | ||
19:54
plobsing left
|
|||
colomon | std: my (Str $s where /^H/) = 'Hello'; say $s; | 19:57 | |
p6eval | std 4608239: OUTPUT«ok 00:01 126m» | ||
colomon | TimToady++ | 19:58 | |
PerlJam | Though when it takes the language designer 3 tries to get it right, I have to wonder if there's a language misfeature lurking there. | 19:59 | |
:-) | |||
sbp | valid in std but not in rakudo means that rakudo is behind, doesn't it? | 20:16 | |
nyi? | |||
tadzik | I think it depends | 20:19 | |
can be a bug too | |||
20:32
mce_ro left
20:33
leprevost left
20:42
jcowan joined
|
|||
jcowan | If you create a class using roles, what is the best way to get the attributes of those roles initialized appropriately? | 20:43 | |
20:44
dsp_ left
|
|||
tadzik | what do you mean: appropriately? | 20:45 | |
jcowan | Appropriately relative to the class which does those roles. When I construct an instance, how do I communicate with the roles to tell them how to initialize their attributes? | 20:46 | |
s/the class/a class | |||
20:47
leprevost joined
20:50
bluescreen10 joined
|
|||
donri | Not sure you want roles there, but don't trust me. | 20:51 | |
20:51
masak joined
|
|||
masak | hei hei zebras | 20:51 | |
jcowan | For example, suppose that there's a role Breakable with methods break and fix and attribute broken. If Frobnitz (a class for representing various physical components) does Breakable, and I'm constructing a Frobnitz, I want to inform it of the current state of the (physical) frobnitz. | 20:52 | |
This is not the same as calling break if it's broken, since break represents a change of state. Nor do I want a public method set_broken in Breakable, since that allows you to corrupt the state without doing a proper change of state. | 20:53 | ||
20:53
dsp_ joined
|
|||
jcowan | In some way I want to, as it were, pass the brokenness directly to the role. Any suggestions about that? | 20:53 | |
20:53
ymasory_ joined
|
|||
jcowan | s/break represents/calling break represents | 20:54 | |
donri: can you elucidate? | |||
20:54
bluescreen10 left
|
|||
masak | this sounds interesting. | 20:54 | |
masak backlogs | |||
20:56
mj41 joined
|
|||
donri | jcowan: can't you just have it be an argument to .new? | 20:56 | |
I'm probably misunderstanding :) | 20:57 | ||
jcowan | Sure. But the broken attribute belongs to Breakable, not to Frobnitz. | ||
donri | But if it does Breakable it mixes it in? | 20:58 | |
jcowan | This, I think, is why classic traits don't allow state: all attributes live in classes only, and the traits just have required accessors and mutators. But it's much more compact to have the role keep state as Perl does. | ||
donri | Frobnitz.new(:broken) Frobnitz.new(:!broken) standard .new should permit this methinks? | 20:59 | |
jcowan | Hmm. That may work, although I haven't seen things explained that way. Of course, you will be hosed if you have a conflict of attributes in different roles. | ||
21:00
plobsing joined
|
|||
colomon | hmmm... I think the only time I've done a role with an attribute, I just initialized the role's attribute from the classes that "does" the role. | 21:00 | |
in .new, I mean. | |||
donri | But aren't attributes mixed in with the class doing the role? | ||
colomon | right, so you can treat them as if they are attributes of the class. | 21:01 | |
jcowan | Ah, okay. In that case, how are conflicts between attribute names in different roles resolved? | ||
donri | And much of the point with roles *is* to get conflicts (as opposed to unpredictable overrides) | ||
jcowan nods. | |||
So what that means is that the attributes of a role are part of its public API. | 21:02 | ||
donri | Unless it's $!private, I guess | ||
no idea if those behave differently from class-private attributes though | |||
jcowan | So then the question becomes: how do parts of the private state of the role get initialized? | 21:03 | |
masak | <TimToady> "It's not what you does, but who you is." :) | ||
TimToady++ | 21:04 | ||
colomon | jcowan: this might be closer to what you were looking for: | ||
role Pet { | |||
has $.collar = Collar.new(tag => Tag.new); | |||
donri | rakudo: role Breakable { has $!broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken | ||
p6eval | rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz' in main program body at line 22:/tmp/YzRwBHVmRi» | ||
colomon | but I don't know if that's implemented in Rakudo yet. | ||
donri | rakudo: role Breakable { has $!broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken)!broken | ||
p6eval | rakudo d5ccf9: OUTPUT«Method '!broken' not found for invocant of class 'Frobnitz' in main program body at line 22:/tmp/zIApJhCfuR» | ||
donri | rakudo: role Breakable { has $.broken }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken | 21:05 | |
p6eval | rakudo d5ccf9: OUTPUT«Bool::True» | ||
masak | jcowan: I'm now caught up. the thing about roles is that after class composition, they barely exist. | ||
jcowan: they've left most of "responsibilities" over to the class. | 21:06 | ||
jcowan nods. | |||
masak | jcowan: they're mainly used just for method resolution. | ||
IOW, the answer to what you first asked does indeed seem to be "it's already in the class, don't worry" | |||
jcowan | Which means that BadRole can reach in and mess with the state of GoodRole if it can induce you to create a class that does both BadRole and GoodRole. | ||
masak | your second question, about private state, I think is deeper. | 21:07 | |
jcowan | i.e. roles are not units of encapsulation really. | ||
masak | jcowan: I suppose that's theoretically possible. | ||
jcowan: but my guess is that I'd consider something along the way to making that happen bad coding. | |||
donri | jcowan: I think that's by design, mix in one role that depends on one of a set of other roles to be mixed in too? | ||
21:08
leprevost left
|
|||
donri | or is that crazy, masak? :) | 21:08 | |
masak | rakudo: role GoodRole { has $.attr is rw }; role BadRole { method be_bad { $.attr = 42 } }; class C does GoodRole does BadRole {}; given C.new { .be_bad; say .attr } | 21:09 | |
p6eval | rakudo d5ccf9: OUTPUT«42» | ||
masak | jcowan: like that? | ||
donri: things are usually crazy :P | |||
donri | how about role-privates, do they become class-privates in a shared namespace? | 21:10 | |
masak | donri: I wouldn't have a role depend on another role without explicitly marking it somehow. | ||
donri: yes. again, role composition. | |||
jcowan | I invented roles all by myself^W^W^W independently of the Perl community after reading the Smalltalk trait stuff and mixing it in with "Modular Reasoning in the Presence of Subtyping". | ||
donri | and how about class-privates and inheritance? | ||
jcowan | masak: Yes | ||
masak | jcowan: well, I'd consider that to be what the programmer asked for. namely trouble. :) | 21:11 | |
jcowan agrees. | |||
masak | donri: child classes can never see private attributes. | ||
donri: unless, I guess, their parents 'trust' them. | |||
donri | masak: and you can have conflicting names, without, uh, conflicts? | ||
masak | aye. | 21:12 | |
jcowan | I'm considering the merits of roles as a full replacement for inheritance; so far I like them MUCH better. | ||
donri | cool | ||
21:12
qu1j0t3 left
|
|||
donri | take that python ("name mangling", hah!) | 21:12 | |
jcowan | Mangling is an implementation detail. | ||
donri | jcowan: both are probably useful for different uses, and complete each other? | ||
masak | rakudo: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; say B.new(A{ :f(5) }, :f(42)).foo | 21:13 | |
p6eval | rakudo d5ccf9: OUTPUT«flattened parameters must be a hash or array in main program body at line 22:/tmp/P6lqekbOYG» | ||
masak | oh my, I've forgotten the syntax. :) | ||
donri | jcowan: name mangling is string programming :P | ||
masak | no, it seems that's right. | ||
alpha: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; say B.new(A{ :f(5) }, :f(42)).foo | |||
p6eval | alpha : OUTPUT«421» | ||
masak | alpha had a bug there. should say 5. | 21:14 | |
alpha: class A { has $!f; method foo { say $!f } }; class B is A { has $!f }; B.new(A{ :f(5) }, :f(42)).foo | |||
p6eval | alpha : OUTPUT«42» | ||
jcowan | (Noob question: Why am I seeing subscripted HLs in output? | ||
) | |||
donri | it's "NL" | ||
colomon | NL, newline | ||
masak | jcowan: they're NL's. that's the symbol for "newline". | ||
moritz_ | .u  | ||
phenny | U+2424 SYMBOL FOR NEWLINE () | ||
donri | rakudo: print 42 | ||
p6eval | rakudo d5ccf9: OUTPUT«42» | 21:15 | |
moritz_ | phenny is our Unicode expert | ||
jcowan | Oh, okay, must be the small font I'm stuck with in this idiot webclient I'm stuck with. | ||
donri | (Same as la_fen doi djan) | ||
jcowan | Yeah, I've been around her a long time. | 21:16 | |
donri | jcowan: ctrl plus? :) | ||
jcowan | Screws up the carefully arranged XChat-simulation. | 21:17 | |
Hmm, it actually works now! | |||
And yes, the  works now. Must be a new release of the webchat client. | 21:18 | ||
"works" in the sense "doesn't look like HL any more" | |||
donri | Oh, you can do 'my $!role-private', cool | ||
jcowan | So back to the semantic issue: if we want "broken" to be really truly private, nobody can corrupt it from outside the role (a) can we do that? (b) if we can, how can we initialize it safely? | 21:20 | |
colomon | rakudo: role Breakable { my $.broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken | 21:21 | |
p6eval | rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz' in main program body at line 22:/tmp/_uEWHz8lpo» | 21:22 | |
colomon | rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken).broken | ||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Null PMC access in get_attr_str()» | ||
colomon | whee! | ||
donri | rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new(:broken)!broken | ||
masak | jcowan: you can use a my variable, with or without the twigil. | ||
donri | iswhatyoumeant | ||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Null PMC access in get_attr_str()» | ||
masak | jcowan: but then it will be per-role, not per-object. | ||
colomon | masak: if you don't use the twigil, is it per role composition or per object? | 21:23 | |
rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new().broken | |||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Null PMC access in get_attr_str()» | ||
masak | colomon: the 'my' goes on the scope, so it's per role. | ||
donri | my Frobnitz does Breakable[False] = .new; #? :D | ||
colomon | rakudo: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new() | 21:24 | |
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Null PMC access in get_attr_str()» | ||
masak submits rakudobug | |||
colomon | masak++ | ||
masak | rakudo: class Frobnitz {}; say Frobnitz.new().broken | ||
p6eval | rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz' in main program body at line 22:/tmp/rC0X6OTubG» | ||
colomon | niecza: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new() | ||
p6eval | niecza v3-80-g3cc93a7: OUTPUT«===SORRY!===Twigil ! is only valid on attribute definitions ('has'). at /tmp/VIStGHz9bQ line 1:------> role Breakable { my $!broken ⏏= Bool::False; }; class Frobnitz does BrAction method trait_mod:does not yet implemented at | ||
../tmp/VIStGHz9bQ… | |||
colomon | std: role Breakable { my $!broken = Bool::False; }; class Frobnitz does Breakable { }; say Frobnitz.new() | 21:25 | |
p6eval | std 4608239: OUTPUT«ok 00:01 122m» | ||
colomon | interesting | ||
masak | colomon: was just going to do that :) | ||
sorear: are you aware of the above? my guess is yes. | |||
colomon | the spec definitely has the my $!spleen; example in the section on roles | ||
donri | 'my $!spleen;' is the example in S14 | ||
masak | sure. | ||
donri | what again was the syntax for calling a method of a particular parent? | 21:30 | |
moritz_ | .Class::method | ||
donri | but you can't use that with roles eh? | 21:31 | |
for attributes or anything | |||
moritz_ | correct; roles flatten out | ||
donri | can you access lexical scope somehow? | ||
moritz_ | by being in it | ||
donri | :D | 21:32 | |
jcowan | So it looks like roles aren't firewalled from one another when they are done by the same class. Bummer. | ||
(in the sense that the private stuff of a superclass is firewalled from its subclasses) | |||
donri | jcowan: but classes do that | 21:33 | |
thus "Not sure you want roles there" | 21:34 | ||
jcowan nods. | 21:35 | ||
It's still better than inheritance, especially multiple inheritance. | |||
(Another newb question: when a class does a role, does it get the option of renaming stuff brought in from the role?) | 21:36 | ||
21:37
contempt joined
|
|||
donri | so how about parametric roles? | 21:37 | |
21:37
contempt left
|
|||
donri | rakudo: role Breakable[$state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz does Breakable[False] .= new; say $f.broken | 21:38 | |
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===In "my" declaration, typename Frobnitz must be predeclared (or marked as declarative with :: prefix) at line 22, near " does Brea"» | ||
donri | No idea how you do values as parameters though | ||
rakudo: role Breakable[$state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) .= new; say $f.broken | 21:39 | ||
PerlJam | jcowan: re renaming-- yes | ||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Symbol '$f' not predeclared in <anonymous> (/tmp/VfsFlL1HVX:22)» | ||
jcowan | Okay, thanks. I think my questions are answered: roles are much better than superclasses, but they don't subsume them 100%. | 21:41 | |
donri | rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) .= new; say $f.broken | 21:42 | |
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Symbol '$f' not predeclared in <anonymous> (/tmp/QQjqfLaCec:22)» | ||
donri | anyone? | ||
rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my (Frobnitz does Breakable[False]) $f .= new; say $f.broken | |||
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===Confused at line 22, near "my (Frobni"» | ||
donri | rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz does Breakable[False] $f .= new; say $f.broken | 21:43 | |
p6eval | rakudo d5ccf9: OUTPUT«===SORRY!===In "my" declaration, typename Frobnitz must be predeclared (or marked as declarative with :: prefix) at line 22, near " does Brea"» | ||
21:49
alester left
|
|||
donri | rakudo: role Breakable[Bool $state] { has $.broken = $state }; class Frobnitz {}; my Frobnitz $f does Breakable[False] .= new; say $f.broken | 21:50 | |
p6eval | rakudo d5ccf9: OUTPUT«Method 'broken' not found for invocant of class 'Frobnitz' in main program body at line 22:/tmp/3ybnPpsRN6» | ||
21:51
[hercynium]_ is now known as hercynium
21:55
nymacro joined
22:00
poincare101 joined
|
|||
poincare101 | perl6: say3; | 22:00 | |
p6eval | niecza v3-80-g3cc93a7: OUTPUT«===SORRY!===Undeclared routine: 'say3' used at line Any()1Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 387 (CORE die @ 2) at /home/p6eval/niecza/src/STD.pm6 line 1141 (STD P6.comp_unit @ 75) at | ||
../home/p6eval/niecza… | |||
..pugs: OUTPUT«*** No such subroutine: "&say3" at /tmp/PDlFmagzN9 line 1, column 1-5» | |||
..rakudo d5ccf9: OUTPUT«Could not find sub &say3 in main program body at line 22:/tmp/T_AovOypHL» | |||
poincare101 | what the hell is that? | 22:01 | |
masak | poincare101: it's a missing space between 'say' and '3'. | ||
poincare101 | perl6: say 3; | ||
p6eval | pugs, rakudo d5ccf9, niecza v3-80-g3cc93a7: OUTPUT«3» | ||
poincare101 | 'perl6: say 3;' or rakudo:, niecza:, std:, | ||
masak | poincare101: digits are valid parts of identifiers, so Perl 6 tried to find the subroutine 'say3'. | ||
poincare101 | masak: I see. | ||
22:03
tyatpi_ left
22:10
PZt joined
|
|||
poincare101 | I wish you guys would be done with Perl 6. I don't like python. everyone's dropping perl in favor of python and php. | 22:11 | |
donri | :D | ||
22:12
f00li5h left
|
|||
masak | poincare101: thanks for the encouragement. we'll try to finish quickly. ;) | 22:12 | |
donri | ...five years later... | ||
22:12
kaare_ left
|
|||
masak | poincare101: (oh, and please consider helping in one way or the other.) | 22:13 | |
donri | "guys i implemented macros now" | ||
poincare101 | :) | 22:14 | |
masak: I'll try. | |||
22:14
nerd6478 joined
|
|||
tadzik | poincare101: if someone's dropping anything for PHP there is no hope for him anyway | 22:14 | |
poincare101: are you a Perl 5 person? | 22:15 | ||
22:16
nerd6478 left
|
|||
masak | tadzik: as much as I dislike PHP, I disagree. | 22:17 | |
tadzik: PHP is largely a badly written tool with insufficient community practices to prevent badly written code. but that doesn't mean there's not quality PHP code out there. | 22:18 | ||
MediaWiki is one example. | |||
at some point, MediaWiki was a Perl script, but it was rewritten in PHP. | 22:19 | ||
...they seem to be doing pretty well... :) | |||
donri | Funny how a crappy language became to response to lack of nice web frameworks in existing languages | ||
masak | yeah. | ||
PHP is easy to deploy. | |||
donri | And funny how the response to that was nice web frameworks in non-crappy languages. | 22:20 | |
22:20
mtk left
|
|||
donri | Python is dead-simple to deploy. :P | 22:20 | |
'epio upload' done :D | |||
masak | perhaps a nice language with a nice framework, being by definition two steps, will always somehow lose in ease-of-deployment. | ||
until we ship our awesome Rakudo-for-web distribution, that is :) | |||
tadzik | masak: I don't say there is none | 22:21 | |
donri | Perl 6 needs something like WSGI/PSGI I say | ||
masak | donri: agreed. | ||
tadzik | it has | ||
masak | well, it needs it at a massive scale. | ||
donri | What does it have? | ||
I don't mean what I think Web.pm does | |||
22:22
mj41 left
|
|||
tadzik | github.com/mberends/http-server-simple/ | 22:22 | |
I wrote a few apps for that | |||
masak | tadzik++ | ||
tadzik | masak: Web.pm isn't a one, big monolith, but rather a set of tools, correct? | 22:23 | |
donri | ok github.com/mberends/http-server-si...-small.pl6 | 22:24 | |
but is that the best way to do it in p6? | |||
masak | tadzik: correct. it's an "incubator" for web-related projects. | 22:25 | |
donri: no. | |||
donri | i mean how about gather/take for example | ||
masak | what about it? :) | 22:26 | |
donri | for lazy data without content-length perhaps? | ||
or with content-length, for serving files/streams | |||
tadzik | masak: so it'd be doable to fix those modules, one at a time? | 22:27 | |
flussence_ | .oO( PHP 5 is a usable language now, it's just a shame it took 7-8 years to get to that point... ) |
||
22:28
mtk joined,
nymacro left
|
|||
donri | "or IO::Handle-like object" ok I guess that works for laziness? | 22:29 | |
masak | tadzik: yes. I'm kinda hoping for that. I still believe some of them have merit. | 22:31 | |
notably, Hitomi and Squerl. | 22:32 | ||
tadzik | no tests for astaire? | 22:34 | |
donri | no docs for web.pm? | 22:36 | |
22:36
whiteknight joined
|
|||
donri found some pdfs | 22:39 | ||
why does astaire use 'get path => block' rather than say, 'get path: block'? | 22:40 | ||
tadzik | how would that parse? | ||
donri | get(path, block) | 22:41 | |
hm but it'd end up path.get(block) right | |||
poincare101 | tadzik: (sorry, missed what you said) yeah, I'm a perl 5 person. Moved to Python because of crap OO though. | ||
tadzik | poincare101: there's a list of Most Wanted modules we want ported from Perl 5, so you might want to contribute there | 22:42 | |
github.com/perl6/misc/wiki/Get-Into-Perl6 | |||
poincare101 | masak: I like ruby on rails. Its a very good web framework. | ||
donri | rakudo: sub foo { return 1, 2 }; say foo.WHAT | 22:44 | |
p6eval | rakudo d5ccf9: OUTPUT«Parcel()» | ||
donri | can you return a Parcel for P6SGI? | ||
sub app($env) { 200, {:content-type('text/plain')}, "OHAI" } | 22:45 | ||
tadzik | nope | 22:47 | |
donri | how boring | ||
tadzik | It's supposed to be compatibile with Perl 5 | 22:48 | |
donri | o_O | ||
tadzik | but but, it'd be nice to return any Positional | ||
patches welcome :) | |||
masak | poincare101: Rails has its good points. :) | ||
Tene | jcowan: You may also want to look into 'handles' for attributes. | 22:54 | |
22:54
tyatpi_ joined
23:00
silent_h_ joined
|
|||
masak | 'night, #perl6. | 23:08 | |
23:08
masak left
23:09
jcowan left
23:10
hercynium left
23:19
poincare101 left
23:31
risou left
23:41
Chillance left
23:49
ymasory_ left,
ymasory_ joined
23:51
ymasory_ left
23:52
ymasory_ joined
23:59
awoodland left
|