»ö« 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. |
|||
jnthn | ah, I see... | 00:00 | |
I suspect the only way we'll really resolve things in that realm is to actually show implementations of other langauge's OO done with 6model. | 00:13 | ||
I'm happy that Tene++ has done some Ruby bits in that area. | |||
sjohnson | perlapls | 00:17 | |
oops, pals* | |||
flussence_ | a single sentence can really ruin someone's day... | 00:18 | |
"# Tab-indented line: outdent from the right, with elastic tab expansion" | |||
Tene | jnthn: one thing that I'm still not understanding well is exactly what type_object_for is for. | 00:22 | |
Hmm. No, that's not my problem. I just need to read more of the code. | 00:23 | ||
jnthn | Tene: It takes as parameters a meta-object and a representation, and returns a type object (that can then be instantiated) that uses the meta-object and has its memory layout, attribute access etc handled by the specified representation. | 00:24 | |
Essentially, it's the point where you bring a meta-object and a REPR together to actually make an object. | |||
00:26
[bjoern] joined
|
|||
jnthn | In Perl 6 that thing is what we then go and install into the package/lexpad/whatever, but for other languages that may not be the right thing. | 00:26 | |
[bjoern] | Is there a quote syntax that I can use where \ are treated as literals, not an escape or anything like that? For windows file paths, say? | 00:27 | |
jnthn | rakudo: say 'C:\lol\cat.txt' | 00:29 | |
p6eval | rakudo e3bd9a: OUTPUT«C:\lol\cat.txt» | ||
jnthn | rakudo: say Q{C:\lol\cat.txt} | ||
p6eval | rakudo e3bd9a: OUTPUT«C:\lol\cat.txt» | ||
[bjoern] | that works no matter what goes after the \? | ||
jnthn | rakudo: say Q{\\lolserver\cat.txt} | ||
p6eval | rakudo e3bd9a: OUTPUT«\\lolserver\cat.txt» | ||
jnthn | That one does | ||
flussence_ | rakudo: say Q{\'} | 00:30 | |
p6eval | rakudo e3bd9a: OUTPUT«\'» | ||
[bjoern] | the ' then does not, I take it? | ||
jnthn | rakudo: say '\\lolserver\cat.txt' | ||
p6eval | rakudo e3bd9a: OUTPUT«\lolserver\cat.txt» | ||
jnthn | Nope. | ||
It does that. | |||
[bjoern] | Thank you. | ||
jnthn | So if you're quoting server paths with \\ in Q{...} is better. | ||
TimToady | Q is the mother of all quote languages | 00:31 | |
the q and qq languages are just Q with mixins :) | |||
jnthn | And someday soon I'll implement mixins in NQP and maybe Rakudo can akshually do it that way :) | ||
sorear | 13:17 < jnthn> * Planned a bit on GLOBAL merging, after discussions with TimToady++ and others | ||
TimToady | niecza: say Q{\'} | 00:32 | |
p6eval | niecza v3-74-ga074df5: OUTPUT«\'» | ||
jnthn | nice :) | ||
[bjoern] was just making sure he can copy and paste the file paths somehow, instead of adding everywhere while wanting to strangle language designers, as he is right now encountering it in some other language... | |||
sorear | "others" did not include the person with the most practical work on GLOBAL merging | ||
TimToady | niecza: say Q:q{\'} | ||
p6eval | niecza v3-74-ga074df5: OUTPUT«\'» | ||
TimToady | hmm | ||
sorear | how much longer will it be until I start being taken seriously? | ||
good * #perl6 | |||
jnthn | sorear: Where can I read the implementation you did of GLOBAL merging? | 00:33 | |
TimToady | sorear: I think jnthn++ simply didn't realize your level of experience in that area | ||
jnthn | sorear: If you've already invented that wheel in a way you think will fly, I'm happy to not re-invent it :) | 00:34 | |
And what TimToady said. | |||
00:34
GinoMan left
|
|||
TimToady | jnthn: that's what niecza is already doing, I expect | 00:35 | |
I had some rudimentary notions of global merging in the original STD, and he's developed it sence | |||
*since | |||
jnthn | I was planning to look at STD for clues... | 00:36 | |
Have had to do a bunch of stuff to try and actually get to the point where implementing packages with GLOBAL will actually be sane. | |||
TimToady | sorear: anyway, the discussions in question were mostly just an accident of who was online at the moment, so you shouldn't take it personally | 00:37 | |
except maybe at me, who is bad at giving people pointers to other people's work... | |||
sorear | TimToady: ok. | 00:42 | |
TimToady | the discussion in question was at irclog.perlgeek.de/perl6/2011-03-12#i_3385772 | ||
and following | 00:43 | ||
sorear | jnthn: most of the implementation that is specifically about GLOBAL merging is in Metamodel.pm6 from 31 to 209 | 00:44 | |
[bjoern] .oO{ posting summaries and pointers to the mailing lists is usually a good approach if one feels people have missed something in realtime discussions } | |||
TimToady | one of the big problems is that both sorear++ and jnthn++ are night owls, and are living on opposite sides of the planet... | 00:45 | |
flussence_ | ooh, niecza *almost* runs Text-Tabs-Wrap's tests... | ||
(it's missing .assuming, and it doesn't like me doing @*INC.push, but I can get it to load the modules without dying now) | 00:46 | ||
sorear | @*INC is useless without BEGIN, no? | 00:47 | |
TimToady: a flat earth with a sun at infinity would be a much nicer place to live. | |||
TimToady | well maybe not useless for require | ||
flussence_ | it's inside a BEGIN... but I found out earlier that rakudo wasn't doing BEGIN at the right time anyway. | ||
TimToady | it'd be pretty cool if the sun were at infinity :P | 00:48 | |
jnthn | sorear: Thanks. | ||
sorear | Rakudo does do BEGIN at the right time, unless you're trying to precompile stuff, which you should be pretty careful of | ||
flussence_ | I dunno, I had it after some use statements that needed it and found out it only worked when I moved it before them | 00:49 | |
sorear | jnthn's ctmo is, AFAIK, the first serious attempt to make precompilation work with BEGIN | ||
TimToady | also @*INC isn't completely useless in the sense that you can modify the original env var before running | ||
jnthn | TimToady: Where does @*INC actually live? | ||
er, the @INC we find, I mean... | |||
sorear | jnthn: I went through a few rounds on the relationship of the compiler's view of eval, etc | ||
TimToady | well, the outermost would be in PROCESS, I'd think | ||
jnthn | TimToady: If we twiddle with it at BEGIN { ... } time, that only runs in the initial compile. | 00:50 | |
sorear | jnthn: in niecza currently the compiler and the user code run in very separate domains; they can't even share objects | ||
jnthn | sorear: Ah, OK...I wasn't aware of that separation. | ||
flussence_ | (I'd get rid of the @*INC stuff if the package managers have a standard way to say "-I these things when you make test or whatever") | ||
sorear | jnthn: so eval() calls-up to the compiler (passing a string), which then calls-down to the user-level code (passing compiled code to the RTS, which runs it) | ||
jnthn | sorear: Heh, we have opposite issues. I have too much shared at the moment. :) | 00:51 | |
So the compiler starts scibbling over itself when bootstrapping... :/ | |||
TimToady | sure, I'm not attached to @*INC at all, except for user-local stuff maybe | ||
jnthn | Ah, I see. | ||
TimToady | mostly 'use' and such should be querying a database-ish view of which module is where | ||
sorear | jnthn: note that I'm using System.AppDomain to do most of the isolation | ||
TimToady | @*INC shouldn't be used to pull things out of the official library, long term | 00:52 | |
this is specced, even | |||
jnthn | TimToady: I guess my question is, if somebody plays with @*INC in a BEGIN, shoudl they expect @*INC to contain their twiddles when they run a pre-compiled version of the code? | ||
PROCCESS is probably one thing we really can't serialize. :) | |||
sorear: Are you planning to keep the isolation in place long-term, or is it something you expect to eliminate eventually? | 00:53 | ||
flussence_ | hm, I think I might move this include-path munging into the readme instead... | 00:54 | |
sorear | jnthn: TimToady has been very clear to me that putting code with global side effects in BEGIN is a bad idea | ||
jnthn: Keep it long term. | |||
TimToady: Concrentely: class Foo { }; eval('class Foo { }; BEGIN say 42') # Output? | |||
s/^/jnthn> / | |||
TimToady | jnthn: well, if you tweak a dynamic variable in the sense of 'my @*INC =', then you've created a new lexical | 00:55 | |
sorear | in niecza's model, modulo BEGIN being NYI, this will output 42\nError merging stashes: MAIN and EVAL_1 have conflicting stashes for GLOBAL::Foo | ||
TimToady | but if you just push the var in PROCESS, I wouldn't expect that to serialize, no | ||
sorear | jnthn> TimToady: Noting that class Foo { }; eval('class Bar is Foo { }; BEGIN say Bar ~~ Foo;') probably should say True | ||
works fine in my understanding | |||
TimToady | yes, 'is' and traits in general are supposed to make things known at compile time | 00:56 | |
otherwise our optimizers won't have squat to work with | 00:57 | ||
jnthn | sorear: I think the above will blow up for the reasons you describe. | ||
sorear: I agree that it's a bad idea to put stuff with side-effects in BEGIN. | |||
sorear | jnthn: I see the firewall as an artefact of trying to implement Perl 6 using Perl 6. Once I'm done prototyping :), I think a C or NQNQP implemention would be semantically saner. | ||
jnthn | sorear: fwiw, I expect Rakudo will handle that BEGIN say Bar ~~ Foo example after the current set of refactors. | 00:58 | |
Today it no way will. | |||
TimToady | it seems to me that what can be merged and what can't is just something we'll have to work out over time | 00:59 | |
01:00
cxreg joined
|
|||
TimToady | "we" being the editorial we there :) | 01:00 | |
sorear | that's been a major driving question in niecza | ||
post-mm | |||
another thing which quite suprised me when I first noticed it, is that in general 'my' stashes are subject to merging too | 01:01 | ||
flussence_ | ok, niecza can *run* 6 of these test files now. Figuring out how to pass the tests is something else... :) | ||
sorear | that's why niecza implements my stashes as being aliases to our-stashes with guaranteed unique names; it cuts out a lot of code duplication | 01:02 | |
TimToady | sorear: under what conditions? | ||
sorear | TimToady: A.pm='my module A;' B.pm='my module B; use A; class A::AB {}'; C.pm='my module C; use A; class A::AC {}'; 'use B; use C;' | 01:03 | |
TimToady | cool | 01:05 | |
01:06
woosley joined
|
|||
TimToady | though it looks a bit augmenty to me to do something like that... | 01:06 | |
01:07
knewt2_ left,
knewt2 joined
|
|||
TimToady | but I suppose if you augment something that was pulled in as lexical aliases, you're in that situation, arguably | 01:07 | |
Tene | jnthn: mind if I merge master into ctmo? | 01:08 | |
master doesn't seem to build against latest parrot. | |||
jnthn | Tene: master into ctmo or ctmo into master? | ||
Tene | master into ctmo. I wanted to play with HashAttrStore, but master doesn't build against latest parrot. | 01:09 | |
01:09
whiteknight left
|
|||
jnthn | Oh, I see | 01:09 | |
Tene | I guess I could just cherry-pick it. | ||
jnthn | Well, try merging | ||
If no conflicts and the same tests pass, +1 | |||
Tene | just 'make test', yes? | ||
jnthn | I was careful not to update the bootstrap in master, so it should be fine | ||
Yeah | |||
It should fail 1 test file at the moment. | |||
Will get to that soonish, depending on how tired teaching a class then flying to Taiwan makes me :) | 01:10 | ||
Tene | Yeah, t/hll/02-modules.t | ||
merge conflict in Makefile.in; should be simple to fix | 01:11 | ||
sorear | jnthn> std: my class Foo { our $x; }; $Foo::x | ||
jnthn | std: my class Foo { our $x; }; $Foo::x | ||
p6eval | std 4608239: OUTPUT«ok 00:01 119m» | ||
sorear | jnthn> are you accepting commands? | 01:12 | |
01:12
cotto joined
|
|||
jnthn | sorear: No, I'm just curious what STD thought about it. | 01:12 | |
sorear | ['Foo', '$x'] is interpreted as the path | ||
there is a 'Foo' in the lexical scope, so Foo is resolved to that | |||
jnthn | sorear: Does that "work" (in the sense of, refers to the $x declared in Foo)? | ||
sorear | imo yes | ||
jnthn | OK, good. imho too :) | ||
I figure that anything in a $Foo::x that we can resolve to a lexical at compile time, we do, and anything else we look in GLOBAL for. Does that fit with what niecza is doing? | 01:13 | ||
er, I mean the Foo bit can be resolved to a lexical. | 01:14 | ||
sorear | jnthn> Is it actually kosher to say $Foo::Bar::x = 42; if you never declared a Foo::Bar? | ||
it has to me, or else flussence_ will get rather annoyed when ey tries to run Text::Tabs::Wrap on Perl 6.0.0 | 01:15 | ||
jnthn: yes, that's basically what niecza is doing | |||
jnthn: niecza makes a handful of exceptions for specific values of Foo (in particular, Foo = "MY"), but that's done in a rather hackish way and I need to overhaul it to get OUTER et al working properly | 01:16 | ||
jnthn | ($Foo::Bar::x) I think in that case it works, but it has to "auto-vivify" packages there to do so. | ||
Which is OK, I guess.. | 01:17 | ||
sorear | my big remaining question is what a stub package looks like | 01:18 | |
01:18
Holy_Cow left,
[bjoern] left
|
|||
sorear | right now niecza doesn't use stub packages; there is no .WHO because the Stash and the type object are accessed from separate names | 01:19 | |
this needs to be fixed | |||
jnthn | I was wondering if Package is basically the "stub pcakage" | ||
sorear | Package is wrong | ||
jnthn | Then if you declare a class with the same name, it just steals the .WHO | ||
At which point any further re-declaration is wrong | |||
sorear | Package is a fossil from the days before type objects, when class A { }; A.WHAT eq 'Class' | ||
jnthn | Hm, true. | ||
Tene | Bah, should have run that make in parallel. | 01:20 | |
jnthn | I suspect after doing $A::B::c = 42 then A.WHAT.say should actually say something though. | ||
I'm not sure what that something should be. | |||
sorear | looks like I've gotten to the end of the ir clog | 01:23 | |
dalek | p/ctmo: 73f5c94 | tene++ | / (4 files): Merge branch 'master' into ctmo Conflicts: build/Makefile.in |
01:27 | |
p/ctmo: 26d43ed | tene++ | / (14 files): Merge branch 'ctmo' of github.com:perl6/nqp into ctmo |
|||
01:31
jmedinar joined,
jmedinar left
|
|||
dalek | p/ctmo: a6496e3 | jonathan++ | src/ (2 files): Make lexical package declarations kinda work (symbol installation is lexical, though a bunch of other bits to do to have real leixcal packages). First actual use of the static lexpad stuff. |
01:37 | |
jnthn | Oops, it's late. | 01:39 | |
Ah well, can do the next pieces tomorrow. | |||
night o/ | |||
colomon | \o | 01:42 | |
01:43
noganex_ left
01:48
alester joined
|
|||
sorear | oops, I was a little too late to give jnthn my last example | 01:49 | |
phenny: tell jnthn Consider: 「module Foo; sub glob($n) is rw { OUR::{$n} }; BEGIN glob('$x') = 12; INIT say glob('$x')」 | 01:50 | ||
phenny | sorear: I'll pass that on when jnthn is around. | ||
sorear | phenny: OUR:: needs to refer to two different objects - the unmerged stash during BEGIN, and the final runtime stash by INIT | 01:51 | |
phenny: tell jnthn OUR:: needs to refer to two different objects - the unmerged stash during BEGIN, and the final runtime stash by INIT | |||
phenny | sorear: I'll pass that on when jnthn is around. | ||
sorear | phenny: tell jnthn I have a vague notion that GLOBAL:: and friends should actually be contextuals. | ||
phenny | sorear: I'll pass that on when jnthn is around. | ||
01:53
Helios` left,
ascent_ left
01:54
ascent_ joined
01:55
Helios` joined
02:11
Helios` left
02:13
LoRe left,
ascent_ left
02:15
GinoMan joined
02:38
ascent_ joined
02:46
LoRe joined
02:47
risou_ joined,
Helios` joined
02:48
risou left
03:03
stkowski left
03:12
wooden left
03:18
alester left,
plobsing joined,
donri left
03:20
Sarten-X left
03:27
GinoMan left,
Sarten-X joined
03:28
GinoMan joined
03:46
risou joined
03:47
risou_ left
04:05
Helios` left,
LoRe left
04:06
Holy_Cow joined
|
|||
dukeleto | does anybody know if any hackathons are planned for YAPC::NA 2011? | 04:06 | |
04:07
ascent_ left
|
|||
perigrin_ | There is space for them around YAPC::NA | 04:11 | |
but I'd need someone to step up and help organize it | |||
04:12
Helios` joined
04:14
ascent_ joined,
benabik left
04:23
Su-Shee_ joined
04:24
nymacro left
04:25
Su-Shee left,
plobsing left
04:36
GinoMan left
04:38
LoRe joined
04:42
woosley left
04:44
Helios` left
04:46
LoRe left,
noganex joined,
risou_ joined
04:47
Helios` joined
04:49
satyavvd joined,
risou left
04:50
plobsing joined
04:56
Holy_Cow left
05:05
sufrostico joined
05:08
LoRe joined
05:32
mtk left
05:40
mtk joined
05:41
orafu left
05:42
orafu joined
05:54
mkramer left
05:55
mkramer joined
05:57
mberends left
06:05
sufrostico left
06:11
Helios` left
06:13
LoRe left
06:14
bacek left
06:15
ascent_ left
06:17
kaare_ joined,
Helios` joined
06:20
sftp left,
agentzh joined
06:21
ascent_ joined
06:46
LoRe joined
06:50
wtw joined
07:04
nymacro joined
07:10
Mowah joined
07:13
alim joined
07:18
alim left
07:19
alim joined
07:23
alim left
07:24
justatheory left
07:32
cjk101010 joined
|
|||
jdhore | moritz_, ping | 07:47 | |
07:52
Su-Shee_ is now known as Su-Shee
07:53
fhelmberger joined
07:54
cosimo joined
07:56
cosimo left,
_jaldhar left
07:57
_jaldhar joined
|
|||
TiMBuS | does perl6 have any kind of.. '//==' operator? | 07:57 | |
07:57
apejens joined
|
|||
moritz_ | jdhore: pong | 07:58 | |
TiMBuS: what would that do? | |||
jdhore | moritz_, could I get a commit bit to the rakudo stuff for tomorrow's release? | 07:59 | |
TiMBuS | compare a value if it is defined | ||
moritz_ | jdhore: you already have | ||
jdhore: pmichaud++ took care of that yesterday | |||
jdhore | ah, I didn't think i did | ||
ah, thanks pmichaud++ | |||
Also, is there any release "time" or just before midnight localtime? | |||
moritz_ | do it however it suits you best | 08:00 | |
jdhore | OK, cool, i'll probably have it released by like 4PM EST :D | ||
moritz_ | deviations +- 1 day are ok | 08:01 | |
dukeleto: there will be a Perl 6 hackathon at YAPC::Russia | 08:02 | ||
08:03
dual left
08:13
Chillance joined
|
|||
jdhore | Well i'll definetly release it on the day (I *HATE* being late for anything and being early can be annoying), I just have work today, tomorrow and Friday so Thursday's just as good and it fits the Rakudo schedule perfectly so :D | 08:20 | |
08:33
cosimo joined
08:37
cosimo left
08:54
alim joined
09:04
f00li5h left
09:17
mj41_nb joined
09:24
f00li5h joined
09:25
dakkar joined
09:28
jww left
|
|||
colomon | dukeleto: I | 09:33 | |
dukeleto: I'll be at YAPC::NA and happy to hackathon. | |||
dukeleto: haven't heard anything in the way of formal plans yet, however. | 09:34 | ||
09:39
_twitch joined
09:46
icwiener joined
09:47
risou joined
09:49
risou_ left
09:56
_twitch left
|
|||
jnthn | o/, #perl6 | 09:58 | |
phenny | jnthn: 01:50Z <sorear> tell jnthn Consider: 「module Foo; sub glob($n) is rw { OUR::{$n} }; BEGIN glob('$x') = 12; INIT say glob('$x')」 | ||
jnthn: 01:51Z <sorear> tell jnthn OUR:: needs to refer to two different objects - the unmerged stash during BEGIN, and the final runtime stash by INIT | |||
jnthn: 01:51Z <sorear> tell jnthn I have a vague notion that GLOBAL:: and friends should actually be contextuals. | |||
10:08
am0c joined
10:14
mj41_nb left
10:22
daxim joined
|
|||
colomon | \o | 10:39 | |
10:40
bacek joined
10:43
kfo_ joined
10:46
kfo left
10:48
risou_ joined
10:50
risou left
11:07
mj41_nb joined
11:13
coldhead left
11:23
_twitch joined
11:48
leprevost joined
11:49
risou joined
11:51
risou_ left
|
|||
jnthn -> stockholm | 11:55 | ||
phenny: tell sorear I'd pondered that GLOBAL lives in UNIT::GLOBAL really. | 11:56 | ||
phenny | jnthn: I'll pass that on when sorear is around. | ||
12:15
satyavvd left
|
|||
dukeleto | colomon: awesome! very interested to hear your talk | 12:25 | |
colomon | awwww.... | ||
12:28
nsh- joined,
nsh| joined,
Koven joined,
mdxi_ joined
12:29
Raynes_ joined,
meraxes_ joined,
Brandon_W_ATS joined,
sorear_ joined,
szbalint_ joined,
p6eval left,
nsh left,
Raynes left,
nsh_ left,
Woody4286 left,
mdxi left,
Kovensky left,
pmichaud_ joined,
Raynes_ is now known as Raynes,
Raynes left,
Raynes joined
12:30
phenny joined,
jerome joined,
p6eval joined,
ChanServ sets mode: +v p6eval
12:34
athomason joined
12:45
mj41_nb left
12:49
agentzh left
13:06
kaare_ left
13:16
tzhs joined
13:18
mtk left
13:24
mj41_nb joined
13:25
mtk joined,
sftp joined
13:30
Holy_Cow joined
13:32
benabik joined
13:40
mj41_nb left
13:41
plainhao joined
13:47
bluescreen10 joined
14:00
kaare_ joined
14:03
donri joined
14:09
alester joined
14:23
bluescreen10 left
14:36
bluescreen10 joined
14:40
jerome left,
tzhs left,
jerome joined
14:42
dsouza joined
14:49
risou_ joined
14:53
risou left
15:12
justatheory joined
15:13
Koven is now known as Kovensky
15:14
hercynium joined
|
|||
tadzik | hello perl6 | 15:21 | |
moritz_ | \o tadzik | ||
15:23
mj41_nb joined
15:28
mtk left
15:29
mtk joined
15:33
mj41_nb left
15:34
mj41_nb joined
15:38
ymasory left,
[particle] left
15:47
wtw left
15:50
risou joined
15:52
risou_ left
16:00
am0c left
16:01
[hercynium] joined,
[hercynium] left,
[hercynium] joined
16:02
jedai left
16:04
hercynium left,
am0c^ joined
16:05
hercynium joined,
hercynium left,
hercynium joined
16:07
cjk101010 left,
[hercynium] left
16:18
_jaldhar left,
Patterner left,
JimmyZ_ joined
16:19
jaldhar joined
16:20
Psyche^ joined,
Psyche^ is now known as Patterner,
daxim left
|
|||
JimmyZ_ | msg NickServ | 16:23 | |
tadzik | password: | 16:26 | |
16:29
vladik joined,
JimmyZ_ left,
JimmyZ_ joined,
JimmyZ_ left
16:30
JimmyZ_ joined
|
|||
JimmyZ_ | odd, why my name is used :( | 16:30 | |
[Coke] | freenode is big. | 16:31 | |
[Coke] points to the [] on Coke. | |||
16:31
_twitch left
|
|||
perigrin is happy to have snagged perigrin when he did. | 16:31 | ||
16:31
daxim joined
|
|||
JimmyZ_ | my name was registered. | 16:31 | |
and I can't use it :( | |||
benabik | Unfortunately, dupli-nicks happen. :-/ Benabik seems rare enough that I rarely have problems, but it has been known to happen. | 16:32 | |
16:32
dsp_ left
|
|||
tadzik | I've used tadzik_ for some time, then I asked freenode staff to kick out that guy, as he wasn't using that anyway | 16:32 | |
JimmyZ_ | my name was registered by myself, but I can't use it now... | 16:33 | |
vladik | good day, I have this website that I wrote in php, it is a simple registration page where the user enters some information and we store it in mysql db, and use it later in other forms.. I was thinking of trying to do the same but using pure perl6.. Just for fun and education.. is it doable? | 16:34 | |
JimmyZ_ | yes | ||
tadzik | I think so, yes | ||
vladik | is there a mysql module for perl6? | ||
benabik | JimmyZ_: In that case, freenode staff might be able to help. | ||
tadzik | vladik: I think so. Look through modules.perl6.org | 16:35 | |
vladik | JimmyZ_: it happened to me once.. just contact freenode guys.. | ||
JimmyZ_ | vladik: see github.com/jnthn/zavolaj | ||
16:36
JimmyZ_ left,
JimmyZ_ joined
|
|||
vladik | zavolaj, nice name, ok will check it. | 16:37 | |
benabik | I see a sqlite interface, but no MySQL. DBDI exists, but I don't know how useful it is yet. | ||
plobsing | looks like DBDI has DBDI::p5dbi. does that mean it can connect to anything Perl 5 DBI does? | ||
JimmyZ_ | vladik: and github.com/perl6/modules.perl6.org | 16:38 | |
vladik | looks interesting | 16:39 | |
16:39
simcop2387 joined
|
|||
plobsing | that readme.png takes precedence over README on the github page is odd | 16:40 | |
benabik | plobsing: Looks like it, but I don't know how to get "using DBI:from<perl5>" to work... | 16:41 | |
*use | |||
benabik is probably writing too much C++ to discuss Perl 6 properly. | 16:42 | ||
plobsing | Parrot has a Perl 5 interop module called blizkost | ||
16:43
vladik left
|
|||
plobsing | that could be used to make it work | 16:43 | |
16:43
jaldhar left
|
|||
benabik | Ah. My google-fu was weak. Will have to look into that. | 16:43 | |
16:44
alim left
16:49
plobsing left
16:51
risou left,
risou joined
16:55
JimmyZ_ left,
dsp_ joined
16:57
am0c^ left
17:03
cdarroch joined,
cdarroch left,
cdarroch joined
17:14
plobsing joined
17:15
sorear_ is now known as sorear
17:18
benabik left
|
|||
sorear | good * #perl6 | 17:30 | |
phenny | sorear: 11:56Z <jnthn> tell sorear I'd pondered that GLOBAL lives in UNIT::GLOBAL really. | ||
colomon | \o | 17:31 | |
17:32
dsp_ left,
sufrostico joined,
sufrostico is now known as Guest31989
17:33
Guest31989 left
|
|||
sorear | phenny: tell jnthn Just putting GLOBAL in UNIT:: isn't enough since GLOBAL seems to want different values in different dynamic scopes. | 17:33 | |
phenny | sorear: I'll pass that on when jnthn is around. | ||
sorear | phenny: tell jnthn under &MAIN or the mainline, GLOBAL should be the real global, but in the dynamic scope of a BEGIN, it ought to be the nascent GLOBAL. | 17:34 | |
phenny | sorear: I'll pass that on when jnthn is around. | ||
sorear | phenny: tell jnthn Alternatively, GLOBAL merging can be destructive, making all nascent GLOBALs into synonyms of the true one. But I don't like that one bit. | 17:35 | |
phenny | sorear: I'll pass that on when jnthn is around. | ||
17:35
sufrosti1o joined
|
|||
sorear ducks back out. | 17:35 | ||
17:37
sufrosti1o left,
sufrosti1o joined
17:40
dsp_ joined
17:46
impious joined
17:54
dsp_ left
17:56
dsp_ joined
18:00
mj41_nb left
18:01
dsp_ left
18:04
dakkar left
18:05
masak joined
|
|||
masak | \o/ | 18:05 | |
tadzik | o/ | 18:06 | |
18:08
mberends joined
|
|||
mberends | o/ | 18:10 | |
18:10
dsp_ joined
18:16
justatheory left
18:18
justatheory joined
|
|||
Tene | The "Multiple versions" section of blog.izs.me/post/1675072029/10-cool...m-could-do reminded me of Perl 6. | 18:24 | |
masak | except that no Perl 6 implementation does that yet :P | 18:26 | |
18:26
fhelmberger left
|
|||
mberends | either it's impressive, or the author's hubris levels are a tad beyond decent | 18:34 | |
18:34
rhr left
|
|||
masak just skimmed and didn't read the hubris | 18:34 | ||
18:35
justatheory left
18:37
rhr joined
|
|||
tadzik | is the whole node community like this guy? | 18:40 | |
or, whatever | |||
mberends thinks the latter | 18:41 | ||
tadzik | yeah, probably | 18:42 | |
18:42
justatheory joined
|
|||
PerlJam | A little hubris is fine when it's deserved. | 18:44 | |
Tene | tadzik: According to hacker news comments, no they're not, and neither is this guy usually: news.ycombinator.com/item?id=1945297 | 18:45 | |
PerlJam | But, Larry sets a good example of humbleness even when he should have more hubris. | ||
(IMHO) | |||
tadzik | Tene: makes sents | 18:46 | |
* sense | |||
Tene | It does rather irk me that he's so dismissive of package managers, though. He's also factually incorrect. Most distro package managers can handle multiple concurrent versions of packages just fine. At least, both rpm and dpkg can. | ||
Just make sure that your packages always put things in version-dependent paths, so the files don't conflict, and you're fine. | 18:47 | ||
plobsing | what I got from that is that you can have 2 versions of the same module *loaded into your program*, without problems. which seems cool. I guess it kinda falls out of how JS doesn't use globals. | 18:49 | |
PerlJam | maybe perl6 should steal whatever good ideas Isaac has too :) | ||
Tene | plobsing: Yes, that's the part that reminded me of Perl 6. | 18:51 | |
18:54
risou left
18:55
risou joined
18:58
nymacro left
|
|||
masak | seems if you put things in version-dependent paths, you either need to keep an index, or you can't find things linearly on @*LIB. | 18:58 | |
TimToady | which is why we're largely moving away from @*LIB | 18:59 | |
PerlJam | masak: I've been thinking we'll need a good index for a long while now. | ||
TimToady | S11 basically requires an index for any official modules | ||
masak | nod | 19:02 | |
it's a sufficiently large step away from Perl 5 that I just automatically find myself in "I'll believe it when I see it" mode. | |||
19:03
bluescreen10 left
|
|||
TimToady | maybe you should see it when you believe it instead | 19:03 | |
PerlJam | masak: an advantage Perl 6 may have is laziness :) (lazy indexes)++ | 19:04 | |
It's like GC but we get better control on when we pay the build penalty I think | |||
19:18
daxim left
|
|||
flussence_ | tadzik: is there/will there be a way to tell Pies to install from a local directory even when its META.info has a git URL in it? It was confusing the hell out of me yesterday until I realised what was going on | 19:21 | |
tadzik | flussence_: oh, it should be working, doesn't it? When installing from a local dir, it should simply ignore the original git url and stuff | 19:22 | |
flussence_ | I was playing around with "panda install ./Text-Tabs-Wrap" then noticed there's no way the tests in my current workdir could've passed at the time | 19:23 | |
tadzik | wtf why is chromium eating all urls | ||
oh wait, I see it | 19:24 | ||
let me examine the code for a while | 19:25 | ||
okay, that's quite a stupid one. I'll fix it in a second | |||
flussence_: wklej.org/id/494012/ could you check if that fixes the issue? | 19:27 | ||
so bootstraping on rakudo-star is probably broken too | |||
flussence_ | yep, that works | 19:29 | |
tadzik | cool, pushing | 19:30 | |
masak | tadzik++ | 19:31 | |
PerlJam: the other day I downloaded Math::Combinations from CPAN, and did permute(1..20). the computer just froze. only then did I realize "oh right, Perl 5 doesn't have lazy lists!" | 19:33 | ||
tadzik | :) | 19:34 | |
I like how git push pushes all the branches | |||
19:38
benabik joined
|
|||
masak | tadzik: only if you didn't do -u when you pushed your branch the first time. | 19:39 | |
then it pushes to the corresponding upstream branch. | |||
tadzik | I see that gitub encourages using -u recently | 19:40 | |
masak | that's how I discovered it ;) | ||
colomon | masak: if you load List::Utils, @a := permute(1..20) works fine in Rakudo. ;) | 19:45 | |
masak | \o/ | 19:48 | |
colomon++ | |||
right. the point was that I didn't realize I'd come to take list laziness so much for granted nowadays. | |||
though it's certainly good not to have to write &permute. :) | 19:49 | ||
I tend to find it just above the complexity threshold when I have to do some small bit of design, rather than just jump in and think with my fingers. | 19:50 | ||
19:54
risou_ joined
19:55
plobsing left
|
|||
tadzik | flussence_: any missing features in panda that should get it to the top of my todo? | 19:55 | |
19:55
risou left
|
|||
flussence_ | works for me :) | 19:55 | |
some way of keeping track of what owns which files, that'd be nice | 19:56 | ||
masak | oh! today at $dayjob I found www.perlmonks.org/index.pl?node_id=181655 (from 2002) with the wonderful quote "I for one am glad that thread support in Perl is progressing, and that it will be fully realized in Perl 6." :P | ||
tadzik | every time I want to move add some feature that neutro had, I stumble upon this "ew, that should be done properly, not quick-and-dirty" | ||
flussence_: with a way to remove modules, yes :) | 19:57 | ||
masak | tadzik: Second System Syndrome :) | ||
tadzik | that's what "installed-dep" state is for :) | ||
masak: done right :) | |||
19:57
ymasory joined
|
|||
tadzik | pff, I miss working DESTROY | 19:58 | |
masak | you can only remove a module if no other installed module (transitively) depends on it. | ||
tadzik: I doubt we'll ever have DESTROY on Parrot. there's simply not enough collaboration going on across the abstraction layers. | |||
tadzik | rather "after removing a module, remove all installed-dep modules that are not neeeded anymore" | ||
19:58
benabik left
|
|||
tadzik | the triggering-gc thing? | 19:59 | |
masak | tadzik: also, the GC in Parrot is such that you shouldn't depend on DESTROY being called before the program exits normally. just like Java. | ||
tadzik | masak: hmm. So say I have something like a database driver, and on DESTROY I really want to flush everything to disk. What would be the way to do it then? | 20:00 | |
rakudo: say [1, 2, 3] eqv [1, 2, 3]; say [1, 2, 3] eqv [4, 5, 6]; | |||
flussence_ | possibly an END block | ||
p6eval | rakudo e3bd9a: OUTPUT«Bool::TrueBool::False» | ||
tadzik | oh, wfm | 20:01 | |
at least in this case | |||
masak | yes, things like END or LEAVE et al. | 20:02 | |
KEEP and UNDO. | 20:03 | ||
tadzik | flussence_: well, keeping track of files becomes tricky if they get installed to some temporary location, like with creating a package | ||
so DESTDIR=ext panda install foobar | |||
I need a TODO | |||
flussence_ | docs! | 20:07 | |
tadzik | docs what? | 20:08 | |
20:08
plainhao left
|
|||
tadzik | oh, pandadocs? | 20:08 | |
masak | panda docs! <3 | 20:09 | |
tadzik | META.info docs/specs go first | ||
masak pictures a bunch of pandas with Ph.D.s | |||
tadzik | oh wow. I need an artwork | ||
20:10
dual joined,
stkowski joined
|
|||
tadzik | what is the name of that, uhm, ph.d hat? | 20:10 | |
the square one | |||
okay nvm | 20:11 | ||
masak | no idea. | 20:14 | |
mberends | it's a mortarboard, because it looks like what bricklayers use to carry mortar (cement) | 20:19 | |
masak | ah. | 20:20 | |
unless your Ph.D. is in CS; then it's a motherboard... | |||
20:21
impious left
|
|||
tadzik | congratulations masak, you provoked a panda docs logo | 20:23 | |
imgur.com/xFSQF | 20:24 | ||
masak | and here I thought I was just provoking groans... | ||
tadzik: nice :) | 20:25 | ||
tadzik | the next quest: an ascii art, for `panda --docs` | ||
masak | \o/ | ||
tadzik | :) | ||
too bad I'm late to set this as a gci task :> | 20:26 | ||
20:28
ymasory left
|
|||
tadzik | now, how do I embed a picture in pod... | 20:28 | |
20:31
alester left
|
|||
masak | you've now discovered why the Perl 6 spec prefers ASCII art to real images. you level up one level. | 20:31 | |
20:32
Rotwang joined
|
|||
tadzik | \o/ | 20:33 | |
so all my gimp work is for nothing? :( | |||
20:34
coldhead joined,
plobsing joined
|
|||
sjohnson | the gimp! | 20:34 | |
20:36
Helios` left
|
|||
masak | sjohnson: hi! | 20:36 | |
sjohnson | yo masak | 20:38 | |
brb | |||
20:39
Helios` joined
20:44
jedai joined
|
|||
masak | rakudo: role R[::T] { multi method foo(::T $x) { say $x } }; class C does R[Str] does R[Int] {}; C.new.foo("OH HAI") | 20:44 | |
p6eval | rakudo e3bd9a: OUTPUT«OH HAI» | ||
masak | rakudo: role R[::T] { multi method foo(::T $x) { say $x } }; class C does R[Str] does R[Int] {}; C.new.foo(42) | ||
p6eval | rakudo e3bd9a: OUTPUT«42» | ||
masak | \o/ | ||
tadzik | rakudo: class A { method !foo { say "foo!" }; method bar { self!foo } }; my $a = A.new but role { method !foo { } }; $a.bar | ||
p6eval | rakudo e3bd9a: ( no output ) | ||
masak | rakudo: role R[::T] { multi method foo(::T $x) { say $x } }; class C does R[Str] does R[Int] {}; C.new.foo(5.5) | ||
p6eval | rakudo e3bd9a: OUTPUT«5.5» | 20:45 | |
tadzik | rakudo: class A { method !foo { say "foo!" }; method bar { self!foo } }; my $a = A.new but role { method !foo { say "yep" } }; $a.bar | ||
masak | :/ | ||
p6eval | rakudo e3bd9a: OUTPUT«yep» | ||
masak | late binding. we haz it. | ||
rakudo: class C { multi method foo(Str $x) { say "Str" }; multi method foo(Int $x) { say "Int" } }; C.new.foo(5.5) | 20:55 | ||
p6eval | rakudo e3bd9a: OUTPUT«No candidates found to invoke for method 'foo' on object of type 'C'; available candidates have signatures::(Mu : Str $x;; *%_):(Mu : Int $x;; *%_) in main program body at line 22:/tmp/h4cL0DkRVI» | ||
20:55
risou_ left,
risou joined
|
|||
masak submits rakudobug | 20:55 | ||
21:00
nwellnhof joined
21:01
benabik joined,
benabik left
21:04
mtk left
21:06
stkowski left
|
|||
masak | rakudo: say 2 ** 3 ** 4 | 21:07 | |
p6eval | rakudo e3bd9a: OUTPUT«2.41785163922926e+24» | ||
masak | rakudo: say [**] 2, 3, 4 | ||
p6eval | rakudo e3bd9a: OUTPUT«2.41785163922926e+24» | ||
masak | :) | ||
rakudo: my ($a, $b, $c); $c = 42; [=] $a, $b, $c; say ($a, $b, $c).join("|") | 21:08 | ||
p6eval | rakudo e3bd9a: OUTPUT«Any()|Any()|42» | ||
masak | huh. | ||
that isn't what I expected... | 21:09 | ||
flussence_ | rakudo: say [>=] 5, 4, 3 | ||
p6eval | rakudo e3bd9a: OUTPUT«Bool::True» | ||
flussence_ | rakudo: say [>=] 3, 4, 5 | ||
p6eval | rakudo e3bd9a: OUTPUT«Bool::False» | ||
flussence_ | seems sane there... | ||
masak | right, but not for assignment. | ||
flussence_ | it seems to be evaluating them one at a time in LTR order there | 21:10 | |
masak | std: my ($a, $b, $c); [=] $a, $b, $c | ||
p6eval | std 4608239: OUTPUT«===SORRY!===Can't reduce with = because list assignment operators are too fiddly at /tmp/RWFak4j4Wz line 1:------> my ($a, $b, $c); [=]⏏ $a, $b, $cCheck failedFAILED 00:01 124m» | ||
flussence_ | (just a guess) | ||
masak | ah. it should give a "too fiddly" error. | ||
masak submits rakudobug | |||
21:13
mtk joined
21:14
stkowski joined
21:15
Holy_Cow left
21:16
Holy_Cow joined
|
|||
masak | rakudo: class Animal { method Str { self.WHAT.perl } }; class Cow is Animal {}; my Cow $cow .= new; role Holy { method Str { "Holy {callsame}" } }; $cow does Holy; say ~$cow | 21:18 | |
p6eval | rakudo e3bd9a: OUTPUT«Holy » | ||
masak | aww :/ | ||
rakudo: class Animal { method Str { self.WHAT } }; class Cow is Animal {}; my Cow $cow .= new; role Holy { method Str { "Holy {callsame}" } }; $cow does Holy; say ~$cow | 21:19 | ||
p6eval | rakudo e3bd9a: OUTPUT«Holy ()» | ||
21:20
spq joined
|
|||
masak | rakudo: class Animal { method Str { self.WHAT.Str } }; class Cow is Animal {}; my Cow $cow .= new; role Holy { method Str { "Holy {callsame}" } }; $cow does Holy; say ~$cow | 21:23 | |
p6eval | rakudo e3bd9a: OUTPUT«maximum recursion depth exceeded in 'Str' at line 22:/tmp/opLNpn6UQN in 'Str' at line 22:/tmp/opLNpn6UQN in 'Animal::Str' at line 22:/tmp/opLNpn6UQN in 'Str' at line 22:/tmp/opLNpn6UQN in 'Animal::Str' at line 22:/tmp/opLNpn6UQN in 'Str' at line 22:/tmp/opLNpn6UQN | ||
.. in … | |||
masak | oh, right. | ||
:) | 21:24 | ||
jnthn | o/ from Stockholm | ||
phenny | jnthn: 17:33Z <sorear> tell jnthn Just putting GLOBAL in UNIT:: isn't enough since GLOBAL seems to want different values in different dynamic scopes. | ||
jnthn: 17:34Z <sorear> tell jnthn under &MAIN or the mainline, GLOBAL should be the real global, but in the dynamic scope of a BEGIN, it ought to be the nascent GLOBAL. | |||
jnthn: 17:35Z <sorear> tell jnthn Alternatively, GLOBAL merging can be destructive, making all nascent GLOBALs into synonyms of the true one. But I don't like that one bit. | |||
masak | jnthn: \o! | ||
21:24
spq left
|
|||
jnthn | Swedes are REALLY competent at running railways, so I got here two hours late :/ | 21:24 | |
On the other hand, I'm from England, so... :) | 21:25 | ||
masak | jnthn: late for something? :/ | ||
jnthn | masak: Dinner! | ||
masak | jnthn: they... serve food on the train... :P | ||
jnthn | But nothing that mattered to anyone else :) | ||
:P | |||
masak meekly waves the Swedish flag | |||
jnthn | At least they had good internets onboard. :) | 21:26 | |
masak | ah, right. premiere classe... | ||
jnthn | Aye :) | ||
Internets and coffee included. It's quite geek-compatible really. | 21:27 | ||
diakopter | sanfrancisco.cbslocal.com/2011/03/1...shortages/ | ||
masak | geeks are naturally 1-st class-compatible :P | ||
jnthn | "I like my train tickets like my functions...first class!" | 21:28 | |
tadzik | :> | ||
I'd rather have cheap calling conventions though | |||
masak | speak for yourself :P | 21:29 | |
tadzik | (: | ||
masak | diakopter: it feels... odd... to let "sushi shortage" be the piece of news to highlight in the present situation. :/ | 21:35 | |
21:36
colomon left
|
|||
diakopter | masak: ah, my posting of that URL should be viewed as a commentary on the news article itself (likewise your comment) | 21:38 | |
masak | diakopter: I feel better now. | ||
tadzik | flussence_: pushed some docs for ya | 21:39 | |
masak | diakopter: I notice the effect even more on Twitter, where referring often is interpreted as agreeing. | ||
flussence_ | tadzik++ | ||
masak | diakopter: quite a few people have been flamed on Twitter for failing to distance themselves clearly from some insane quote. | 21:40 | |
flussence_ | I've got my .indent code to the point where the only thing I need now is a tab-aware .substr()... which is pretty much where I was two days ago, but at least now I know what to call it :) | 21:43 | |
masak | flussence_: yay | 21:45 | |
21:46
szbalint_ is now known as szbalint
|
|||
flussence_ | (which, as far as I can tell from trying to implement it, is going to be a complete nightmare...) | 21:46 | |
masak | sounds like you'd want to compute the "actual" indexes from the "distorted" ones somehow, and then just defer to the regular .substr(), no? | 21:48 | |
of course, the coordinate transformation there is the tricky bit, I see that. tab characters have a slightly variable width depending on their position. | 21:49 | ||
flussence_ | yeah, that's the hard part... | ||
masak | and depending on $?TABSTOP... | ||
'night, #perl6 | 21:52 | ||
flussence_ | o/ | ||
21:52
masak left
|
|||
flussence_ | rakudo: say ("\t ." ~~ /^((\t)? \s*) (.*)$/).perl | 21:53 | |
p6eval | rakudo e3bd9a: OUTPUT«Match.new( from => 0, orig => "\t .", to => 3, positional => [ Match.new( from => 0, orig => "\t .", to => 2, positional => [[ Match.new( from => 0, orig => "\t .", to => 1, ), ], ], ), | ||
..Match.new( … | |||
flussence_ | rakudo: say (" ." ~~ /^((\t)? \s*) (.*)$/).perl | ||
p6eval | rakudo e3bd9a: OUTPUT«Match.new( from => 0, orig => " .", to => 4, positional => [ Match.new( from => 0, orig => " .", to => 3, positional => [[ ], ], ), Match.new( from => 3, orig => " .", to => 4, ), ],)» | ||
sjohnson | ikes | 21:54 | |
flussence_ | hmm | ||
tadzik | worr's new build system is called Puma and is on GH: github.com/worr/Puma | 21:59 | |
22:18
pmichaud_ left,
pmichaud joined
22:19
kaare_ left,
sufrosti1o left
22:29
Holy_Cow left
22:34
whiteknight joined
22:39
colomon joined
|
|||
colomon | mberends: see justrakudoit.wordpress.com/2011/03/.../#comments | 22:42 | |
22:43
leprevost left
22:50
jevin joined
22:52
nwellnhof left
22:58
hercynium left
23:04
cdarroch left
|
|||
PerlJam | wow. | 23:09 | |
"I just wanted to thank you for your “Gentle Introduction to Perl 6 Regex,” which has helped me enormously. " | 23:10 | ||
That's the kind of thanks that makes me happy and bashful at the same time :) | |||
sjohnson | perljam == hero | 23:11 | |
23:15
dsouza left
23:34
Solarion_ joined,
fisted left
23:35
Solarion left
23:37
Chillance left
23:39
Mowah left
23:55
fisted joined
23:56
stkowski left
|