»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released! Set by diakopter on 6 September 2010. |
|||
ash_ | question for anyone online, do you use .pl6 or .pl? i have been sticking with .pl just curious | 00:00 | |
masak | since grammars are one of the Big, Obvious strengths of Perl 6, and since they're largely implmeneted and well-tested in Rakudo, I think blog posts are very good news for Perl 6. they show the language from one of the best sides possible. | ||
Tene | ash_: .pl | ||
masak | ash_: I usually don't put a suffix on my executables. and my Perl 6 scripts are executables. | ||
flussence | I've been using .p6 | ||
masak | three people, three different answers :) | 00:01 | |
only one of which intersected with the original two options :P | 00:02 | ||
flussence | I'm too lazy to put a ft=perl6 modeline in when that works just as well :) | ||
ash_ | when its an executable, i do not put a suffix on it, but if its just a script that i am not using as an executable i do .pl or .pm | 00:03 | |
masak | ash_: if you're not executing the script, is it truly a write-only script? :) | ||
ash_ | i am executing it, just not by doing ./filename | 00:04 | |
so, i probably could just add #!/usr/bin/perl6 and chmod +x but still | |||
masak | flussence: re "all your base"... try not to feed the trolls. | 00:06 | |
I'm no real authority on troll management, but I do suspect that they're better hugged or left alone than attacked or mocked. | 00:07 | ||
time to sleep. | 00:09 | ||
'night, #perl6. | |||
00:09
masak left
00:10
ggoebel joined
|
|||
dukeleto | For those interested in Troll Management, check out trolluniversity.com | 00:14 | |
Tene | flussence: I read norkakn's post as sarcasm, fwiw | ||
"That's pretty cool. Shame that there's all that inaccurate fud about Perl 6." | |||
approximately. | |||
flussence | meh, I get snarky easily on reddit. been there too long :( | 00:15 | |
ash_ | my friend does the same thing, reddit must bring out the troll/anti-troll in people | 00:16 | |
00:23
Gothmog_ left
00:29
orafu left,
orafu joined
00:36
icwiener left
00:39
Gothmog_ joined
00:44
lilstevey joined
00:59
risou left
01:00
QinGW joined
|
|||
ash_ | pugs: 'ab' ~~ /c|ab/ | 01:04 | |
p6eval | pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"*** '<HANDLE>' trapped by operat… | ||
ash_ | weird | ||
locally | |||
that works fine | |||
pugs> 'ab' ~~ /c|ab/ | |||
Match.new( | |||
ok => Bool::True, | |||
from => 0, | |||
to => 2, | |||
str => "ab", | |||
sub_pos => (), | |||
sub_named => {} | |||
) | |||
sorry, i'll stop spamming | 01:05 | ||
01:05
lilstevey left
01:09
satyavvd joined
01:10
ash_ left
01:18
redicaps joined
|
|||
diakopter | whee | 01:21 | |
01:25
shabble joined,
shabble left,
shabble joined
|
|||
diakopter hopes I'm below the 8 max commits for dalek | 01:27 | ||
dalek | odel: 47a15f6 | diakopter++ | dotnet/runtime/Runtime/Ops/Primitive.cs: [dotnet] add a format_str Op, but don't use it yet. |
||
odel: 4e98d42 | diakopter++ | / (4 files): [dotnet] flesh out and debug pasttypes 'scan' and 'pass', non-left-anchored scanning works. fix bugs in DNST::JumpTable exposed by the above fix bugs in Cursor exposed by the above |
|||
odel: 1f4a978 | diakopter++ | common/NQP/NQPSetting.pm: [common NQPSetting] Add a Bool method to Any |
|||
odel: c16594c | diakopter++ | t/nqp/45-smartmatch.t: [tests] write 3 more passing tests in 45-smartmatch.t |
|||
diakopter | oh good | ||
nqpnet: ok(("hihi" ~~ /i [h i]/) eq 'ihi', "non-capturing groups work"); | 01:32 | ||
p6eval | nqpnet: OUTPUT«ok 1» | ||
diakopter | nqpnet: ok(("hihi" ~~ /i hi/) eq 'ihi', "rule concatenation works"); | ||
p6eval | nqpnet: OUTPUT«ok 1» | ||
diakopter | nqpnet: ok(("hi" ~~ /i/) eq 'i', "basic non-anchored scanning works"); | 01:33 | |
p6eval | nqpnet: OUTPUT«ok 1» | ||
diakopter | (yay) | ||
01:37
lichtkind left
01:38
am0c left
01:58
shabble left,
shabble joined,
shabble left,
shabble joined
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ble_tablet | 01:58 | |
01:58
Guest27466 left
02:00
satyavvd left
02:01
kst joined
02:07
knewt2 joined
02:15
bluescreen joined
02:16
bluescreen is now known as Guest81143
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | 02:26 | |
02:27
ggoebel left
02:29
ShaneC joined
02:32
ggoebel joined,
ShaneC left
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ble_tablet | 02:36 | |
tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | 02:42 | ||
02:57
Guest81143 left
03:03
Sarten-X joined
03:15
am0c joined
03:17
envi joined
03:27
envi left
03:31
am0c left
03:53
whiteknight left
04:15
am0c joined
|
|||
sorear | good * #perl6 | 04:17 | |
04:21
Faizan` joined,
Faizan` left
04:37
takadonet1 joined
|
|||
takadonet1 | sorear++ | 04:37 | |
gratz on the release! | |||
04:41
ch3ck3r left
|
|||
sorear | takadonet1: thanks | 04:47 | |
takadonet1 | good night all | 04:53 | |
only came here to say that :) | |||
04:53
takadonet1 left
|
|||
dukeleto | sorear: did you do a release of niecza? | 05:09 | |
sorear | dukeleto: no, only an announcement | 05:12 | |
05:13
Trashlord left
05:17
hercynium_ left
05:30
alc joined
05:31
nymacro joined
05:51
envi joined
06:06
nymacro left
06:27
gimix joined
06:28
jaldhar joined
06:43
kanishka left
06:47
gimix left,
kaare joined
06:48
kaare is now known as Guest84862
07:10
wtw joined
07:29
DarthGandalf left
07:37
DarthGandalf joined
07:40
justatheory left
07:53
gimix joined
08:04
Guest84862 is now known as kaare_
08:05
uniejo joined
|
|||
sjohnson | ma | 08:11 | |
08:18
Bwiz joined,
Bwiz left
|
|||
sorear | mi? | 08:19 | |
mathw | I saw that and thought I'd switched to #lojban by mistake | ||
sorear: grats on getting Niecza (sp?) to an announceable state | 08:21 | ||
sorear | ma, mi is lojban? | 08:23 | |
sorear was thinking ... ho, ma, mi, mu, me, mo, ya ... | |||
sorear waits for the p6a moderator to see this | 08:24 | ||
mathw | "ma" is | ||
it's a question word | 08:25 | ||
"mi" also is, it's the pro-sumti for "I" or "myself" | 08:28 | ||
but someone saying just "ma" just struck me as Lojban :) | |||
sorear | rakudo: say ~(<n>, (<_ k s t n h m y r w> X~ <a i u e o>).grep: none(<yi ye wi wu we>)) | 08:31 | |
p6eval | rakudo : OUTPUT«n _a _i _u _e _o ka ki ku ke ko sa si su se so ta ti tu te to na ni nu ne no ha hi hu he ho ma mi mu me mo ya yu yo ra ri ru re ro wa wo» | ||
sorear ponders golf | |||
sjohnson | sorear: :) | 08:32 | |
actually wrote that as a complete accident because screen -d -r took about 30 seconds to load | 08:33 | ||
08:33
Hor|zon left
|
|||
sjohnson | best part about this channel, is no one complains or get angry, when things get lightly off topic in a carefree way | 08:33 | |
08:34
jfried joined
|
|||
mathw | It's not like there really *is* a topic at the moment :) | 08:41 | |
08:41
nymacro joined
|
|||
moritz_ | mathw: sure there is. Perl 6 :-) | 08:48 | |
mathw | pffffft :P | 08:56 | |
Who wants to talk about that :) | |||
tadzik | hello | ||
sorear | I do | ||
tadzik | phenny: tell masak I think it's just the failed joke | ||
phenny | tadzik: I'll pass that on when masak is around. | ||
sorear | hi tadzik | ||
mathw | hey tadzik | 08:57 | |
08:59
nymacro left
|
|||
tadzik | hey hey | 09:00 | |
sorear++ # announcing niecza | 09:06 | ||
09:17
mikehh left
09:36
dakkar joined
|
|||
dalek | ecza: e5c3ac0 | sorear++ | / (2 files): Add a call graph analyzer |
09:36 | |
ecza: 871b07d | sorear++ | docs/announce.initial: Commit a copy of announce message |
|||
ecza: 2b8ae9c | sorear++ | src/ (2 files): use ANON consistently, not anon |
|||
09:37
masak joined
|
|||
masak | oh hai, #perl6! | 09:37 | |
phenny | masak: 08:56Z <tadzik> tell masak I think it's just the failed joke | ||
masak | ok, that needs some context, I'm afraid :) | 09:38 | |
which failed joke in particular? | |||
sjohnson: the only thing that's slightly off-topic is Perl 5. :) but only because there are better places to discuss that already. | 09:40 | ||
sorear | hi masak | 09:41 | |
masak tips hat | |||
sorear | Eh?! | 09:43 | |
09:45
redicaps left
|
|||
masak | sorear: I thought a common non-verbal greeting in the anglosphere was to grab the brim of one's hat and tip it. feel free to put me right if this was a misunderstanding. | 09:48 | |
rakudo.org still down... | 09:51 | ||
09:53
kensanata joined,
daxim joined
|
|||
moritz_ | oh hai | 09:55 | |
masak | moritz_! \o/ | 09:56 | |
moritz_: in the backlog, we were discussing standardizing the Test module in a synopsis. | 09:57 | ||
the already-agreed-on nomenclature suggests that this would be S24. | |||
moritz_ | agreed | 09:58 | |
I'll support any such effort. | |||
masak | as sorear++ points out, there are four Test.pm files already, and nothing really to make them conform to anything in particular. | 09:59 | |
moritz_ | they implicitly conform to the ones from Test::{More,Exception} in p5 | 10:01 | |
masak | moritz_: have you ever reacted to the insanity that is todo($reason, $count); skip($count, $reason)? (note reversal of arguments) is that from Test::More too? | 10:05 | |
moritz_ | masak: I don't write todo() and skip() lines manually (fudge does that for me), so I didn't really encounter it | 10:06 | |
sorear | masak: AIUI the hat-tip greeting is generally reserved for cases where there is a significant gap in social class | ||
masak | I realized that yesterday, and thought "hm, if I ever write a book on API design, that'd deserve a whole anti-pattern section of whose need I wasn't previously aware" | ||
sorear: oh! that's the first time I hear such a thing. | 10:07 | ||
moritz_ | sorear: I'm quite sure that that's not generally the case | 10:08 | |
sorear | ok. | ||
masak | sorear: then consider my greeting as one from a lowly warrior to a mage. :) | ||
sorear is not an authority on social cues | |||
10:09
QinGW left
|
|||
sorear -> sleep | 10:15 | ||
moritz_ | sorear: it's on p6a now | 10:19 | |
10:42
jhuni left
10:46
jhuni joined
10:53
jhuni left
|
|||
tadzik | masak: the r/perl one | 11:19 | |
11:20
alc left
11:21
alc joined
11:24
alc left
|
|||
tadzik | anyone writing Colemak? :) | 11:41 | |
(this took me a while to type) | |||
11:47
uniejo left
11:49
cognominal joined
|
|||
tadzik | masak: LOLDispatch may work nicely with grammar dispatching, no? | 12:06 | |
12:13
rams joined,
lichtkind joined
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....ble_tablet | 12:14 | |
tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index...._io_tablet | |||
12:17
rams left
|
|||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | 12:20 | |
tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index...._io_tablet | 12:46 | ||
tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | |||
masak | tadzik: seems to me LOLDispatch works fine without grammar dispatching, and vice versa. don't really see what it'd mean for them to work together. | 12:56 | |
this Japanese twitterer seems to think something is cumbersome: twitter.com/kgt_bot/status/9582436358815744 | 12:57 | ||
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | ||
12:59
masak left
13:20
kjeldahl joined
|
|||
bbkr | std: $.foo # curious... | 13:22 | |
p6eval | std a194beb: OUTPUT«ok 00:01 118m» | ||
13:23
MayDaniel joined
|
|||
bbkr | hmm, i'm not sure if class variable syntax should be allowed in main. it should give the same warning as for example trying to write "method foo {}" in main scope - about useless declaration/usage. right? | 13:26 | |
check following example... | 13:27 | ||
rakudo: my $.foo; say "alive"; $.foo | |||
p6eval | rakudo : OUTPUT«aliveNull PMC access in find_method('foo') in main program body at line 22:/tmp/B60vOmq2fl» | ||
bbkr | not so consistent, isn't it? declaration passes but usage gives null PMC access | ||
13:28
plainhao joined
13:35
MayDaniel left
13:38
Patterner left
|
|||
bbkr | reported in rt.perl.org/rt3/Ticket/Display.html?id=80008 | 13:38 | |
13:52
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
bbkr | phenny: tell mberends that HTTP::Daemon should have possibility to get request body on unknown Content-Type (or even better - to allow to connect custom handler method for given content type). This will allow for example to write JSON::RPC::Server based on this nice module. | 13:53 | |
phenny | bbkr: I'll pass that on when mberends is around. | ||
14:12
uniejo joined
|
|||
tadzik | phenny: tell masak actually, a PM fellow pointed out that grammar dispatching would be nice if you were writing only Action class, and Grammar would be generated automagically. I instantly thought of traits, and then about LOLDispatch | 14:16 | |
phenny | tadzik: I'll pass that on when masak is around. | ||
14:20
uniejo left
14:22
masak joined
|
|||
masak | bbkr++ # RT #80008 | 14:22 | |
phenny | masak: 14:15Z <tadzik> tell masak actually, a PM fellow pointed out that grammar dispatching would be nice if you were writing only Action class, and Grammar would be generated automagically. I instantly thought of traits, and then about LOLDispatch | ||
masak | tadzik: I'm having trouble visualizing that. | ||
tadzik | masak: I suppose a framework will be either generating a grammar class and evaling it, or adding tokens with add_method or something | 14:26 | |
masak | right. | ||
"working code or it didn't happen" :) | |||
tadzik | (I may write slowly, Colemak is hard) | 14:27 | |
masak: bah, that will result in more ridiculous blag toasts :) | 14:28 | ||
flussence | ooh, generated code. I just spent a week re-learning graph theory to write a p5 script that makes a shell script to run 2 dozen SQL files in the right (foreign key) order. Does that make me officially insane? | 14:29 | |
14:33
Trashlord joined
|
|||
colomon | flussence: it makes you officially sane! | 14:37 | |
(says the man whose has a bunch of $work perl 5 scripts for generating C++ code....) | 14:38 | ||
masak | flussence: DFS to make a topological sort? | 14:47 | |
(that's what ufo does) | |||
flussence | I was using Graph.pm... it has a ->toposort method, but I didn't like the output so I ended up doing it semi-manually :) | 14:49 | |
masak | seems I guessed right, then. | ||
14:49
nymacro joined
|
|||
masak | but... a week? :) | 14:49 | |
I went to the nearest textbook and looked up 'topological sorting'. | 14:50 | ||
it took less than a week. | |||
flussence | well, rounded up from 3 days, in between the actual sql writing... | ||
masak | ah :) | ||
flussence | and a fair bit of that was offloading as much work as I could to p5 once I got it working :) | 14:51 | |
masak | sounds sane. | ||
PerlJam | I've seen topological sorting in a few P6 programs/modules now ... seems like it would make a good module on its own if someone hasn't already done it. | ||
(also might make a good advent calendar post :) | 14:52 | ||
diakopter | masak: tipping-of-the-hat (as an implied pre-genuflection) is much more English than American these past many decades | ||
masak | diakopter: now that I can believe. | ||
colomon | it's not unknown, but hats suitable for tipping are not in fashion. :) | ||
masak | "pre-genuflection" :P | ||
diakopter | er, an implied pre-bowing | 14:53 | |
what colomon said | |||
++ | |||
colomon | Also, there's something about saying it "hat tip" which causes a moment pause. Even though it is clearly correct, at a moment's glance it makes me think "hat trick" (a hockey term) rather than "tip of the hat". | ||
:) | 14:54 | ||
diakopter | or catnip | ||
14:57
Trashlord left
14:59
am0c left
|
|||
diakopter | about the only hats suitable for tipping are cowboy hats and (aptly-called) "floppy hats", and those are only regionally culturally fashionable, and rare elsewhere. | 15:00 | |
masak | don't think I've seen a floppy hat. | 15:02 | |
15:02
sftp joined
|
|||
masak | do they come in different sizes, measured in inches? :) | 15:02 | |
colomon | The 3.5 inch hat isn't very floppy. ;) | 15:05 | |
diakopter | .. where a floppy hat is essentially a cowboy hat that's floppy and not Texas-tall | 15:10 | |
15:11
lichtkind_ joined
15:13
lichtkind left
|
|||
diakopter | TimToady wears one, iirc | 15:13 | |
15:13
lichtkind_ is now known as lichtkind
15:14
uniejo joined
|
|||
colomon | ooo, actually, guess I wear a floppy hat too, by that standard. :) | 15:14 | |
masak | in that case, I have seen one. | 15:17 | |
15:18
wtw left
|
|||
diakopter | there's this www.amazon.com/Sun-Protection-Hat-K...B000JWNQ2I and www.amazon.com/Fishing-Hat-01-Khaki...B0007OF2QG styles too | 15:18 | |
15:18
fhelmberger joined
|
|||
colomon | Mine is a fancier version of the Sun Protection Hat. (Unsurprisingly, as that is exactly the job it is doing, though it's handy in rain as well.) | 15:19 | |
masak | by rights, it should be the Oracle Protection Hat nowadays. | ||
PerlJam | Why does Oracle need protection? | 15:20 | |
15:20
MayDaniel joined
|
|||
masak | PerlJam: you're not extrapolating this correctly. :) | 15:20 | |
PerlJam | That would be the fault of the punner, not the punee :) | 15:21 | |
masak | a Sun Protection Hat protects against Sun. | 15:22 | |
it doesn't protect Sun. | |||
I guess Sun has dangerous cancerogenic rays of electromagnetic radiation that need protecting against. | 15:23 | ||
similarly, an Oracle Protection Hat... oh forget it. :) | |||
PerlJam | "Protection Hat" sounds like a euphemism for a condom in any case ;) | ||
masak | indeed. | 15:24 | |
15:29
risou joined
|
|||
diakopter | www.starling-software.com/employmen...atrix.html kinda neat. enterprisey-oriented (like 80% of the job market). where do YOU rate yourself | 15:31 | |
15:32
nymacro left
15:33
nymacro joined
|
|||
masak | the subjectivity of it all makes me read it more as an interesting subdivision of the universe than as a way to rate myself. | 15:33 | |
diakopter | I don't find it subjective | 15:35 | |
PerlJam | Where's the section on using the competency matrix to rate yourself? :-) Level 0: doesn't know about the competency matrix Level 1: knows about it, but doesn't believe it's useful Level 2: believes it's useful Level 3: believes it's useful and uses it daily | 15:37 | |
colomon | PerlJam++ | 15:38 | |
masak | diakopter: here's an example of what I found highly subjective: Erlang and Prolog at the top of the scale of "languages exposed to". | ||
similarly, git at the top of "source code version control". and CVS/SVN on the way there. | 15:39 | ||
maybe that does makes sense from an enterprisey perspective, I dunno. | |||
colomon | masak: remember, if you're not doing things their way, you're just not that sophisticated. ;) | 15:41 | |
diakopter | PerlJam: heh | ||
PerlJam | masak: for the languages I could make a case that it's arranged from most common to least common languages, but that same scale doesn't work on many of the others | ||
(version control is a perfect example where it doesn't work at all) | 15:42 | ||
masak | I'm not saying it's a bad matrix; I did find it an interesting read. | ||
flussence | I'd rate myself... NaN | 15:46 | |
15:46
kaare_ left,
soroush joined
|
|||
PerlJam | diakopter: are you applying for a job at Starling? | 15:49 | |
diakopter | no.. | 15:50 | |
15:53
dakkar left
15:55
rgrau_ joined
15:59
rgrau_ left
16:00
rgrau_ joined
16:02
masak left
16:04
justatheory joined,
rgrau_ left,
rgrau_ joined,
uniejo left
16:05
dakkar joined
16:09
hercynium joined,
Trashlord joined
16:14
rgrau_ left
16:20
spq1 joined
16:25
nymacro left
16:28
MayDaniel left
16:30
jdv79 joined
16:48
jdv79 left,
jdv79 joined
16:51
hillu joined
16:52
am0c joined
|
|||
colomon | #phasers in two hours? | 17:02 | |
moritz_ | aye | 17:03 | |
jnthn | o/ | 17:09 | |
colomon | \o | 17:10 | |
moritz_ | /o\ | 17:11 | |
TimToady | as it happens, rosettacode.org/wiki/Topological_sort has entries for both Perl 5 and Perl 6 | 17:16 | |
PerlJam, flussence: ^^ | 17:17 | ||
17:27
kensanata left
17:29
am0c left
17:33
am0c joined
17:35
am0c left
17:36
ash_ joined
|
|||
ash_ | rakudo: 'ab' ~~ /ab'; say $/ | 17:39 | |
p6eval | rakudo : OUTPUT«===SORRY!===Confused at line 22, near "'ab' ~~ /a"» | ||
ash_ | rakudo: 'ab' ~~ /ab/; say $/ | ||
p6eval | rakudo : OUTPUT«ab» | ||
ash_ | pugs: 'ab' ~~ /ab/; say $/ | ||
p6eval | pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) { unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib'; eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;}'Pugs::Runtime::Match::HsBridge'"*** '<HANDLE>' trapped by operat… | ||
TimToady | pugs was never strong on regexen | 17:43 | |
17:45
proller_ joined
|
|||
ash_ | that works locally | 17:50 | |
pugs> 'ab' ~~ /ab/; say $/ | 17:51 | ||
ab | |||
17:51
ShaneC joined,
ShaneC left
17:53
sji joined
|
|||
TimToady | one of the reasons pugs was never strong on regexen is because it depends on external libraries for regex, hence the difference you see | 17:55 | |
17:55
MayDaniel joined
|
|||
TimToady | and I doubt you'll find any of those external libraries doing LTM | 17:56 | |
dalek | kudo: 1eae0c4 | KodiB++ | src/core/Bool.pm: [core/Bool] Made +False and +True return Ints. |
18:01 | |
ash_ | pugs> 'bc' ~~ /a|bc/; say $/ | ||
bc | |||
dalek | ast: f013a92 | (Kodi Arfer)++ | S02-builtin_data_types/bool.t: [bool.t] Ensure that Bools numify to Ints. |
18:02 | |
ash_ | that seems right to me, but i don't know about external dependencies | 18:03 | |
colomon | at one point, at least, there was a thought that Bool was a Numeric type. (though personally I think I'm against that.) | ||
18:05
cognominal left
|
|||
ash_ | i think of Bool's as a single bit, more than an integer with values 0 and 1, but i can understand why you would assume a true + true = 2, although that seems more like an error to me personally | 18:05 | |
18:05
cognominal joined
|
|||
ash_ | rakudo: say True + True | 18:05 | |
p6eval | rakudo : OUTPUT«2» | ||
ash_ | rakudo: say True & True | 18:06 | |
p6eval | rakudo : OUTPUT«all(Bool::True)» | ||
ash_ | have you seen the new 'refine' semantics they are adding to ruby? in a scope, you can 'refine an object' only in that scope, so you don't have to monkey patch the whole object, your just monkey patching for a given scope | 18:07 | |
TimToady | lexical scope or dynamic? | 18:08 | |
ash_ | lexically | ||
moritz_ | afaict we've explicitly decided against such a mechanism, no? | ||
ash_ | would be something like: class Foo { refine Int { method bar { } }; method stuff { return bar } }; Foo.stuff; #works; Int.bar #fails | ||
TimToady | well, dynamic is just temp, if we ever implement it | ||
ash_ | err | 18:09 | |
s/return bar/return Int.bar/ | |||
moritz_ | aren't that what subs are for? | ||
ash_ | timeless.judofyr.net/refinements-in-ruby | ||
explains it better than i can | 18:10 | ||
TimToady | btw, your /a|bc/ is not attempting LTM | ||
/b|bc/ would be | |||
ash_ | doh | ||
ya, it doesn't do LTM | 18:11 | ||
pugs> 'ab' ~~ /a|ab/; say $/ | |||
a | |||
18:11
MayDaniel left
|
|||
ash_ | all its really doing is lexically scoping your monkey patching | 18:12 | |
TimToady | in which case it's really a mechanism to let you write .bar instead of bar() | 18:13 | |
moritz_ | we can do that with $obj.&bar | ||
ash_ | when i read about it, i thought "so they are just adding more lexical scoping?" it seems odd | 18:14 | |
TimToady | the question is whether they're actually hooking into the dispatcher's type lookup to implement it, or whether it's just sugar | 18:15 | |
it could be done on the incoming binding, and then it'd pass dynamically to submethods outside the scope but called from within the scope | 18:17 | ||
if that's the case, it'd be a form of delegation, methinks | |||
the interior object is really just wrapping the passed object | |||
or it's sugar for some sort of mixin at binding time | 18:18 | ||
maybe I should read it instead of speculating :) | 18:19 | ||
18:22
Kovensky joined
|
|||
ash_ | its lexical, but it can be inherited and things like that | 18:24 | |
TimToady | it looks like it's basically doing scope-based mapping of the object's type to the ISA chain to use for that object in that context | 18:26 | |
so instead of having lexically scoped searching for subs as Perl does, it kinda meshes the lexically scoped refinements into the existing dispatcher to redirect some of the ISA components elsewhere | 18:28 | ||
18:29
daxim left
|
|||
TimToady | "every time you dispatch in this scope, pretend that you did these mixins to these ISA components" | 18:29 | |
(when I say ISA, I mean the parent chain, not MI) | 18:30 | ||
18:32
proller_ left
|
|||
ash_ | it seems like an alternative to lexical scoping (the way perl does it) | 18:34 | |
but you can do something like (psuedo code): module Foo { refine Int { method bar { 1 } } }; class A { using Foo; }; augment class A { method x { 1.bar } }; which i think (i could be wrong) doesn't work in perl's lexical scoping, does it? | 18:36 | ||
class A { sub bar { 1 } }; augment class A { method x { bar } }; does that work? | 18:37 | ||
TimToady | that's just normal monkey typing in P6 | 18:38 | |
sorear | good * #perl6 | 18:39 | |
ash_ | but does method x have visibility to bar? | ||
TimToady | the "using" is doing something like lexical import in that case | ||
ash_ | i guess does class { }; have a different lexical scope than an augment class { }; ? | 18:40 | |
TimToady | augment doesn't have a scope in that sense; it takes its scope from whatever it's augmenting | ||
ash_ | okay | ||
TimToady | which is why it's currently in the scope_declarator slot | ||
ash_ | rakudo: use MONKEY_TYPING; class A { sub bar { 1 } }; augment class A { method x { bar } }; A.new.x.say # is that wrong behaviour then? | 18:42 | |
p6eval | rakudo : OUTPUT«Could not find sub &bar in 'A::x' at line 22:/tmp/58rclymu6H in main program body at line 22:/tmp/58rclymu6H» | ||
ash_ | rakudo: class A { sub bar { 1 }; method x { bar } }; A.new.x.say # compare to this | ||
p6eval | rakudo : OUTPUT«1» | ||
18:43
kjeldahl left
|
|||
ash_ | in my mind, i could be wrong on this, refine is lexical monkey patching, so only in a specific scope the monkey patch exists | 18:45 | |
sorear | moritz_: huh, I haven't seen it | 18:46 | |
moritz_ | sorear: second entry from the top | 18:47 | |
sorear | moritz_: does perl6.org avoid duplicate sends | ||
aye, I see it in the archive | |||
TimToady | in any case, if we decided we wanted it, it would be just a matter of compiling a different method dispatcher into a given scope that knew to look up the local view of the type system | 18:48 | |
but I prefer to keep lexical scoping orthogonal to single dispatch for now | 18:49 | ||
18:49
uniejo joined
|
|||
TimToady | so to get your bar to work about, it requires an export/import | 18:49 | |
*above | |||
.oO(strange typo) |
|||
basically, Perl 6 puts a strong emphasis on language mutability within lexical scopes, and prefers to keep normal OO outside of the realm of language mutability | 18:52 | ||
Tene | ash_: your example isn't doing the same thing at all. | ||
TimToady | the meaning of a message dispatch is controlled by the class, not by the lexical scope | ||
ash_ | Tene: as ruby refinement? | 18:53 | |
Tene | ash_: yes | ||
ash_ | hmm | ||
Tene | It's more like: | ||
module A { refine class Int { method frob { ... } } }; module B { import A; method foo { 2.frob; } }; | 18:54 | ||
TimToady | assuming that refinements are automatically exported | 18:55 | |
Tene | Yes. | ||
(which they are in ruby) | |||
ash_ | ruby autmoattically export anything not label private | ||
TimToady | which is all perfectly find P6ish, assuming that what you're changing is the dispatcher in the scope of the refinement | ||
that's just mutating the semantics of the language in a lexical scope | 18:56 | ||
Tene | I've long felt that we need something like this to lexically-scope class modifications, to give the rubyists more-sane options. | ||
ash_ | Tene: my example was more perl6'ish without patching an object, just using a lexically scoped sub as an atlernative to a lexically added method | ||
Tene | However, my question is this: | ||
module A { refine class Int { method frob { ... } } }; module B { import A; method foo(Int $n) { $n.frob; } }; B.new.foo(2); # does this work? | 18:57 | ||
ash_ | i think my example was similiar in thoery, just without the extra object | ||
Tene | If I pass in an Int instantiated from a different scope, does it still use the refined Int class? | ||
Also: | |||
module A { refine class Int { method frob { ... } } }; module B { import A; method foo { 2; } }; B.new.foo.frob; # does this work? | 18:58 | ||
If I return an Int from a scope containing Int refinements, does that object use the refined class hierarchy when accessed in a different lexical scope? | |||
ash_ | i would image an Int from a different scope would get the refinement but only if you didn't supersede Int, since supersede IMO is a replacement, and the refinement should be lost with the supersede | ||
returning the int would, in ruby, loose the refinement, so B.new.foo.frob would fail | 18:59 | ||
since you'd be out of the bound of the refinement | |||
Tene | That's what I'd hope, in both of those. | ||
This is why just importing a modified class under the same name isn't enough to work as a relief valve for rubyist monkey patching fetishism. | 19:00 | ||
ash_ | rubyists both love and hate monkey patching it seems | ||
its good when you need it, to add to an existing class instead of making a new one, but it is bad when you do: "require ActiveRecord" and Object has 28 new methods on it, not to mention all the other changes to Fixnum, Class, Module, etc.. | 19:01 | ||
Tene | importing MySpecialInt as 'Int', and getting integer literal constants to use it lexically, would not pass the first test, and would not fail the second. | 19:02 | |
19:03
simcop2387 joined,
wamba joined,
dalek joined,
ChanServ sets mode: +v dalek
|
|||
Tene | I'm fine with it not being a 6.0 feature, but I've been saying for a long time, we need a sane way to lexically-scope class hierarchy modifications. I'm a bit grumpy about augment being offered as a serious tool to new users. | 19:06 | |
19:06
kjeldahl joined
19:07
kjeldahl left,
kjeldahl joined
19:11
risou left
|
|||
TimToady | well, as I say, this looks to me like simply replacing the standard single dispatcher with a different single dispatcher that uses one level of indirection to tell the object what its parents are in this scope | 19:11 | |
and the standard dispatcher need only be replaced in the refined scope | 19:12 | ||
and P6 already has a custom of making dispatchers first class | |||
so I suspect this will fall into the "almost a piece of cake" category | 19:13 | ||
19:13
ch3ck joined
|
|||
Tene | TimToady: Having this dispatcher as a core module might be nice. It's something we definitely eventually need. | 19:13 | |
moritz_ | tadzik: ping | ||
TimToady | maybe | ||
every abstraction layer we add makes the language harder to learn, so I'm not sure whether this achieves sufficient utility to justify that cost | 19:14 | ||
it might, but I'm not yet convinced | 19:15 | ||
Tene | TimToady: We already have this semantic complexity in the form of augment, and people are already using augment. I've seen several beginners come in here talking about wanting to add weird methods to core classes, etc. | 19:16 | |
19:16
dakkar left
|
|||
Tene | I would be really disappointed if Perl 6 ended up with a significant "monkey patch all over the place conflicts" culture like Ruby has had in some cases. | 19:16 | |
TimToady | AOP falls into a similar hole | 19:17 | |
19:19
envi left
19:24
uniejo left
19:25
masak joined
|
|||
masak | rakudo: anon class C {}; say C.WHAT | 19:25 | |
p6eval | rakudo : OUTPUT«Failure()» | ||
masak | std: anon class C {}; say C.WHAT | ||
p6eval | std a194beb: OUTPUT«===SORRY!===Undeclared name: 'C' used at line 1Check failedFAILED 00:01 119m» | ||
masak submits rakudobug | 19:26 | ||
uasi++ twitter.com/uasi/status/9640599502192640 | |||
TimToady | masak: btw, the earlier tweet was probably saying that it's *not* difficult to put -> into the language (compared to P5, I imagine) | 19:28 | |
there was a negative on the end | |||
masak | ah. | ||
Google Translate completely missed that fact, I think. | 19:29 | ||
TimToady | I could be missing something too | ||
not entire sure how a native speaker would interpret the "inai" on the end | 19:30 | ||
*ly | 19:33 | ||
masak | who can bring rakudo.org back up again? :/ | ||
moritz_ | I hope alester can | 19:34 | |
sorear | rakudo: anon class C {}; say D.WHAT | 19:35 | |
p6eval | rakudo : OUTPUT«Could not find sub &D in main program body at line 22:/tmp/BVyrdBgaef» | ||
TimToady | that is a spot where STD just guesses and gives a different error message for uppercase than for lowercase | 19:36 | |
std: D | |||
p6eval | std a194beb: OUTPUT«===SORRY!===Undeclared name: 'D' used at line 1Check failedFAILED 00:01 117m» | 19:37 | |
TimToady | std: d | ||
p6eval | std a194beb: OUTPUT«===SORRY!===Undeclared routine: 'd' used at line 1Check failedFAILED 00:01 117m» | ||
masak | the nomenclature of things that don't exist :) | ||
TimToady | and subtle pressure to follow the convention | ||
Tene | That should be easy to fix for rakudo. | 19:40 | |
moritz_ | it's not | 19:42 | |
TimToady | sorear: your README.pod says "see note", but I don't see a note, and I don't seem to know where to find an "xbuild" | ||
moritz_ | because the lexpad isn't easily available at compile time | ||
(not yet) | |||
PerlJam | TimToady: if on ubuntu, "sudo apt-get install mono-xbuild" | 19:43 | |
Tene | moritz_: I mean, ignoring the name of an anonymous class should be easy, something like this: gist.github.com/722248 | ||
19:44
MayDaniel joined
|
|||
Tene | masak: Feel free to try that patch. | 19:44 | |
moritz_ | Tene: ah, right | ||
masak tries it | 19:45 | ||
Tene | I don't think that's going to be entirely right, as it looks like it will still set up ::C, but it will become a compile-time error, so maybe it won't get far enough to matter. | ||
TimToady | PerlJam: thanks | ||
Tene | Maybe the package name should be changed to a include a unique identifier, or something, maybe stick it in some other private namespace or something. | 19:46 | |
19:46
stkowski joined
|
|||
Tene | You don't want multiple anon class C {} to stomp on each other. | 19:46 | |
PerlJam | TimToady: you'll also want to install mono-gmcs as well and have viv in your path somewhere | 19:48 | |
ash_ | yehudakatz.com/2010/11/30/ruby-2-0-...-practice/ another, more in-depth article about ruby 2.0 refinements | 19:51 | |
dalek | ecza: 0cbefbb | sorear++ | README.pod: Remove stale note reference & talk about Debian packages |
19:52 | |
masak | ash_: because "Perl 6" exists, and it's called "Ruby 2.0"? :P | ||
masak has been listening too much to twitterfolks lately | 19:53 | ||
oh, 'refinements' is a language feature. | 19:54 | ||
ash_ | masak: humbug, i was just bringing it up because its an interesting alternative to MONKEY_PATCHING that ruby is trying to push | ||
masak | ash_: yeah, reading now. | ||
PerlJam | at least the ruby folks realize that rampant monkey patching is a problem and are working to fix it. | 19:55 | |
masak | it looks like a more hygienic form of monkey patching. | ||
wolverian | ash_: nice. after using scala for a while it's obvious that ruby is desperately missing lexical mixins/money patching | ||
(corresponding to scala's implicit conversions) | |||
s/money/monkey/ | |||
ash_ | and its different, its like lexical scoping but different | 19:56 | |
ya | |||
anyway | |||
i linked an article earlier and that one is bit more in depth than the first one i talked about | |||
dalek | ecza: e9e96d5 | sorear++ | / (3 files): Add optimized code for nested autovivification |
19:57 | |
wolverian | I've been kind of assuming that "my class String { .... }" or so would be similar in Perl 6. | ||
ash_ | key point: in ruby people monkey patch a lot, its a tool to allow some of the functionality of monkey patching with restrictions to prevent people from polluting global namespaces, eg 'requre "ActiveRecord"' in ruby adds something like 28 new methods to Object | 19:59 | |
masak | wolverian: wouldn't that lexically shadow the old String class completely, rather than augment it? | 20:00 | |
ash_ | or, you'll see code in ruby modules saying things like: if Object.responds_to :to_json ... end | ||
PerlJam | refinements seem nice but a little backward. | ||
Tene | wolverian: That doesn't work for two reasons: strings passed in from outside the lexical scope would not have the modification, and strings returned from subs in the lexical scope would retain the modification when used elsewhere. | ||
masak: "something like" probably includes setting the core String class as an ancestor. | 20:01 | ||
wolverian | masak: yeah, that's why I said "or so". | 20:03 | |
I didn't remember the augmentation syntax. "is also"? | |||
ash_ | augment class String { } | ||
Tene | wolverian: augment is global | ||
wolverian | okay. then "my augment class String { }"? :) | ||
ash_ | rakudo: use MONKEY_TYPING; augment class Str { method foo { 1 } }; "".foo.say | 20:04 | |
p6eval | rakudo : OUTPUT«1» | ||
ash_ | thats monkeypatching as it stands in p6 | 20:05 | |
20:06
fhelmberger left
|
|||
sorear | Tene: sounds like what you want is extension methods | 20:06 | |
masak | std: my augment class Str { "does this work?" } | ||
p6eval | std a194beb: OUTPUT«===SORRY!===Malformed my at /tmp/Qd0cCzGgwN line 1:------> my ⏏augment class Str { "does this work?" } expecting any of: scoped declarator typenameParse failedFAILED 00:01 118m» | ||
TimToady | you can't put two scope_declarators in a row | 20:07 | |
wolverian | masak: maybe it _should_ work. | ||
masak | no, I suspected that. | ||
wolverian: I can't say I think it reads very well. | |||
wolverian | me neither. | ||
masak | keep thinking :) | 20:08 | |
TimToady is thinking about 'my method' and 'my regex'... | |||
wolverian | well, we could steal implicit conversions from scala, which would add one new keyword ("implicit"), or C#'s extension methods, whose syntax I don't remember | 20:09 | |
ash_ | class Foo { }; { my method Foo::bar { 1}; say Foo.new.bar; } Foo.new.bar #fails | ||
would be neat | |||
Tene | masak: Really, it would be a similar scope declarator to 'augment', like: refine class Foo { ... }; | ||
TimToady | syntax is boring | 20:10 | |
wolverian | seriously though, if I can write "my class", it feels proper that I should be able to write "my augment class" too. even if augment is a verb. | ||
Tene | masak: That ties into TimToady's description of a specialized dispatcher for that lexical scope. | ||
PerlJam | wolverian: "augment my class" | ||
:-) | |||
Tene | wolverian: 'my' and 'augment' are the same lexical category. | 20:11 | |
ash_ | augment your class { } ... | ||
20:11
_kaare joined
|
|||
Tene | wolverian: does it look like it should make sense to write: my my class? my our class? | 20:11 | |
wolverian | Tene: in a sense, yes. what's wrong with lexical globals? ;) | ||
dalek | ecza: a4c17f0 | sorear++ | lib/ (2 files): Run autovivification off the trampoline |
||
masak | ash_++ :) | ||
Tene | wolverian: ... >< | ||
TimToady | it's trivial to add another declarator if we decide to | ||
PerlJam | wolverian: What's the goal here? You want to lexically shadow an existing class and possibly augment that shadow? | ||
masak | pimp your class { }; ... | ||
wolverian | PerlJam: lexically add behaviour to a class, yes. | 20:12 | |
ash_ | wolverian: dynamic variables are better than globals, IMO | ||
wolverian | how it exactly works isn't really that important. | ||
masak | 'refine' could even be provided by a module. | ||
wolverian | again, scala, C# and ruby 2 all do it differently. | ||
the point is that it's an important feature (IMHO) | |||
TimToady | wolverian: how it exactly works is the *most* important, which is why I said syntax is boring :) | 20:13 | |
PerlJam | wolverian: why? | ||
sorear | crossed 45s | ||
wolverian | TimToady: right, I meant how it works syntactically is not important. :) | 20:14 | |
PerlJam: so that you can combine modules that change the behaviour of common classes without conflicts. | |||
(where "modules" is meant generally and not in any specific sense) | |||
moritz_ | you assume that it's important to change the behaviour of classes | 20:15 | |
I think it's bad OO design | |||
TimToady | of course, this is just sweeping the problem one step away--what if you import conflicting view into a 3rd module? | ||
PerlJam | wolverian: so ... it's important in a world of monkey patching or when modules are excessively promiscuous? | ||
TimToady | *views | 20:16 | |
wolverian | moritz_: what, you never want to add a role to a third party class? | ||
it might be bad design, but I find that in scala it works well when used in moderation. | |||
TimToady | so do globals :P | 20:17 | |
where moderation is defined as "countable on the fingers of one hand" | |||
wolverian | I suppose the two aren't exactly comparable, since scala uses implicits mainly to add syntax | 20:18 | |
PerlJam looks at yacc and decides it doesn't know the meaning of "moderation" | |||
masak | is it because Perl has no theoretical axes to grind that it's littered with blunt instruments and loaded uzis? :) | ||
wolverian | e.g. pairs are constructed with "foo -> bar", which means "foo.->(bar)", which works by adding an implicit conversion from Object to an anonymous class that has the -> method | ||
I suspect Perl 6 doesn't need that so much. | |||
TimToady | you get these distortions in a language where one object or the other must make the decision in a symmetrical situation; in p6 the lexical scope is the object that makes the decision, or delegates the decision to a dispatcher that can be symmetric | 20:20 | |
dalek | ecza: 762b837 | sorear++ | docs/tracing.pod: Document NIECZA_TRACE_CALLS |
20:21 | |
ash_ | moritz_: it might be bad OO to modify built in objects, but it is common practice in some places, its better to have a way of doing it for people that need to (for whatever reason) than let people tack it on later in a module that may or may not work with the rest of p6 ecosystem | ||
20:21
saaki joined
|
|||
PerlJam | ash_: it's better to encourage people to think about the consequences of their actions. | 20:22 | |
sorear | completely eliminating the #2 most called function helped a bit | ||
ash_ | p6 already lets you augment class {...}; refinement (in the ruby sense, i don't know scala or c#) is almost a lexically scoped augment | 20:23 | |
sorear | ash_: niecza disallows 'augment' in modules. problem solved. | ||
wolverian | TimToady: right. single dispatch is a big wart in scala! | ||
flussence | I can imagine this object thing being useful if for example, you want some high-overhead debugging stuff in a method that gets called everywhere, but you only want to know about one specific call. Or you want to poke around that object's insides when that call happens. maybe. | 20:25 | |
ash_ | i think something is wrong if you ever see code like: "unless Foo.^method ~~ 'bar' { ...add bar... }" start showing up in a module, which is a common thing in ruby because of their open classes, and p6 already has open classes, it could probably become a problem for p6 as well | ||
sorear | using if $ch ~~ "\n" on a string which is known to have at most one character is ... wasteful | 20:26 | |
ash_ | or you could disable augment | ||
masak | by the way, only 10 days -- ten days -- now remain to the BIG ANNOUNCEMENT. | ||
which means it's time for another clue. | |||
sorear | oh, it's obvious. | ||
I'll be 20 1/12 | |||
sorear feels important | 20:27 | ||
colomon | \o/ | ||
moritz_ | rakudo: say Date.today + 10 | ||
p6eval | rakudo : OUTPUT«2010-12-10» | ||
colomon | sorear: apparently I missed telling you happy birthday approximately 20 days ago. So happy unbirthday! | ||
masak | sorear: happy unbirthday! | 20:28 | |
colomon | masak: your clue please, sir? | ||
dalek | : 5287a83 | duff++ | misc/perl6advent-2010/schedule: Claim a couple of days for the advent calendar |
20:29 | |
masak | colomon: thought you'd never ask :) | ||
20:29
Axius joined
|
|||
masak | colomon: here it is: www.thefreedictionary.com/task | 20:30 | |
jnthn | "A difficult or tedious undertaking" | ||
20:30
plainhao left
|
|||
colomon | "To overburden with labor" | 20:30 | |
jnthn | ...sounds like guessing masak's announcement. :P | ||
PerlJam | masak: clearly you've created a perfect make replacement for Perl | ||
moritz_ has an idea | |||
masak | :) | ||
moritz_ | or you have created your own personal-time-scheduling-and-tracking app | 20:31 | |
to become 200% productive not only in November, but for the whole year | |||
PerlJam | moritz_: this is just masak's way of soliciting ideas for future projects. | ||
masak | I like your overconfidence in me, even if it's feigned. | ||
moritz_ | PerlJam: :-) | ||
masak | PerlJam: sssh! ... I mean, no! | 20:32 | |
masak quietly takes notes | |||
moritz_ | masak: or you have a deal with Patrick Rothfuss; he'll write your next Yapsi release announcement | 20:33 | |
20:34
jaldhar left,
MayDaniel left,
tylercurtis joined
|
|||
masak | moritz_: that would be tomorrow, not in 10 days. | 20:35 | |
ash_ | rakudo: my method Foo::bar { } | ||
p6eval | rakudo : ( no output ) | ||
moritz_ | masak: well, not for tomorrow's release | ||
ash_ | rakudo: class Foo { }; my method Foo::bar { 1 }; say Foo.new.bar; | ||
p6eval | rakudo : OUTPUT«Method 'bar' not found for invocant of class 'Foo' in main program body at line 22:/tmp/wPFuy49BOa» | ||
ash_ | std: class Foo { }; my method Foo::bar { 1 }; say Foo.new.bar; | 20:36 | |
p6eval | std a194beb: OUTPUT«ok 00:01 120m» | ||
ash_ | does that mean anything useful? | ||
(my method ...) | |||
masak | moritz_: you've guessed right insofar as him not writing tomorrow's release announcement :P | ||
ash_: you wouldn't be able to call the method in that way, at any rate. | 20:37 | ||
ash_ | why not? | ||
masak | ash_: but I doubt it'd even work if you used 'our'. feels wrong. | ||
moritz_ | ash_: Foo::bar looks like an entry in the symbol table to me | 20:38 | |
but method lookup doesn't look into symbol tables | |||
jnthn | That method dispatch will fail. | ||
ah, Rakudo got it right. phew :) | |||
sorear | niecza: class Foo { }; my method Foo::bar { 1 } | 20:39 | |
p6eval | niecza 762b837: OUTPUT«===SORRY!===Qualified method definitions not understood at /tmp/4Rnk3EZVBr line 1:------> class Foo { }; my method Foo::bar⏏ { 1 }Use of uninitialized value $name in concatenation (.) or string at | ||
../home/p6eval/niecza/src/Niecza/Actions.pm lin… | |||
20:39
masak left
|
|||
sorear | hrm. | 20:39 | |
20:39
masak joined
|
|||
sorear | niecza: my class A::B { } | 20:39 | |
p6eval | niecza 762b837: OUTPUT«===SORRY!===Qualified package definitions NYI at /tmp/A0_sk9pM9c line 1:------> my class A::B⏏ { }Attribute (var) does not pass the type constraint because: Validation failed for 'Str' with value undef at | ||
../home/p6eval/niecza/src/Niecza/Action… | |||
sorear | my.*:: doesn't make any sense | 20:40 | |
I thought I had an awesome error message for it, but I guess not | |||
ash_ | std: my class A::B { } | ||
p6eval | std a194beb: OUTPUT«ok 00:01 118m» | ||
sorear | :: means "put the right side in the symbol table named on the left" | ||
ash_ | class A::B { } | ||
err | 20:41 | ||
sorear | my means "don't put this in any symbol table" | ||
:: is only compatible with our | |||
(and augment) | |||
ash_ | well, you can do: | ||
rakudo: class Foo { }; { my &a = method { 1 }; Foo.new.&a.say; } | 20:42 | ||
p6eval | rakudo : OUTPUT«1» | ||
ash_ | just wondering if there was a way to make that work without & and have it still be lexically scoped | ||
masak | ash_: probably not; why is it important to lose the & ? | 20:43 | |
sorear | you can lose one of the &s | ||
ash_ | masak: good point | ||
sorear | rakudo: my method foo { 1 }; "foo".&foo.say | ||
p6eval | rakudo : OUTPUT«1» | ||
TimToady | one of the lesser design principles of Perl 6 is: Strange things should look strange. | 20:44 | |
ash_ | that functionality could approximate refinement, no? | 20:45 | |
PerlJam | rakudo: my method foo { 1 }; .&foo.say | ||
p6eval | rakudo : OUTPUT«1» | ||
masak | sorear posted on p6l about methodicals (which is what ash_ is proposing) about half a year ago. since then, we've discovered the power of $obj.&foo here on the channel, and the need to specially introduce methodicals has *completely* gone away, if you ask me. | ||
I think I replied something to that effect to that p6l thread. | 20:46 | ||
TimToady | std: my multi method foo(Int:) {...}; my multi method foo(Str:) {...}; 42.&foo | ||
p6eval | std a194beb: OUTPUT«ok 00:01 126m» | ||
TimToady | that even lets you dispatch on the type | ||
masak | nice. | 20:47 | |
TimToady | so it's an even closer approximation to refinement | ||
jnthn | TimToady: ...ouch! | ||
Does...that even work... | |||
sorear | why wouldn't it? | ||
jnthn | rakudo: my multi method foo(Int:) {...}; my multi method foo(Str:) {...}; 42.&foo | ||
p6eval | rakudo : OUTPUT«===SORRY!===Multiple declarations of lexical '&foo'» | ||
sorear | my methods are just subs | ||
jnthn | sorear: Because I wrote the implementatin of that in Rakudo | ||
masak | jnthn: I think so. it's only anon methods that can't multi. | ||
ash_ | rakudo: class A { has $!a }; method foo { $!a + 1}; A.new(:a(3)).foo.say | 20:48 | |
p6eval | rakudo : OUTPUT«Useless declaration of has-scoped Method in a module; add our or my to install it in the lexpad or namespaceMethod 'foo' not found for invocant of class 'A' in main program body at line 22:/tmp/qs4a4ir_St» | ||
jnthn | sorear: So I generally knwo what I expect to work or not :) | ||
ash_ | rakudo: class A { has $!a }; my method foo { $!a + 1}; A.new(:a(3)).&foo.say | ||
p6eval | rakudo : OUTPUT«4» | ||
jnthn | Anyway, I suepct it can be made to work. | ||
ash_ | i thought that was deemed bad/wrong/breaks encapsulation | ||
sorear | rakudo: my multi sub foo(Int) {...}; my multi sub foo(Str) {...}; 42.&foo | ||
p6eval | rakudo : ( no output ) | ||
sorear | ash_: yes | ||
masak | ash_: it was. it is. it's a bug. | ||
jnthn | ash_: That will likely become an error. | ||
masak | ash_: it's been reported :) | ||
sorear | It's clearly very low priority though. | 20:49 | |
ash_ | then do 'my method' provide a real equivalent to refinement? since in refinement you can access private variables if your in the right scope | ||
i guess the jump to private requires an augment and MONKEY_PATCHING | 20:50 | ||
sorear | jnthn isn't even trying to get away from "attributes are named elements of an object" in 6model | ||
ash_ | monkey_typing | ||
tylercurtis | sorear: ooc, what is the alternative to "attributes are named elements of an object"? | 20:53 | |
TimToady | class Me { use MONKEY_TYPING; augment A { trusts Me }; ... } | 20:54 | |
sorear | tylercurtis: that was worded badly | ||
tylercurtis: what I mean is that every current Perl 6 implementation has objects that act sort of like hashes | |||
$obj!A has a single meaning, $obj!B has another | |||
however Perl 6 attribute privacy requires that a superclass and a subclass be able to use $!x without interference | 20:55 | ||
so the objects really need to be keyed by class * name | 20:56 | ||
not name alone | |||
tylercurtis thought 6model did that. | |||
jnthn | sorear: huh? | ||
sorear | (it's fairly straightforward to turn this into class * index, in a system vaguely reminiscent of virtual bases) | ||
jnthn | sorear: "so the objects really need to be keyed by class * name" - that's exactly what 6model does | ||
I wish you'd actually check stuff about 6model. Msot of what you say aobut it is consistently wrong. | 20:57 | ||
There's even stuff in the REPR API already to allow indexed access. | |||
masak | jnthn++ | ||
sorear | that's a failure of reading comprehension, not effort | ||
sorry | |||
I saw the indexes, but not the class disambiguation stuff | 20:58 | ||
masak | Tene: your patch worked, by the way. making spectest and then committing. Tene++ | 20:59 | |
jnthn | sorear: 'sok | ||
lichtkind | is .... still the yadda ? | 21:02 | |
TimToady | next niecza build problem: Target SAFE.cs: | ||
tylercurtis | lichtkind: ... | ||
TimToady | Can't locate STD.pm in @INC | ||
lichtkind | tylercurtis: the ... operator | 21:03 | |
since he does list creation | |||
tylercurtis | lichtkind: Sorry, I was unclear. The series operator and the yadda term are both "...", not "....". | 21:04 | |
21:04
Axius left
|
|||
lichtkind | yes i had a typo | 21:04 | |
jnthn | lichtkind: Perl 6 always knows whether it expects an infix operator or a term. So there's no an ambiguity between them. | ||
lichtkind: Vsetko je dobre. :) | 21:05 | ||
lichtkind | :) | ||
ash_ | what language is that? | 21:06 | |
jnthn | ash_: Lazy Slovak. | ||
ash_ wishes i knew more than bad english | |||
jnthn | (Lazy 'cus I neglected to type any of the marks... :-)) | ||
sorear | TimToady: niecza expects to find a CPAN STD installed | 21:07 | |
TimToady | ah | 21:08 | |
ash_ | sorear: how does one build/playwith niecza | ||
sorear | ash_: 1. git clone git://github.com/sorear/niecza.git | 21:09 | |
ash_ | check | ||
sorear | 2. install stuff listed in README | ||
ash_ | perl 5.12 i assume is fine, right? | 21:10 | |
sorear | yes | ||
ash_ | never built a C# program (or mono) so, thats the part that has me stumped | ||
no ./configure either | |||
sorear | xbuild | 21:11 | |
unless you're talking about mono itself | |||
ash_ | i am on OS X 10.6, mono 2.6.7 x86 | 21:12 | |
so... i dont know | |||
sorear | mono 2.6.7 is fine, that's what I started on | 21:13 | |
run xbuild in the niecza root | |||
ash_ | kk, still getting perl5 deps | ||
21:13
Ikarus left
21:14
Ikarus joined
21:15
masak left
21:16
masak joined
21:17
ch3ck left
|
|||
ash_ | sorear++ its building now | 21:18 | |
diakopter | .. and it's done. | ||
ash_ off to class | 21:19 | ||
21:19
ash_ left,
Axius joined
21:23
Hor|zon joined
21:26
__david__ joined
21:30
masak left
21:33
wamba left
21:37
Axius_ joined
21:44
y3llow joined
21:45
pothos_ joined
21:47
pothos_ left
21:48
pothos joined
21:54
Axius left,
Axius_ left
22:00
__david__ left
|
|||
shortcircuit | TimToady: Sure, RC has P6 and P5 versions of Topological Sort...but it looks like the P6 version has the "translation of Perl" annotation. | 22:02 | |
Is that P6 implementation really the most idiomatic for the task? | |||
22:08
bluescreen joined
22:09
bluescreen is now known as Guest2621,
Luiji99 joined
|
|||
Luiji99 | How do I create PBCs with Rakudo? | 22:09 | |
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....dex_tablet | 22:11 | |
flussence | shortcircuit: the p6 one looks like a literal translation too, the [<>]s should be <>s. I haven't found any way to make the algorithm itself look nicer though. | 22:15 | |
Luiji99 | The Rakudo --output command-line option doesn't seem to do anything. | ||
sorear | you need to pass the option to Parrot | 22:17 | |
flussence | Luiji99: --target=pir will get you halfway there, =pbc doesn't seem to work directly | ||
sorear | parrot --parrot-options /path/to/perl6.pbc --rakudo-options | ||
Luiji99 | There is no such file perl6.pbc. | 22:18 | |
flussence:thanks,trying | |||
it worked! thx | 22:19 | ||
22:19
Luiji99 left
|
|||
flussence | I don't like giving half-solutions, but if it works for him... *shrug* | 22:19 | |
22:25
ch3ck joined
22:26
ch3ck3r joined
22:30
ch3ck left
|
|||
lichtkind | TimToady: regex_mod_internal means only tobe used inside a regex not in front as a adverb? | 22:37 | |
dalek | kudo: bba62f3 | masak++ | src/Perl6/Actions.pm: [Perl6::Actions] don't registed names of anon types Patch submitted by Tene++. |
22:43 | |
jnthn | Tene++, masak++ | 22:45 | |
dalek | tpfwiki: (Herbert Breunung)++ | www.perlfoundation.org/perl6/index....kup_tablet | 22:54 | |
22:56
risou joined
23:03
_kaare left,
ch3ck3r left
23:04
ch3ck3r joined
23:09
hercynium left,
Helios- joined
23:16
tylercurtis left
23:24
risou_ joined
23:25
risou left
23:32
masak joined
|
|||
masak | ahoy! | 23:32 | |
sorear: I now have a working niecza checkout. | 23:34 | ||
colomon | \o/ | 23:35 | |
masak | sorear: and, conveniently, November just ran out, so I can focus on other things, such as trying out a new implementation. :) | 23:36 | |
blog post! strangelyconsistent.org/blog/novemb...with-style | 23:37 | ||
colomon | having a working system perl 5.10 is slowing me down at the moment... | 23:38 | |
(installing niecza, I mean.) | |||
masak | colomon: every heard of perlbrew? | 23:39 | |
s/every/ever/ | |||
colomon | I recognize the name... | ||
oooooo | 23:40 | ||
masak | I | ||
I've only used it very little so far. | |||
but it's a *very* pleasant experience, what little I've used it. | |||
jnthn | masak: (blog post) :/ | 23:41 | |
masak exhales after the November blogging month | |||
jnthn: I'm only reporting things as they are. :/ | 23:42 | ||
jnthn | masak: Things as they are, are, apparently, shit. | ||
masak | yup. | ||
colomon | masak: any way to distill that down to a benchmark? | 23:43 | |
masak | colomon: I don't know. | ||
colomon: maybe just put all the code into one file and use that as a benchmark? | |||
but it's quite a bit of code. | 23:44 | ||
colomon | I'm thinking something that can fit into the bench-scripts framework. (One large file would be okay, so far as I know.) | 23:45 | |
We need to seriously tackle profiling issues. | |||
23:46
tylercurtis joined
|
|||
colomon | ... or maybe make niecza implement a lot more of the spec. :) | 23:46 | |
masak | that's not an exclusive or. :) | 23:47 | |
colomon | afk # pub | 23:48 | |
23:50
whiteknight joined
23:54
plobsing joined
|