»ö« 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. |
|||
00:11
jferrero left
00:20
Limbic_Region joined
|
|||
dalek | ecza/master: dc83727 | sorear++ | src/ (2 files): Regexes capture returns |
00:23 | |
ecza/master: 8c6552e | sorear++ | v6/STD.pm6: [STD] Depend less on Nil semantics |
|||
ecza/master: 0644834 | sorear++ | / (4 files): Allow list-valued constants |
|||
ecza/master: 6d9e43e | sorear++ | / (4 files): () is now Nil, a constant |
00:28 | ||
00:37
Italian_Plumber joined
00:55
prettyrobots joined
|
|||
prettyrobots | perl6: say 3 | 00:55 | |
p6eval | pugs, rakudo 46b2c5: OUTPUT«3» | ||
01:05
dukeleto left
01:08
dukeleto joined
01:20
Eevee_ is now known as Eevee
01:22
silug joined
01:27
Schwern joined
01:31
QinGW joined,
QinGW left
01:36
QinGW joined
01:50
hudnix left
01:52
silug left
01:54
envi left
01:57
colomon_ joined,
colomon left,
colomon_ is now known as colomon
01:58
justatheory joined
02:06
nymacro joined
02:10
risou joined,
Italian_Plumber left
02:18
lue joined
02:20
risou left
02:30
lichtkind left
02:36
Schwern left
02:42
Schwern joined
03:03
agentzh joined
03:09
ironcamel joined
|
|||
ironcamel | is this right? my @list = 0,2,4 ... *; | 03:10 | |
i am trying the examples on slide 80 www.slideshare.net/mfollett/perl-6-talk | 03:12 | ||
oops, i needed := instead of = | 03:13 | ||
Tene | Unfortunately. | 03:14 | |
TimToady | eventually = will notice the * and give up | 03:18 | |
phenny | TimToady: 10 Oct 15:59Z <diakopter> tell TimToady sorear> hmm, there's a STD bug which causes role Foo[$x] { ... }; Foo[2] to be misparsed | ||
TimToady: 10 Oct 16:00Z <diakopter> tell TimToady sorear> ::Foo[2] is handled as a syntactic special case but Foo[2] winds up an ordinary postcircumfix call | |||
TimToady | done with my talk, so might get my brane back soon | ||
03:23
Limbic_Region left
03:33
meppl left
03:38
sftp left
03:52
satyavvd joined
03:55
nymacro left
03:59
nymacro joined
04:00
silug joined
04:12
alester left
04:15
meppl joined
04:44
justatheory left
04:53
_kaare joined
05:19
nymacro left
05:23
nymacro joined
05:24
tinhead joined
05:27
cotto left,
cotto joined
05:34
tinhead left
05:40
araujo joined
|
|||
sorear | good * #perl6 | 05:40 | |
heey TimToady pinged out :/ | 05:45 | ||
05:53
araujo left
05:58
orafu left
05:59
pythonian4000 is now known as pythonian4000afk
06:04
PZt left
06:06
_twitch joined
06:09
PZt joined
|
|||
moritz_ | good morning | 06:19 | |
06:19
envi joined
|
|||
sorear | good morning moritz_ | 06:19 | |
moritz_ | sorear: (backlog) () shouldn't be Nil | 06:20 | |
rakudo: say ().defined, Nil,defined | |||
p6eval | rakudo 46b2c5: OUTPUT«===SORRY!===Confused at line 22, near "say ().def"» | ||
moritz_ | rakudo: say ().defined, Nil.defined | ||
p6eval | rakudo 46b2c5: OUTPUT«Bool::TrueBool::False» | ||
sorear | niecza still follows the old standard, Nil is the unique empty parcel | 06:21 | |
moritz_ | just thought I'd mention it, in case you missed the change | 06:23 | |
06:23
mavrc joined
|
|||
sorear | so what does () do now? | 06:23 | |
same as &infix:<,>() ? | |||
moritz_ | just an empty Parcel | ||
sorear | that feels wrong | 06:24 | |
rakudo: sub foo { }; say foo.defined | |||
p6eval | rakudo 46b2c5: OUTPUT«Bool::False» | ||
sorear | rakudo: say (().defined) | ||
p6eval | rakudo 46b2c5: OUTPUT«Bool::True» | ||
sorear | () is simply an empty list of statements | ||
moritz_ | rakudo: sub foo { () }; say foo.defined | ||
sorear | rakudo: say ({ }.().defined) | ||
p6eval | rakudo 46b2c5: OUTPUT«Bool::True» | 06:25 | |
rakudo 46b2c5: OUTPUT«invoke() not implemented in class '' in main program body at line 22:/tmp/8AacyDUxec» | |||
sorear | () should return Nil because the empty list of statements returns Nil | ||
06:35
kjeldahl joined
06:54
kjeldahl left
07:01
mavrc left
07:06
baux joined
07:08
mavrc joined
|
|||
dalek | kudo: 79f754a | moritz++ | / (2 files): use parrot's String.reverse for Str.flip also bumps PARROT_REVISION This speeds up a small benchmark (which reverse a 1200 char 10 times) from 14s to 0.7s (close to startup time). cotto++ cotto++ cotto++ |
07:20 | |
07:44
Mowah joined,
envi_ joined
07:48
envi left
08:02
nymacro left
08:08
christine left,
christine joined
|
|||
sorear | std: sub foo($*) {} | 08:15 | |
p6eval | std 263c207: OUTPUT«===SORRY!===Unable to parse signature at /tmp/5Kp6x0wo41 line 1:------> sub foo⏏($*) {}Couldn't find final ')'; gave up at /tmp/5Kp6x0wo41 line 1:------> sub foo($⏏*) {} expecting any of: constraint | ||
..param_sep parame… | |||
08:15
ChanServ sets mode: +o sorear,
sorear sets mode: -b pothos!*@*
08:16
sorear sets mode: -o sorear
|
|||
sorear | (oops) | 08:16 | |
08:28
Mowah left
08:29
Mowah joined
08:32
dakkar joined
08:38
cjk101011 joined
08:43
nymacro joined
08:57
zby_home_ joined
|
|||
sorear | What does [1, 2; 3, 4] do? | 09:13 | |
[Sec] | rakudo: my $x="foo"x 99;$x.substr(70)="";$x.say | ||
p6eval | rakudo 79f754: OUTPUT«Cannot modify readonly value in '&infix:<=>' at line 1 in main program body at line 22:/tmp/v3YBt3EnwC» | ||
sorear | rakudo: say [1,2;3,4].perl | 09:14 | |
p6eval | rakudo 79f754: OUTPUT«[3, 4]» | ||
[Sec] | Hm. how can I elegantly trucate a string in perl6? | ||
09:14
timbunce joined
|
|||
moritz_ | rakudo: my $x = "foo" x 99; $x.=substr(0, 70); $x.say | 09:15 | |
p6eval | rakudo 79f754: OUTPUT«foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoof» | ||
moritz_ | [Sec]: (mostly unrelated) I strongly recommend the use of whitespace around infix operators | 09:16 | |
[Sec] | oh. .= -- nasty %) | ||
sorear | .=substr is a postfix operator though | 09:17 | |
[Sec] | thats breking my perl5 assumtions. Although i think i understand what it does now. | ||
moritz_ | it's the same as $x = $s.substr(...) | 09:19 | |
sorear | the thing to realize about .= is that it really is a special case | 09:20 | |
don't try to think about it as derived from a metaoperator, because it isn't | |||
it's just designed to be Strangely Consistant(tm) | |||
moritz_ | right; it's a postfixish or so :-) | ||
[Sec] | moritz_: but there is no way to just use substr as a lvalue? | 09:21 | |
moritz_ | and .= exists as an infix, which is weird, because there's no infix . | ||
[Sec]: I think it's specced, but not implemented | |||
sorear | std: my $x; $x .= foo; | ||
p6eval | std 263c207: OUTPUT«ok 00:01 117m» | ||
moritz_ | std: my $x; $x . foo; | 09:22 | |
p6eval | std 263c207: OUTPUT«===SORRY!===Unsupported use of . to concatenate strings; in Perl 6 please use ~ at /tmp/BH_y6rgLr8 line 1:------> my $x; $x . ⏏foo;Parse failedFAILED 00:01 117m» | ||
sorear out | 09:24 | ||
09:27
BooK joined
09:34
daxim joined
09:46
kjeldahl joined
09:48
pythonian4000afk is now known as pythonian4000
09:54
mberends joined
|
|||
mberends | \o iz Ljubljane :-) | 09:55 | |
moritz_ | o/ | ||
mberends is very happy to be key speaker for event.perlrussia.org/saintperl2/ | 09:59 | ||
moritz_ | mberends: what will you talk about? | 10:00 | |
mberends | I haz a new talk idea: The Perl 6 Book of Records | ||
10:00
Italian_Plumber joined
|
|||
jnthn | mberends: Enjoy! :-) | 10:03 | |
Have (a few) vodki for me. ;-) | |||
10:03
QinGW left
|
|||
jnthn finally may have managed to catch up on sleep | 10:03 | ||
mberends | thanks jnthn, although vodka is one drink I have never enjoyed, possibly due to a bad start as a newbie | 10:08 | |
jnthn | Aww. | 10:09 | |
Yes, I've had one bad experience with it too. | |||
There's good stuff and there's less good stuff. :-) | |||
moritz_ just noticed that the linux and windows styles of finding executables resemble the difference between sub and method scoping/dispatch | 10:11 | ||
the file associations on windows mean that if you registered a type with a certain executable, it doesn't ahve to be in scope/$PATH to be found - kinda like methods | 10:12 | ||
whereas the classical UNIX model requires all executables (like subs) to be in $PATH (like scope), unless you specify the full path | 10:13 | ||
mberends | moritz_: I thought I had all these ideas neatly and separately pigeon-holed, and then you mix them together and make me feel confused ;-( | 10:15 | |
10:15
cjk101012 joined
|
|||
moritz_ | mberends: if you fear mixing of ideas, you should avoid a 100km safety zone around #perl6 :-) | 10:17 | |
mberends deploys a tinfoil hat | 10:18 | ||
moritz_ builds a laser evaporater for reflecting hats | |||
10:19
cjk101011 left
10:31
muixirt joined
10:39
Italian_Plumber left
10:44
Mowah left
10:45
pythonian4000 is now known as pythonian4000afk,
pythonian4000afk is now known as pythonian4000
10:46
pythonian4000 is now known as pythonian4000afk
10:48
krakan left
10:49
krakan joined
10:55
Italian_Plumber joined
11:08
daxim left,
daxim joined
11:16
imarcust1is left
|
|||
muixirt | hi moritz_ | 11:17 | |
11:20
masak joined
|
|||
masak | oh hai, #perl6 | 11:20 | |
muixirt | rakudo: my @r=[]; sub reg() { @r[@r-1] }; reg[1]=1; | 11:21 | |
p6eval | rakudo 79f754: ( no output ) | ||
muixirt | hi masak | ||
the right man at the right time | |||
masak | muixirt: need to 'say' something. | ||
muixirt | can you explain what is going on in that snippet (i looked at yapsi) | 11:22 | |
masak | oh! yapsi, indeed. | ||
it looks a bit taken out of context, but... | |||
the runtime has registers. the registers are stored in an array. | 11:23 | ||
but if I recall correctly, the registers also need to be stashed/restored as we climb the call stack. | |||
muixirt | it relates to @register-stack, sub reg and the reg[$register]=something constructs | ||
masak | right, the register stack corresponds to the call stack. | 11:24 | |
any questions so far? :) | |||
muixirt | i need a more basic explanation, what that snippet does (how it works) | 11:25 | |
masak | I think I need to look at the original code. hold on. | ||
ok, so here's ®: github.com/masak/yapsi/blob/96ca8f0...si.pm#L480 | 11:27 | ||
it's basically a local convenience sub. | |||
it says, in words, "give me the topmost layer of registers". | |||
since @register-stack is an array of arrays, ® returns an array | 11:28 | ||
I made ® because at any given point of the runtime, we're only ever interested in the topmost layer of registers. | |||
that's the one containing registers for the block we're in. | |||
muixirt: am I making sense? | 11:30 | ||
muixirt | ok, so why is reg[$register]=something possible (again it's my lack of the basic understanding of perl6 contructs) | ||
masak | ah. | ||
it just looks funny, but nothing funny is going on. | |||
recall that ® returns an array. | |||
so 'reg[$ix] = $sth' just means | 11:31 | ||
(1) call ® | |||
(2) assign $sth to the $ix index of the result | |||
and that's it. | |||
you wouldn't have balked at all if 'reg' was called '@reg', but that's basically what it is. | 11:32 | ||
muixirt | cool, what is that called in perl6 jargon? | ||
masak | "calling a sub and then indexing the result" :) | ||
fwiw, I was confused the first time I saw it too. | |||
but it's really not magic at all. | |||
flussence | Does p6 still have lvalue subs, or do objects obviate the need for that now? | 11:33 | |
masak | compare it to 'reg()[$ix] = $sth', which means the same thing. | ||
jnthn | I muchly prefer it with reg()[$ix] | ||
flussence: sub foo() is rw { ... } | |||
masak | jnthn: it adds one kind of clarity and subtracts another, IMHO. | ||
jnthn | But Rakudo is a bit hand-wavey on this stuff at the moment. | ||
muixirt | masak: thanks for the explanation | ||
masak | muixirt: my pleasure. | ||
jnthn | masak: I know what you're saying, but I think that it adds needed clarity. | ||
masak | jnthn: I agree. | 11:34 | |
jnthn: I see it as an abstraction. using just 'reg' allows me to think of ® more like a "thing". using 'reg()', I keep thinking of it as a call. thinking of it as a thing has its merits. | 11:35 | ||
jnthn: by an amazing coincidence, Guy Steele is up talking about the thing about associativity and parallelism that I mentioned in the car: twitter.com/mfollett/status/27381191594 | 11:37 | ||
(perhaps not so amazing; I got the original idea from one of his slides) | |||
jnthn | masak: I can totally buy that argument. I just tend to worry a little over constructs that make experienced Perl 6 folks like us do a double-take. The majority of folks are quite new to Perl 6 at the moment, so a little thoughtfulness for their understanding is nice. :-) | 11:38 | |
masak | jnthn: embracing thoughtfulness for newcomers' understanding is very different to dumbing down one's code. | 11:39 | |
my goal is clarity often enough. but not always clarity for the newcomer. | 11:40 | ||
11:40
mberends left
11:42
reqamst_ left
11:43
satyavvd left
|
|||
masak | <sorear> () should return Nil because the empty list of statements returns Nil | 11:46 | |
intriguing. | |||
I have no counterargument to that; I just have a feeling that it won't work. | |||
11:49
Intensity left
|
|||
moritz_ | well | 11:52 | |
if it were nil, () eqv @list.grep(False) wouldn't hold true | |||
it's perl 5 think that list and statement list are the same thing, AFAICT | |||
11:53
mberends joined
11:57
agentzh left
11:58
pythonian4000afk is now known as pythonian4000,
krakan left
|
|||
takadonet | morning all | 12:00 | |
masak | takadonet: \o | 12:01 | |
one of the more insightful comments on Perl 6 on Twitter: twitter.com/jimpick/status/27397727538 | |||
moritz_ seriously doubts that TimToady can kill Perl 5, even if he tried | 12:02 | ||
masak | :) | 12:03 | |
speaking of TimToady; whatever he's up to in YAPC::Asia, it's leaving ripples and waves on Twitter. | 12:04 | ||
muixirt | the 'Kaffe' Jim Pick ? | ||
masak | TimToady++ | ||
muixirt: quite likely. | |||
takadonet | masak: in a good or bad way? | ||
masak | I just replied to him: twitter.com/carlmasak/status/27434049287 | ||
takadonet: I'm not putting any such value into it. just talking about quantity. | |||
but most of it seems expectant and awed, as usual. | 12:05 | ||
things like this: twitter.com/ironcamel/status/27406491292 :) | |||
it just goes to show how some things that we take for granted here are considered magic by some outsiders. | 12:06 | ||
one doesn't even need the 8 :P | |||
[Sec] | 1,2,4 -- i would expect the next to be 7 %) | ||
moritz_ | why? | 12:07 | |
12:07
christine left,
christine joined
|
|||
masak | $^last + ++$n, probably :) | 12:08 | |
12:09
pythonian4000 is now known as pythonian4000afk
|
|||
moritz_ | when faced with the question on how to resume a sequence, I usually answer with 42 | 12:09 | |
masak | 42: the metasyntactic integer constant. | 12:12 | |
12:12
krakan joined
|
|||
masak | it wouldn't surprise me if 42 is the most commongly occuring integer in the perl6 queue in RT. | 12:13 | |
moritz_ | it would surprise me | ||
I'd expect 0 or 1 to hold that position | |||
especially considering that True and False have long stringified to 1 and 0 | 12:14 | ||
masak | I can easily find out. | ||
moritz_ | masak: do you have a text dump of the perl6 RT queue, or something similar? | 12:15 | |
masak | even better. I have a YAML dump :) | ||
moritz_ | \o/ | ||
how did you obtain it? | |||
masak | Perl 5 script. want it? | ||
moritz_ | yes please | ||
masak | gimme a minute. | ||
12:17
MayDaniel joined
|
|||
masak | moritz_: github.com/masak/rt-statistics | 12:19 | |
man, I love github. :) | |||
moritz_ too | |||
masak | moritz_: maybe you could even help me with a problem I have with the generated tickets.yaml file... | 12:20 | |
the 'message' fields are garbled in that they are missing all newlines. I'd like to have the newlines, too. | |||
12:20
pythonian4000afk is now known as pythonian4000
|
|||
masak | the problem is on this line: github.com/masak/rt-statistics/blob...ollect#L20 | 12:21 | |
I know I shouldn't do it like that, but I don't have a better idea. | |||
moritz_ not familiar with Web::Scraper | 12:22 | ||
masak | ever since I learned about it, I've been using it everywhere. | ||
I'm not yet a power user of it, though. maybe I should ask miyagawa. | 12:23 | ||
moritz_ | speaking of miyagawa, I just had the first failure trying to install a module with cpanm | ||
but there's nothing he can do about it - XML::LibXML was missing the libxml2-dev package | 12:24 | ||
12:24
pythonian4000 is now known as pythonian4000afk
12:26
pythonian4000afk is now known as pythonian4000
12:28
mavrc left,
pythonian4000 is now known as pythonian4000afk
|
|||
moritz_ | huh. libxml2 comes only with a dynamic lib | 12:29 | |
masak | I'm now switching my Github account plan to micro. I don't need it (yet), but I want to show them my support. | 12:30 | |
12:30
atomicstack joined
|
|||
masak | wow, that was easy. | 12:31 | |
github++ | |||
12:32
daxim left
12:34
pythonian4000afk is now known as pythonian4000
12:37
MayDaniel left,
constant left,
pythonian4000 is now known as pythonian4000afk
12:39
pythonian4000afk is now known as pythonian4000,
constant joined,
constant left,
constant joined
12:41
pythonian4000 is now known as pythonian4000afk
12:44
mavrc joined
12:47
_kaare left
12:50
risou_ joined
|
|||
Quadrescence | Is there a proper name for the kind of regex matches where the parenthetical match is remembered | 12:51 | |
? | |||
s/foo(.*)/foo$1.txt/ <-- name for the whole () $1 dealio | |||
moritz_ | "capture" | 12:52 | |
Quadrescence | moritz_: tell me a regex joke. | ||
moritz_ | (though in Perl 6 it's $0 and not $1) | ||
Quadrescence: ... now you have two problems! | |||
jnthn | Did you hear about the guy who dated a regex? | 12:53 | |
He met his Match! | |||
Quadrescence | ha ha ha ha | 12:54 | |
12:54
pythonian4000afk is now known as pythonian4000
|
|||
masak | jnthn: but only after a lot of backtracking. | 12:54 | |
moritz_ | but was it a LT Match? :-) | 12:55 | |
masak | token length is overrated :P | ||
12:56
plainhao joined
|
|||
masak | moritz_: I'm programming in Java for $WORK, and finding that I'm constantly avoiding the use of protected and package-protected... | 13:02 | |
moritz_ | masak: should I feel guilty? or confirmed? | 13:03 | |
masak | moritz_: I'll get back to you on that. :) | ||
moritz_: for what it's worth, I buy your argument. | |||
13:03
wamba joined
|
|||
masak | one might call my current Java OO design style "Perl 6 infected". | 13:04 | |
moritz_ | btw I there is one use case in java where it might be valid to use protected methods | ||
masak | oh? | ||
moritz_ | for methods which you have to derive in subclasses | ||
where you'd just pass in closure in Perl instead :-) | |||
(because last I looked, java didn't have any first class code objects) | 13:05 | ||
masak | not sure I follow. not sure I have that pattern in Java. | ||
no, it doesn't. | |||
moritz_ | I guess the usual java approach is to use an Interface instead | ||
masak | right. method in anon class deriving some interface. | ||
Huffman called, and he wants his excess keystrokes back. or something. | 13:06 | ||
moritz_ | Huffman called, and I want my excess keystrokes back :-) | 13:07 | |
masak | I guess both I and Huffman want them back. | 13:08 | |
13:10
mavrc left,
mavrc joined
13:20
Patterner left,
tadzik joined
|
|||
tadzik | o/ | 13:20 | |
moritz_ | \\o | 13:21 | |
masak | \\\\o | 13:22 | |
masak is programming in Java | |||
need to backwhack four times. :) | |||
wow, I think one could do a talk just on that. how some programming languages seem to actively disregard syntax. | 13:23 | ||
moritz_ imagines it's quite a backslashing hell if you write regexes in a language that doesn't have regex literals | |||
masak | just so. | ||
moritz_ | \\\\ for a single backslash, \\w for a simple char class... | ||
flussence | It's not so bad in PHP, the single-quoted strings are more or less the same semantics as P5's. | 13:25 | |
13:25
prettyrobots left
|
|||
moritz_ says preg_match_all | 13:25 | ||
flussence | OTOH they have a pre-defined constant just for directory slash/backslash called "directory_separator"... | 13:26 | |
masak | <linguification>"not so bad" and "PHP" in the same sentence? well I never!</linguification> | ||
moritz_ | which reminds me that I should give m:g/.../ another shot | ||
masak | ++moritz_ | ||
flussence | the "not so bad" parts of PHP are where they've copied from p5 :) | ||
masak | :) | 13:27 | |
moritz_ | it's something I'd neet to brainstorm with pmichaud | ||
13:28
icwiener joined
|
|||
moritz_ | last time I tried, I nearly got there, but since rakudo doesn't have slice context, the return values from 'abc' ~~ m:g/(.)/ and 'abc' ~~ m/(.)+/ were identical | 13:29 | |
which is a problem for split(), for example | |||
13:29
sftp joined
|
|||
moritz_ | so, I could have a 'has $.is-flat' attribute in Match for that | 13:29 | |
which is a cheat | |||
or somebody[tm] could implement slice context (which I don't see happen any time soon) | 13:30 | ||
13:30
Mowah joined
|
|||
moritz_ | or we could turn to m:g// relly returning a list of matches, not a single match | 13:31 | |
but what about $/ in that case? | |||
13:31
Psyche^ joined,
Psyche^ is now known as Patterner
13:32
Schwern left,
orafu joined
13:33
prettyrobots_ joined,
prettyrobots_ left
13:34
prettyrobots_ joined,
prettyrobots_ left
|
|||
masak | good question. | 13:36 | |
flussence | m:g returning a list does sound sensible to me, from a normal user viewpoint | ||
masak | moritz_: maybe create a Match that simply acts as an Array container for the list of matches? | ||
moritz_ | masak: then we end up with the problem I described above | 13:37 | |
masak | oh, sorry. I'm not paying full attention. :/ | ||
I'm busy not using protected :) | |||
so... tempted... | 13:38 | ||
moritz_ | currently m:attribs/foo/ compiles to $/ := $_.match(:attribs, rx/foo/) | ||
which has the disadvantage of always returning a scalar | |||
so I'd have to compile it to something like | 13:39 | ||
($/ := $_.match(...); $return_list ?? @($/) !! $/ ) | |||
which has the disadvantage of duplicating the decision of wheter to return a list or not (once in the compiler, once in .match) | 13:40 | ||
or maybe it's $/ ~~ List ?? $/.list !! $/ | 13:41 | ||
but that sets $/ to a non-sensical value | |||
hm, or maybe not... | |||
$0 would still mean $/[0] | |||
but $<foo> would give LTA errors | 13:42 | ||
and half an hour later, masak++ would submit annoying bug reports :-) | |||
masak | you bet. | ||
moritz_ was told not to gamble :-) | 13:43 | ||
masak | it's just an EXPR. | ||
tadzik | s/annoying/helpful/ # cough, cough | ||
moritz_ | tadzik: the two are not mutually exclusive | 13:44 | |
13:45
mblackmer left
|
|||
tadzik | sure | 13:45 | |
13:47
alester joined
|
|||
masak | "masak: annoyingly helpful" | 13:48 | |
13:54
rindolf joined
|
|||
rindolf | perl6: my %h = ('one' => "two"); say "%h" | 13:54 | |
p6eval | pugs, rakudo 79f754: OUTPUT«%h» | ||
masak | rakudo: my %h = 'one' => 'two'; say "%h{}" | 13:55 | |
p6eval | rakudo 79f754: OUTPUT«two» | ||
masak | rindolf: @ and % and & are only interpolated if their run ends with a () or [] or {} or <>, for safety (and other) reasons. | 13:56 | |
rindolf | masak: ah. | ||
masak | see S02 for the whole scoop. | ||
PerlJam | rindolf: or you can say "...{%h}..." | 13:57 | |
rindolf | PerlJam: OK. | ||
13:58
rgrau_ joined
|
|||
masak | someone asking about the state of Perl 6: community.livejournal.com/ru_perl/374751.html | 13:59 | |
PerlJam | masak: Texas! ;) | ||
masak | EWRONGTYPEOFSTATE :) | 14:00 | |
flussence | rakudo: say <solid liquid gas plasma>.pick(1) | 14:01 | |
p6eval | rakudo 79f754: OUTPUT«gas» | ||
masak | you're all being very helpful. | ||
flussence | I'd say it's more of a liquid at this point. | ||
masak | not according to most trolls out there... | 14:02 | |
14:03
prettyrobots joined
|
|||
flussence | maybe I should go write a "big" app in it just to prove them wrong :) | 14:03 | |
moritz_ | please do! | 14:04 | |
14:04
araujo joined,
kjeldahl left
|
|||
PerlJam | Perl 6 needs a "Lacuna Expanse" type thing to happen to it. Not necessarily a game or graphical, just something biggish and completely unexpected. | 14:05 | |
14:05
_kaare joined
14:06
pythonian4000 is now known as pythonian4000afk
|
|||
masak | PerlJam: agreed. a "killer app". | 14:07 | |
something for which the first impression is "wow, this rocks!" and the second is "by the way, this is all written in Perl 6". | |||
moritz_ wonders if he should write a "killer's app" for April 1st | 14:08 | ||
which help a killer to track his victims, payments etc. | |||
PerlJam | we've now gone down the dark side of pun | 14:09 | |
masak | Assassination Management Software. interesting. | 14:10 | |
PerlJam | It's got too much ass in it. | 14:11 | |
jnthn | If you remove the ass it sounds like an Apple product. | 14:15 | |
iNation | |||
14:17
MayDaniel joined
|
|||
masak | I'm sure we could make it tasteful enough for the Apple Store to approve it. | 14:18 | |
PerlJam | jnthn: iNation sounds like something that would be right up your alley | ||
jnthn | If I did it, it'd only support nations that start with an 'S' though. :-) | 14:23 | |
14:25
timbunce_ joined
14:27
Schwern joined,
timbunce left,
timbunce_ is now known as timbunce
14:35
tadzik left
14:37
cjk101012 left
14:51
tadzik joined
14:53
rindolf left
14:56
uniejo joined
15:11
uniejo left
|
|||
masak | rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; $c.b.?a = A.new | 15:15 | |
p6eval | rakudo 79f754: OUTPUT«Cannot modify readonly value in '&infix:<=>' at line 1 in main program body at line 22:/tmp/83kx8LOfBt» | ||
masak | I'm not 100% sure what I'm trying to do... | 15:16 | |
but I also don't see what's readonly here, and why. | |||
flussence | C.b ? | ||
masak | right. $c.b is readonly. does that matter? | 15:17 | |
jnthn | masak: I think it's right. (more) | ||
flussence | that's the only thing I can see in there that might be responsible... | ||
rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b is rw }; my $c = C.new; $c.b.?a = A.new | |||
p6eval | rakudo 79f754: OUTPUT«Cannot modify readonly value in '&infix:<=>' at line 1 in main program body at line 22:/tmp/NU_Jz6UX7D» | ||
jnthn | masak: $c.b gives back something that has no .a method | ||
masak: So .? hands back Nil | 15:18 | ||
flussence | well scratch that... | ||
masak | jnthn: oh, ok. | ||
jnthn | Or maybe a Failure | ||
masak | yes, makes sense. | ||
jnthn | Anyway, something you cannot assign to. | ||
if you want try | |||
masak | probably Nil, to be consistent with .* | ||
jnthn | ($c.b.?a // *) = A.new | ||
masak | rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; ($c.b.?a // *) = A.new | 15:19 | |
jnthn | Since assigning to * throws away the value silently. | ||
p6eval | rakudo 79f754: OUTPUT«Cannot modify readonly value in '&infix:<=>' at line 1 in main program body at line 22:/tmp/Sm9PnTw3yz» | ||
masak | hm. | ||
jnthn | rakudo: * = 42; | ||
p6eval | rakudo 79f754: ( no output ) | ||
jnthn | oh | ||
rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; say ($c.b).WHAT | |||
p6eval | rakudo 79f754: OUTPUT«Any()» | ||
jnthn | rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; say ($c.b.?a).WHAT | 15:20 | |
p6eval | rakudo 79f754: OUTPUT«» | ||
jnthn | rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; say ($c.b.?a).defined | ||
p6eval | rakudo 79f754: OUTPUT«Bool::False» | ||
masak | rakudo: say Nil.WHAT | ||
p6eval | rakudo 79f754: OUTPUT«» | ||
jnthn | rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; say pir::defined($c.b.?a) | ||
p6eval | rakudo 79f754: OUTPUT«0» | ||
masak | it's a Nil. | ||
jnthn | Aye | ||
I think that's current spec. | |||
masak | aye. | ||
jnthn | I'm a tad curious why the // doesn't work here. | ||
rakudo: class A {}; class B { has A $.a is rw }; class C { has B $.b }; my $c = C.new; say ($c.b.?a // *).WHAT | 15:21 | ||
p6eval | rakudo 79f754: OUTPUT«WhateverCode()» | ||
jnthn | Oh!! | ||
It auto-curries. | |||
:-) | |||
So then you end up trying to assign to a closure. | |||
15:21
tadzik left
|
|||
jnthn | Rakudo. It's smarter than me. | 15:22 | |
15:24
icwiener left,
icwiener joined
|
|||
jnthn | masak: $c.b //= A.new; # wait, isn't this what you really want? | 15:25 | |
masak | no... | ||
that would try to assign an A object to an attr typed with B. | 15:26 | ||
what I was fishing for was some kind of "conditional assignment", that only assigned if the whole method call chain made it to the end. | |||
//= doesn't do that. in some ways, it does the opposite; assigns only if something didn't make it. | 15:27 | ||
jnthn | ah, ok | 15:28 | |
15:30
rhr left
15:31
s1n left
|
|||
jnthn | Feels like your'e trying to do introspection without introspecting :P | 15:31 | |
masak | that wasn't my intent :) | 15:32 | |
flussence | .oO( "transactional assignment"? ) |
15:33 | |
moritz_ | "made it to the end" triggers my "use exceptions" brain cell | ||
15:33
mdxi left
|
|||
masak | it's just that I kept writing Java code like 'if (a.b != null) { a.b.c = d }' and wondering if there was some shorter way in Perl 6. | 15:34 | |
15:34
jferrero joined
15:35
Schwern left
15:36
s1n joined
|
|||
jnthn | if $a.b -> { .c = d } # maybe? | 15:36 | |
moritz_ | given a.b { $_ && .c = d } | ||
rakudo: if 1 -> { say "alive" } | 15:37 | ||
p6eval | rakudo 79f754: OUTPUT«alive» | ||
masak | -> {} means "don't bind value to anything" | 15:38 | |
jnthn: you probably meant -> $_ {} | |||
or we could create a given/if hybrid, "giffen" :P | 15:39 | ||
jnthn | oh, yes | 15:41 | |
That's what I get for writing Perl 6 while translating Java into C#... | |||
masak | :) | 15:42 | |
15:42
tadzik joined
|
|||
masak | today I've written two methods that sit in different classes but produce the same result, all the while maintaining the same inter-class invariant. | 15:42 | |
moritz_ | sounds curious | 15:43 | |
masak | things always get so tricky once references are bidirectional. | ||
I like models like Git's where all references are one way only. | 15:44 | ||
15:45
Schwern joined
15:46
mdxi joined
15:55
silug left
16:00
rhebus joined
16:02
justatheory joined
16:11
atomicstack left
16:12
atomicstack joined
16:15
whiteknight joined
16:20
atomicstack left
16:23
whiteknight left
16:29
baux left
|
|||
masak | lol, I blogged! strangelyconsistent.org/blog/a-sudden-insight | 16:31 | |
16:32
dual joined
|
|||
jnthn | Yes, calling and returning are a bit more symmetric in Perl 6 than in other langauges. | 16:36 | |
Well, s/ 6// I guess :-) | |||
16:39
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
masak | nom & | 16:42 | |
16:42
masak left,
rhr joined
|
|||
takadonet | trying to figure out what title for a reddit post would be for strangelyconsistent.org/blog/a-sudden-insight . Any suggestions? | 16:51 | |
16:55
prettyrobots left
|
|||
flussence | ouch, I went to that wikipedia link... they have some really bad code highlighting colours. | 16:58 | |
17:01
wamba left
17:03
justatheory left,
prettyrobots joined
17:07
dakkar left
17:23
kjeldahl joined
17:36
prettyrobots left
17:42
jferrero left,
justatheory joined
17:47
justatheory left
17:51
timbunce left
17:53
prettyrobots joined,
rhebus left
17:54
orafu left,
prettyrobots left,
prettyrobots joined
17:55
prettyrobots left,
justatheory joined,
prettyrobots joined
17:56
prettyrobots left
17:57
timbunce joined
|
|||
sorear | good * #perl6 | 18:01 | |
tadzik | hello | ||
18:02
silug joined
|
|||
sorear | moritz_: it's not perl 5 think - you can't even put statements in a () list in Perl 5 | 18:03 | |
moritz_ | sorear: scalar (2, 3, 4) treats (2, 3, 4) as a statement list | ||
18:04
justatheory left,
justatheory joined
18:06
_twitch left
|
|||
sorear | buubot: scalar (2, if (1) { print "x" }) # no, expression list | 18:07 | |
buubot | sorear: Couldn't match input. | ||
sorear | buubot: eval scalar (2, if (1) { print "x" }) # no, expression list | ||
buubot | sorear: ERROR: syntax error at (eval 34) line 1, near ", if" | ||
18:22
Italian_Plumber left,
colomon left
18:27
colomon joined
18:29
colomon left
|
|||
s1n | i keep reading the threads thread (pun intended) on the ML and i wanted to throw out my 2cents | 18:29 | |
fibers, continuations, and green threads are great, but i think they miss the whole point (unless i miss understand how they work): the kernel isn't aware and thus you can't take advantage of hardware | 18:30 | ||
event schedulers are nice, but i think true hardware threads are desirable | 18:31 | ||
18:32
Schwern left
|
|||
sorear | s1n: don't listen to p6l, nobody else does | 18:32 | |
or at least, don't be concerned about it | 18:33 | ||
PerlJam | s1n: Perl is still slowing warming up to "threads". | ||
sorear | if someone there comes up with a genuinely good idea, by all means take it | ||
s1n | avoiding real threads would be an epic fail | ||
PerlJam | "real threads"? | 18:34 | |
sorear | p6l is where we quarantine the dangerously disconnected from reality | ||
s1n | hardware threads | ||
18:34
silug left
|
|||
s1n | 1:1 | 18:34 | |
sorear: hope so, but _noone_ is expressing a voice of reason there | |||
sorear | nobody ever does | ||
PerlJam | s1n: you could be the first! | ||
s1n | PerlJam: guess i'll have to be | 18:35 | |
seems like a waste of time to provide something like continuations if it's still an N:1 model | |||
PerlJam | s1n: from a language perspective Perl 6 should paint itself into a corner that precludes hardware (or any other style) threads. that's about it. | 18:36 | |
s/should/shouldn't/ oops! | |||
sorear | incidentally, niecza has 1:1 threads | ||
s1n | when i write threads, i want my kernel to schedule it to take advantage of modern hardware | 18:37 | |
so if i write perl6 threaded code, if it doesn't, then i wrote write threaded code in perl6 | |||
18:38
timbunce left
18:39
Schwern joined
|
|||
skids | s1n: True hardware threads are absolutely needed for interfacing with blocking APIs. You could argue that could be done by the implementation for each use case, but not providing visibility into how things are coprocessed (and tuning) would kinda run in the face of Perl6's dedication to introspection/etc. | 18:42 | |
But we'll be in green-thread-ville for a while because parrot is stilljust green-threads and they need to overhaul a bit to start using green+hw threads. | 18:43 | ||
s1n | parrot is free to make all the mistakes they want | ||
18:43
pjcj_ left
|
|||
PerlJam | parrot has threads? | 18:44 | |
s1n | PerlJam: not really, they had a SoC to implement green threads | ||
sorear | s1n: please don't think Perl6 == Parrot | ||
skids | I don't see anyone over in parrotville questioning whether they need hw threading, just lamenting the chore. | ||
s1n | sorear: i know better | ||
18:44
timbunce joined
|
|||
skids | sorear: no offence intended :-) | 18:44 | |
s1n | i don't understand why people hate threading, if you think of it from the get-go, they're easy | ||
if you try to graft on afterwards, it's usually a disaster | 18:45 | ||
sorear | niecza: use Threads; Thread.new({ say "Hello" }).join | ||
p6eval | niecza 6d9e43e: OUTPUT«Hello» | 18:46 | |
skids | There's two types of coders. Those that love threads, because they actually have had to do something with time/latency sensitive interaction, and those who have never had to do that and so do not have an inkling just how essential they are to any complete language. | ||
PerlJam | skids: false. | ||
sorear | I'm in a "can't stand 'em, can't live without 'em" relationship with threads | ||
PerlJam | skids: I've had to do time sensitive interaction and I do not love threads. | 18:47 | |
skids | OK, well, "love" may have been the wrong word. | ||
18:47
[particle] left
|
|||
s1n | it's kinda hard to avoid threads nowadays | 18:47 | |
PerlJam | I'm wary of threads. | ||
ironcamel | how do i write tests in perl6? | ||
skids | Threads can certainly be badly abused. | ||
shortcircuit | skids: Day job for me is time-sensitive interaction, and I'd much rather have a task dispatch model available. | ||
ironcamel | is there Test::More ? | ||
PerlJam | s1n: no it's not! We keep inventing new ways of avoiding them all the time! | ||
sorear | it's called Test now | 18:48 | |
ironcamel | thanks sorear | ||
s1n | PerlJam: and all those ways suck | ||
because my hardware has threads | |||
and my kernel can schedule them well | |||
anything else, is just slow and pointless | |||
dalek | ecza/master: 9615df7 | sorear++ | / (2 files): Add a 'regex global state' object |
||
ecza/master: 1e0987f | sorear++ | / (2 files): Allow $*FOO as parameters |
|||
ecza/master: 22a529d | sorear++ | / (2 files): Implement [ 1, 2, 3 ] syntax |
|||
skids | shortcircuit: reread the above with a broader definition of "threads" :-) | ||
shortcircuit | skids: So, 'concurrency'? :) | ||
tadzik | s1n: so what is your point again? | 18:49 | |
PerlJam | It's partly because fork() isn't as onerous as it used to be that threads haven't made it mainstream IMHO | ||
sorear | s1n: [1, 2, 3] »+« [10, 20, 30] # this is a way of avoiding Perl threads, but it can still map to OS threads | ||
skids | shortcircuit: concurrency that uses hardware threads, to be specific, regardless of whether the api looks like a threading api. | ||
sorear | Programmers should not use threads unless they absolutely have to | ||
s1n | no, threads aren't mainstream because people have a hardtime contemplating thinking of multiple threads executing the same line of code at the same time | ||
sorear | The *runtime* should use threads whenever possible | 18:50 | |
PerlJam | sorear++ | ||
s1n | they're also difficult to debug | ||
too many developers rely on print statements | 18:51 | ||
sorear | The reason I don't like to write threads is the same reason I don't like to work with /dev/hda | ||
they're just too low level | |||
18:51
zostay left
|
|||
s1n | aww | 18:51 | |
i love the low level | |||
sorear | I build abstractions on top of both - data parallelism, file systems | ||
moritz_ | sorear: if you don't like low level, you shouldn't be writing a compiler *SCNR* :-) | ||
s1n | moritz_++ | ||
tadzik | (that was a joke, wasn't it?) | 18:52 | |
moritz_ | it was | ||
18:52
zostay joined
|
|||
sorear | au contraire. If I *actually* liked low level, why would I be writing code to hide it? | 18:53 | |
:-) | |||
skids | High level abstractions above threads are great, and the less guts Perl6 users have to see to get needed concurrency the better, but no matter what high level API you put on top of it, there's still the shared data access problem. Unless all your threads never need to do more than pass messages, and once you get into messages, you lose all the benefits of perl6's kickass OO because you have to constantly pack/unpack stuff. | ||
shortcircuit | skids: Well, yes, software should take advantage of the underlying platform's scaling capabilities. | 18:54 | |
s1n | i think a good perl6 interface over pthreads is possible | ||
18:55
[particle] joined
|
|||
s1n | (not perl6/pthreads, but Perl6 threads that are analogous to pthreads) | 18:55 | |
shortcircuit | s1n: I'm inclined to agree; in an N:1 or N:M model, punching the kernel scheduler wtr the kernels' idea of threads is likely to have nasty consequences. | 18:56 | |
*wrt | |||
s1n | i just want to write perl6 code that can be threaded to each code and hardware thread automatically with a nice perl6 interface. green threads won't get me there | 18:57 | |
shortcircuit | (In other words, don't call out to a C API pthreads library. Don't call out to Win32's WaitForSingleObject, etc.) | ||
skids | I think there's a very interesting thing in Perl6's hyperops which is a mostly new issue -- not all hyperops are going to need an interpreter, some will be simple math, and folks will want OpenMP and cloud stuff to tie in seamlessly (maybe even oportunistically in some cases) | 18:58 | |
So is that a "thread" if it's not perl6 in the "thread"? | |||
PerlJam | skids: have you used PDL? | 18:59 | |
s1n | i'm not sure what you're asking, but openmp typically abstracts the pthreads call with a nice #praga | ||
shortcircuit | s1n: I'm not sure what you're saying. I think you're saying either you want to know that you have an execution sequence in Perl6 to map 1:1 to a hardware thread, or you're saying want your code to transparently scale across available hardware processing units. | ||
Ah. Transparent scaling. | |||
skids | I guess not, since I'm unsure what the acronym is, unless it's "parrot (something) language" in which case, maybe, in a fit of hacking, a bot. | 19:00 | |
s/bot/bit/ | |||
PerlJam | skids: Perl Data Language. | ||
skids | No, I'll take a gander sometime. | ||
19:00
timbunce_ joined
|
|||
PerlJam | skids: They talk about threading over matrices and such. That's the non-perl6 thread you just described. | 19:00 | |
s1n | shortcircuit: well, yes, 1:1 mapping from a perl6 interface would seem to give me transparent scaling by both the perl6 interpreter and my kernel | ||
19:01
timbunce left,
timbunce_ is now known as timbunce
|
|||
shortcircuit is totally confused. Back to focusing on work. | 19:01 | ||
skids | PerlJam: thanks, I've been lacking a good word for that. | ||
ironcamel | hi guys, so i'm doing a timed coding exercise at work ... and my and partner chose to do it in perl 6 ... so i'm going to be asking a lot of noob questions ... and i'm very rushed so will probably spell things wrong | ||
PerlJam | skids: pdl.perl.org :) | ||
Tene | ironcamel: Sounds fun! :) | 19:02 | |
ironcamel | just want to import a module | ||
jnthn | use ModuleName; | ||
ironcamel | and i'm doing it perl5 way and it's not working | ||
jnthn: ok, what is the first line of ModuleName.pm ? | |||
PerlJam | ironcamel: you're doing a perl5 thing in perl6? | ||
jnthn | Depends what's in it. | ||
module ModuleName; # if it's a bunch of subs | |||
use class if you're putting a class in there. | |||
ironcamel | PerlJam: no ... i only know perl 5 ... so i'm making noob mistakes | ||
PerlJam | okay | 19:03 | |
ironcamel | jnthn: it's going to be a bunch of classes | ||
tadzik | jnthn: s/use // | ||
? | |||
moritz_ | then class ModuleName { ... } | ||
tadzik | ah, no, nvm | ||
PerlJam | tadzik: the "use" there wasn't syntactic :) | ||
tadzik | PerlJam: yeah, noticed :) | ||
ironcamel | moritz_: there will be multiple classes in there | ||
moritz_ | ironcamel: that's OK | 19:04 | |
ironcamel | i want to use Foo in my test file. i want module Foo to have classes Bar and Poo | ||
and class Foo too maybe | |||
so i make a Foo.pm file right? | |||
PerlJam | classes and modules occupy the same symbol-space IIRC | ||
moritz_ | ironcamel: right | ||
ironcamel: and you add class Foo { ... }; class Foo::Bar { ... }; class Foo::Poo { ... } | 19:05 | ||
ironcamel | got it, it's working :) | ||
any good quick tutorials on OOP for p6? | 19:06 | ||
perlgeek.de/en/article/5-to-6 | |||
PerlJam | ironcamel: perldoc Moose # ;-) | ||
ironcamel | is what i'm looking at | ||
ok, i'm good with moose, so it shouldn't be too bad | |||
PerlJam | ironcamel: There's also some info in the perl 6 advent calendar | ||
moritz_ | ironcamel: github.com/downloads/perl6/book/201...df/qr_code | 19:07 | |
PerlJam | ironcamel: perl6advent.wordpress.com/2009/12/0...-calendar/ | ||
ironcamel: perl6.org has all the links you'll ever need :) | 19:08 | ||
skids | s1n: just for fun you might want to read this very early whack at Perl6 thread-like concurrency constructs that Austin made way back when and everyone dutifullywww.nntp.perl.org/group/perl.perl6....14788.html ignored: | 19:15 | |
skids hates mouse-cursor-based pastes in terminal-like applications. | 19:16 | ||
ironcamel | how do i declare an attribute is an array/arrayref? | ||
PerlJam | has @array; | ||
ironcamel | i'm making a monopoly game object. it has players | ||
moritz_ | has @!thing; | ||
PerlJam | er, what moritz_ said | ||
ironcamel | ok cool | ||
PerlJam | my sigil got lost somewhere | 19:17 | |
er, twigil | |||
ironcamel | twigil is required right? | ||
tadzik | will Perl 7 have thrigils? :) | ||
moritz_ | actually I think you can omit it | ||
ironcamel | and how come say "hi @foo" doesn't work anymore | ||
tadzik | you mean @foo[] | ||
PerlJam | ironcamel: say "hi @foo[]" | ||
ironcamel | moritz_: it will default to public or private? | ||
s1n | tadzik: you will have to build them with sticks and stones though | ||
moritz_ | rakudo: class A { has @x = 1, 2; method foo { say @x } }; A.new.foo | ||
flussence | or "hi {@foo}" | ||
moritz_ | ironcamel: private | ||
p6eval | rakudo 79f754: OUTPUT«12» | ||
tadzik | s1n: what do you mean? | 19:18 | |
s1n | tadzik: heard the expression "perl 7 will be fought with sticks and stones" | ||
tadzik | heh | 19:19 | |
ironcamel | oh neat, so Foo.new( players => @players ) works ... so i don't have to do \@players any longer? | 19:20 | |
moritz_ | right | ||
you can even write Foo.new(:@players) | |||
skids | By perl7, OO objects very well may be tangible enough to poke someone's eye out. | ||
19:20
zby_home__ joined
19:21
zby_home_ left
|
|||
ironcamel | does @players.shuffle() should work? | 19:21 | |
moritz_ | @players.pick(*) | ||
tadzik | .=? | ||
moritz_ | (that returns the shuffled array, not inplace) | ||
tadzik | ah, nvm me | ||
ironcamel | moritz_: where can i find documentation for pick() | ||
moritz_ | ironcamel: S32/Containers | 19:22 | |
jnthn | Slides from my OSDC.fr talks now up at www.jnthn.net/articles.shtml | ||
ironcamel | moritz_: where is that? | 19:23 | |
jnthn | Sorry it took a whole week. exhaustion-- | ||
moritz_ | ironcamel: linked from perlcabal.org/syn/ | ||
19:24
[particle] left
|
|||
ironcamel | is there a Test::Exception equivalent? | 19:25 | |
moritz_ | ironcamel: Test.pm come with lives_ok and dies_ok | ||
ironcamel | cool | ||
moritz_ | and eval_{lives,dies}_ok | ||
ironcamel | is there a way to match on the exception? | ||
moritz_ | not yet | ||
19:26
synth left
19:29
nymacro left
|
|||
ironcamel | something wrong with this? is $g.players => <horse car>, 'have 2 players'; | 19:30 | |
Tene | ironcamel: did you declare the attribute as rw? | ||
has $.players is rw; | 19:31 | ||
or whatever | |||
ironcamel | @.players is rw | ||
moritz_ | ironcamel: => constructs a Pair | ||
ironcamel: it's not just a comma anymore | |||
Tene | Ah, yes, I misread that as just '='. | 19:32 | |
ironcamel | ah | ||
Tene | Yes, moritz is right, s/ =>/,/ | ||
ironcamel | but => was so nice to associate pairs of things :) | ||
tadzik | it now assosiates a Pair of things :) | ||
Pair.new, to be more specific :) | 19:33 | ||
ironcamel | so length of list/array how does that work now | ||
scalar context is not working | |||
sorear | .elems | ||
or numeric context | |||
moritz_ | ironcamel: => is also used for named arguments | ||
Tene | @foo.elems | ||
or +@foo | |||
sorear | timtoady still hasn't pinged in :( | ||
ironcamel | .elems returns a count? | 19:34 | |
Tene | yes | ||
ironcamel | what does +@foo mean? | ||
moritz_ | @foo in numeric context | ||
returns the same as @foo.elems | |||
tadzik | like @foo.Num? | ||
sorear | like @foo.Numeric | ||
moritz_ | tadzik: .Numeric | ||
tadzik | ok | ||
sorear | .Num generally means 64-bit float... Numeric is a lot more general | 19:35 | |
19:38
plainhao left
|
|||
ironcamel | what is corresponding BUILD in p6? | 19:40 | |
moritz_ | BUILD | ||
tadzik | submethod BUILD | ||
moritz_ | (roughly) | 19:41 | |
tadzik | but now, you have to assign the parameters on your own, iirc | ||
ironcamel | or even better, i want to assert there are between 2 to 6 players when object is constructed | ||
19:41
xivix joined
|
|||
ironcamel | has @.players is rw; | 19:41 | |
i want to die if it is not | |||
is BUILD right place to do that? | |||
tadzik | I think so | ||
xivix | How's the next version coming? | ||
ironcamel | no easy way to add validation to the attribute? | 19:42 | |
moritz_ | submethod BUILD(:@players) { die unless 2 <= @players <= 6 } | ||
ironcamel | submethod? why not method? | ||
moritz_ | ironcamel: there is, but it doesn't work well yet | ||
tadzik | xivix: great as always :) Are you asking about something specific? | ||
moritz_ | subset Players of Array where { 2 <= .elems <= 6 } | ||
xivix | Not really. Is the project aimed as a successor to Perl 5? | 19:43 | |
tadzik | I think so | ||
moritz_ | or not, depending on whom you ask :-) | ||
xivix | I had thought so, but then I visited the website today, and it said something like, "sister language." | ||
moritz_ | xivix: in some sense it's a successor, but that doesn't mean it will obsolete Perl 5 | 19:44 | |
tadzik | It's not a drop-in replacement, as it's not backwards-compatibile, so it's not just another version of Perl | ||
Tene | xivix: Perl 5 is not going away, and people will still be using it for quite a long time. | ||
moritz_ | xivix: which is what many people falsly assume | ||
xivix | Is it going to have backwards-compatibility modules? | ||
use legacy; | |||
or someghing? | |||
tadzik | use v5 | ||
it's speced | |||
ironcamel | what does submethod mean? | 19:45 | |
xivix | But that's as far as backwards-compatibility will go? | ||
tadzik | it doesn't get inherited | ||
moritz_ | ironcamel: it's a method that's not inherited | ||
Tene | xivix: It's specced, but not yet implemented, and Perl 5 is going to continue development. | ||
sorear | Perl 6 is being designed as a successor to Perl 5, in the sense that C++ is a successor to C | ||
moritz_ | xivix: you can also use perl 5 modules from Perl 6 (within certain limits) | ||
xivix | Why not Perl++? | ||
tadzik | we alredy evaluated that | ||
sorear | the relationship between the two languages will probably be similar to that | ||
moritz_ | xivix: because it's not an increment :-) | 19:46 | |
sorear | although, the complexity differential is a lot smaller | ||
moritz_ | it's a huge step | ||
xivix | I was trying to come up with something more perl-y. | ||
tadzik | I think there are more important things than the numeration | ||
sorear | Perl 6 makes some things more complicated, but it also simplifies a great deal | ||
xivix | How can it be more complicated than anything in Perl already? | 19:47 | |
moritz_ | ironcamel: perlgeek.de/blog-en/perl-6/object-c...ation.html might interest you | ||
ironcamel | thanks moritz_ ! | 19:48 | |
moritz_ | xivix: a programming language can't make everything simple | ||
xivix | I kid. The language was much in need of a facelift, though. | ||
ironcamel | submethod BUILD { die unless 2 <= @.players.elems <= 6 } | ||
something wrong with that? | |||
moritz_ | xivix: it's like a waterbed - if you press down in some places, others will start to rise | ||
xivix | It was beginning to reach its limits. | ||
sorear | the only reason Perl 5 was ever worth using was CPAN | ||
we're trying to fix that with 6 | |||
xivix | CPAN and the best regex support ever. | 19:49 | |
moritz_ | ironcamel: you probably need submethod BUILD(:@!player) { ... } (for some strange reason I don't quite understand) | ||
xivix: well, perl 6 regexes are even more powerful :-) | |||
ironcamel | has @.players is rw; | ||
is my attribute | |||
moritz_ | ironcamel: I know, I know | ||
xivix | How? | ||
moritz_ | s/player/players/ in my example | ||
tadzik | xivix: as they're not regular, more like context-free | ||
iirc | |||
moritz_ | xivix: you can name regexes, and call them by name | 19:50 | |
sorear | Perl 5 regexes are wayyyy beyond regular too | ||
xivix | How is s/player/players/ special? | ||
tadzik | and iiuc | ||
moritz_ | xivix: and organize them in grammars, and inherit from them | ||
tadzik | xivix: that was for ironcamel | ||
xivix | Oh, okay. | ||
I was all, "how...is...that...different...?" | |||
tadzik | take a look at the Regexes chapter in moritz_'s Perl 5 to 6 | 19:51 | |
xivix | So simple regex stuff will be pretty much the same, but now you can have regex inheritence and write whole parsers and stuff? | ||
tadzik | right | 19:52 | |
moritz_ | right | ||
tadzik | yet regexes themselves are also a bit different | ||
xivix | Right on. | ||
Implementation-wise? | |||
sorear | Perl 6 itself is expressed as a regex grammar | ||
xivix | Or in their use? | ||
moritz_ | both | ||
tadzik | not really. They have a different syntax, speced | ||
moritz_ | ironcamel: it's a limitation in Rakudo atm, as far as I understand | 19:53 | |
xivix | Huh. So, it will be superpowerful in Perl 6 because it's pretty much the bedrock of the language? | ||
moritz_ | ironcamel: BUILD doesn't have access to attributes, unless you declare them as named arguments | ||
xivix | Or something like that. | ||
tadzik | xivix: the thing is, you can actually modify/extend the standard grammar, in your code | 19:54 | |
19:54
[particle] joined
|
|||
moritz_ | xivix: there's the old saying that you can't parse XML in with regexes -- that's not true anymore in Perl 6 | 19:54 | |
xivix | Oh, no way. | ||
tadzik | still, can you parse HTML? | 19:55 | |
xivix | Yeah, I figured it might be practical with the inheritance thing. | ||
HTML is almost regular sometimes. | |||
moritz_ | perlgeek.de/en/article/5-to-6#post_20 | ||
tadzik | I mean, to a data structure? How would it treat things like <b><i>bla</b></i> | ||
moritz_ | tadzik: badly :-) | ||
tadzik | I thought so :) So tokenizing is the only way, like HTML::Parser does this? | ||
xivix | So you could have some module ``perl-to-java'', and then write Java code after that? | ||
tadzik | That sounds possible. That also sounds wrong :) | 19:56 | |
xivix | That would be dumb. But would it be possible? | ||
moritz_ | tadzik: stringly speaking, <b><i>bla</b></i> is not HTML :-) | ||
tadzik | moritz_: isn't it? It's not XHTML, but isn't stuff like this HTML-ok? | ||
xivix | Yeah, but the fact that such a thing could be internal is mind-blowing. | ||
moritz_ | xivix: if somebody implement it... | ||
xivix | Right. Who would? Probably nobody. | 19:57 | |
tadzik | there's a Java to Perl6 translator | ||
xivix | Nah, somebody will do something like that. | ||
moritz_ | tadzik: SGML has its quirks, but wrongly nested tags aren't allowed in SGML and HTML either | ||
tadzik | I see | ||
xivix | "Hey look, guys! I made Perl into Scheme!" | ||
moritz_ | well, mberends is working on a Java backend for Perl 6 | ||
for Rakudo, to be precise | 19:58 | ||
tadzik | Java, or JVM? | ||
moritz_ | Java atm | ||
xivix | So why was Parrot chosen? | ||
dukeleto mumbles about wheels within wheels | |||
xivix | And not LLVM or another VM? | 19:59 | |
moritz_ | xivix: it provides lots of stuff that Perl 6 needs - like a framework for multi dispatch | ||
tadzik | Parrot is more dynamic than most of the VMs around, I think | ||
moritz_ | and it's desgined for dynamic languages | ||
dukeleto | xivix: llvm is "low-level" hence the name. Parrot will begin to use LLVM in the near future. | ||
moritz_ | whereas JVM is for statically typed languages | ||
xivix | Oh, so Pure should be using Partot. | ||
Huh. | 20:00 | ||
tadzik | Pure? | ||
xivix | Very much so, actually. | ||
Pure is a newish functional language, written by a German music teacher. | |||
It's based on term rewriting and has haskell-like syntax to a degree. | |||
But the fact that is' based on term rewriting, though POWERFUL, is HELLA SLOW. | |||
moritz_ | how statically typed is it | 20:01 | |
? | |||
20:01
zostay left
|
|||
xivix | The interpreter is written for LLVM, but it would make sense for it to be Parrot, if it's higher level. | 20:01 | |
It's one of LLVM's demo projects, actually. | |||
tadzik | if it's for LLVM, it's not an interpreter I think :) | 20:02 | |
20:02
zostay joined
|
|||
xivix | It's a compiler but it has a command line as well. | 20:02 | |
tadzik | so does Rakudo | 20:03 | |
xivix | Okay, so it JIT compiles the code when there's an input file. | ||
When there's not an input file. | |||
Whatever. It's slow on LLVM. | 20:04 | ||
moritz_ | that doesn't mean LLVM is to blame | ||
rakudo is also slow on parrot | |||
xivix | I didn't say LLVM was to blame. | 20:05 | |
I was calling into question the choice of VM. | |||
Tene | xivix: Quite possibly. Parrot is quite a nice platform for some languages. | ||
It's still in heavy development, and has some notable drawbacks and not-yet-implemented parts. | 20:06 | ||
xivix | Yeah, whereas LLVM is fairly mature. | 20:07 | |
tadzik | it has less to do :) | ||
sorear | Parrot is the laughing stock of the VM community, sadly | ||
muixirt | Tene: could you please define "some languages" | ||
xivix | Like, Apple's linking cc to llvm-gcc in Xcode 4. | ||
sorear | ten years of political infighting in the steering committee have left it not significantly better off than it was in 2001 | ||
xivix | So if it's good enough for Apple, it's... | ||
jnthn | Turns out Perl 6 is actually gradually typed. If I target Parrot, I gotta build the static bits I want. If I target the JVM, I gotta build the dynamic bits I want. | ||
ironcamel | say 10.rand.int ... what is the rigth way to do that | 20:08 | |
sorear | there are signs that this might be improving soon, but I for one am not that patient | ||
say 10.rand | |||
.Int | |||
Tene | muixirt: Parrot seems to be pretty nice for some types of language research. I'm quite pleased with their compiler tools, for example. | ||
xivix | So I looked up Parrot on Wikipedia just now. | 20:09 | |
Turns out Parrot and LLVM both just reached 2.8. | |||
Coincedince? | |||
sorear | Parrot does monthly releases | 20:10 | |
xivix | CONSPIRACY! | ||
sorear | You can't assume 2.8 is better than 2.7, because that's not the release condition | ||
xivix | Nope. Usually, "stable again as far as we know." | ||
sorear | Parrot stable releases are 0 mod 3 | 20:11 | |
not 2 | |||
2.9 will be the next stable release | |||
xivix | That's somewhat unusual. | ||
So what are the current projects involving Perl 6? | 20:13 | ||
Rakudo, ... | 20:14 | ||
sorear | Niecza ;) | 20:16 | |
there are a couple people using perl 6 for apps | |||
xivix | Niecza? | ||
Oh, that's your compiler. | 20:17 | ||
For Mono? | |||
sorear | yes | 20:18 | |
xivix | Perl and Windows seems to be a contradiction. | ||
sorear | well the binaries will work fine on MS .NET | ||
jnthn | xivix: Er | ||
sorear | there is also a LLVM port in the works | ||
20:18
Mowah left
|
|||
xivix | jnthn: ? | 20:18 | |
jnthn | xivix: I'm one of the core Rakudo devs and I do pretty much all my development work on Windows. :-) | ||
I assure you there's no contradiction. :-) | |||
xivix | There needs to be someone to make sure it works on the lesser platforms. :P | 20:19 | |
jnthn | It works just fine there. | ||
sorear | People always look at me funny when I say I target the CLR. | ||
jnthn | Not lesser by install base. ;-) | ||
xivix | Average IQ of install base? | ||
sorear | There's so much hate against everything even tangentially associated with Microsoft. It's ridiculous. | ||
jnthn | sorear: Agree. | 20:20 | |
xivix | I'm just kidding around. | ||
I play my video games from time to time. | |||
jnthn | :P | ||
sorear | the CLR was not designed at Microsoft, was not initially implemented at Microsoft, was not created to run on Windows, and the implementation I use is completely independant | 20:21 | |
Tene | I personally just don't know much about MS software. I assume by default that they must be doing *something* pretty well, as their software seems useful to quite a few people. | ||
sorear | the only thing associated with Microsoft about the CLR is the fact that Microsoft bought the company that made it | ||
Tene | I just haven't had any need or use for it. I don't seem to be their target market, or something. | ||
xivix | They were the first to be cross-platform and dirt-cheap. | ||
sorear | and somehow this taints Mono? WTF? | ||
xivix | I didn't say anything bad about your project! | 20:22 | |
sorear | 15:17 < xivix> For Mono? | ||
15:18 < sorear> yes | |||
15:18 < xivix> Perl and Windows seems to be a contradiction. | |||
This is a non sequiter | |||
xivix | I was joking! | ||
Sheesh. | |||
Don't be so defensive. | |||
Tene | xivix: We get a nontrivial number of trolls here, so some people are touchy about possible trolling from new nicks. | 20:23 | |
xivix | Sorry, I didn't mean it, honest. | 20:24 | |
ironcamel | has Int $.position is rw default 0; | ||
Tene | Joking and sarcasm often come across wrong on IRC, unfortunately. :( | ||
ironcamel | how do i do defaults? | ||
xivix | It's evident, though, that it's finally clicked for some of the folks at Microsoft that reinventing the wheel isn't the holy grail of design. | ||
sorear | ironcamel: = 0; | ||
Tene | ironcamel: = 0; | ||
xivix | With IE9, finally implementing standards, for example. | 20:25 | |
ironcamel | thanks :) | ||
xivix | It's actually a REALLY NICE browser. | ||
No foolin'. | |||
ironcamel | is there an easy way to mock methods? | ||
moritz_ | define "mock" | 20:26 | |
ironcamel | $foo.bar() = { say 'hi' } | ||
xivix | Yeah, "Ha ha, you suck, print()!" | ||
ironcamel | just want to replace a method with my own | ||
moritz_ | $foo but role { method bar { say 'hi' } } | ||
ironcamel | that's awesome | 20:27 | |
jnthn | I think you want does there | ||
If you want to twiddle the object in place. | |||
moritz_ | erm, yes; I always mix up those two | ||
ironcamel | when do you use but? | ||
jnthn | ironcamel: When you want to make a copy and mix in to that. | ||
xivix | Are these new or am I just that bad at Perl? | ||
20:27
eternaleye left
|
|||
jnthn | ironcamel: You'd use it when mixing into literals, for example | 20:28 | |
42 but role { method Str() { "the answer" } } | |||
xivix: Yes, does and but are new operators in Perl 6. | |||
xivix | Whew. | ||
20:29
eternaleye joined
|
|||
sorear | As are roles. | 20:29 | |
xivix | Clearly. | ||
That's pretty awesome. | |||
20:30
_2easy joined,
_2easy left,
masak joined
|
|||
masak | ahojte! | 20:30 | |
tadzik | hai masak! | ||
ironcamel | has %.board_names = { 7 => 'Chance' }; | 20:31 | |
is that right? | |||
masak | no need for the {} | ||
tadzik | yay, Monopoly | ||
moritz_ | and potentially harmfull, no? | ||
masak | rakudo: class A { has %.board_names = 7 => 'Chance' }; say A.new.board_names.perl | ||
p6eval | rakudo 79f754: OUTPUT«{"7" => "Chance"}» | 20:32 | |
ironcamel | say $g.board_names{7}; is printing Any() | ||
masak | moritz_: no, it should work, I think. | ||
rakudo: class A { has %.board_names = { 7 => 'Chance' } }; say A.new.board_names.perl | |||
p6eval | rakudo 79f754: OUTPUT«{"7" => "Chance"}» | ||
moritz_ | rakudo: my %h = { a => 1, b => 2}; say %h.perl | ||
p6eval | rakudo 79f754: OUTPUT«{"a" => 1, "b" => 2}» | ||
20:32
eternaleye left
|
|||
tadzik | ironcamel: you mean either <7> or {'7'} | 20:32 | |
{} is not autoquoting anymore | |||
masak | right. with arrays, however, there's a difference. | ||
sorear | Is { "foo" => "bar" } a hash constructor? | ||
masak | tadzik: say what? | ||
tadzik | masak: say .WHAT? | ||
sorear | How about { $variable-which-happens-to-hold-a-pair } ? | ||
masak | tadzik: the hash keys still autoquote, just like in Perl 5. | 20:33 | |
tadzik | masak: I meant you can't do %foo{bar} | ||
ironcamel | ints cant' be keys? | ||
keys are only strings? | |||
masak | tadzik: oh, ah. hash indexing :) | ||
tadzik | bar being a string literal | ||
20:33
eternaleye joined
|
|||
Tene | tadzik: no | 20:33 | |
masak | tadzik: sorry, I thought you meant circumfix:<{ }>, not postcircumfix:<{ }> | ||
Tene | tadzik: if you want that, use explicit autoquoting, %foo<bar> | 20:34 | |
tadzik | Tene: I know, I was telling that to ironcamel | ||
ironcamel: that'll have to be string with numbers | |||
Tene | Oh, um, I reading comprehension failed. | ||
tadzik | ironcamel: or you just want an Array maybe? | ||
masak | tadzik: re <b><i>foo</b></i> and tokenizing; I once addressed that problem for November the wiki engine. | ||
tadzik | Tene: there's plenty of people shouting all over to each other | ||
masak | I said THE MUSIC IS TOO LOUD. | 20:35 | |
tadzik | WHAT? | ||
jnthn | masak: oh yay, you used the plural form of the greeting! \o/ | ||
tadzik | I CAN'T HEAR YOU, THE MUSIC IS TOO LOUD! | ||
masak | WHAT? | ||
xivix | DID SOMEBODY SAY SOMETHING? | ||
masak | :) | 20:36 | |
jnthn hands masak a type object | |||
20:36
timbunce left
|
|||
dalek | kudo: 0647023 | moritz++ | docs/ChangeLog: [docs] update ChangeLog |
20:36 | |
xivix | dalek? | ||
tadzik | dalek | 20:37 | |
xivix | That's your GitHub bot's name? | ||
Tene | xivix: bot that reports commits to the repos | ||
yes | |||
xivix | Superb. | ||
Tene | EXTERMINATE BUGS | ||
masak | xivix, ironcamel: I just want to extend a "welcome" to you both. welcome. :) | ||
xivix | Thanks! | 20:38 | |
masak | how did you hear about this place? | ||
xivix | I was looking through my ports system and realized Perl wasn't there, then decided to check on Perl 6 because I'd heard it was in the works. | ||
masak | and so it is! :) | 20:39 | |
xivix | Indeed! | ||
Is anyone good at Irssi? | |||
Tene | many here use it | 20:40 | |
what do you need? | |||
xivix | I think I finally get the commands, and it's time to move on to making a configuration file. | ||
sorear | irssi sucks | ||
I use it with hatred | 20:41 | ||
tadzik | everything sucks | ||
xivix | Until now, I'd been leaning on gui irc clients. | ||
20:41
silug joined
|
|||
xivix | Do you recommend an alternative? | 20:41 | |
tadzik | xivix: what kind of ports system does not have Perl? | ||
moritz_ | "software is hateful" -- Nicholas Clark | ||
xivix | Homebrew for Mac. | ||
Tries not to duplicate OS X builtins, and Perl 5.12 isn't enough to warrant the upgrade from 5.10. | |||
tadzik | xivix: I like weechat personally | ||
sorear | xivix: irssi doesn't use configuration files of the handmade varity; when you type /save it creates config from current settings | ||
variety | 20:42 | ||
xivix | do't wory aboet speling | ||
Tene | I've never bothered with learning the commands to deal with the config from in-client. I change my channels and networks sufficiently rarely that I just edit the config in an editor and then /reload | 20:43 | |
masak | rakudo: sub roman { $^n >= 10 ?? "x" ~ roman $n-10 !! $n == 9 ?? "ix" !! $n >= 5 ?? "v" ~ roman $n-5 !! <i ii iii iv>[$n-1] }; say map { .&roman }, 14, 9 | ||
p6eval | rakudo 79f754: OUTPUT«xivix» | ||
masak | \o/ | ||
xivix | That sounds like a good solution. | ||
20:45
timbunce joined
|
|||
xivix | Haha, just looking at WeeChat. | 20:45 | |
"We're multi-protocol! (supports IRC and Jabber)" | |||
It's more than most IRC clients, to be sure. | 20:46 | ||
But dual-protocol would be a better description. | |||
moritz_ | I for one welcome our new protcol droids | 20:47 | |
xivix | :) | ||
moritz_ -> sleep | 20:48 | ||
masak | moritz_: night! | ||
xivix | Nighty-nite. | ||
20:49
justatheory left
|
|||
diakopter | xivix: Mono released v2.8 the same day as LLVM v2.8 | 20:50 | |
xivix | Oh my! How conspiratory. | 20:51 | |
Parrot, Mono, and LLVM. What could this mean? | |||
Also, that was a while ago. Kudos for reading the chat log. | |||
20:52
pythonian4000afk is now known as pythonian4000
|
|||
masak | rakudo: sub roman { my $pre = <v x xv xx xxv xxx xxxv>[($^n-4) / 5] // ""; $n % 5 == 4 ?? $pre.substr(0, -1) ~ "i" ~ $pre.substr(-1) !! $pre ~ "i" x ($n % 5) }; say roman($_) for 1..30 | 20:53 | |
p6eval | rakudo 79f754: OUTPUT«(timeout)» | ||
20:53
jferrero joined
|
|||
masak | p6eval: you turtle! :) | 20:53 | |
rakudo: sub roman { my $pre = <v x xv xx xxv xxx xxxv>[($^n-4) / 5] // ""; $n % 5 == 4 ?? $pre.substr(0, -1) ~ "i" ~ $pre.substr(-1) !! $pre ~ "i" x ($n % 5) }; say roman($_) for 1..15 | 20:54 | ||
diakopter | heh | ||
p6eval | rakudo 79f754: OUTPUT«iiiiiiivvviviiviiiixxxixiixiiixivxv» | ||
xivix | Nice. What's the double slash? | ||
masak | xivix: defined-or | ||
xivix: "use the lhs if it's defined, otherwise the rhs" | 20:55 | ||
xivix | Right, was that a necessary change? | ||
masak | xivix: lots more details in S03: perlcabal.org/syn/S03.html | ||
xivix | Like you couldn't use normal or for it? | ||
masak | xivix: I could've. | ||
but I like being specific. adds clarity. | |||
xivix | Is that new syntax? | 20:56 | |
masak | Perl 6 introduced it. Perl 5.10 "borrowed" it. | ||
xivix | Who would have guessed that adding forward slashes to Perl would add clarity? | ||
Go figure. | |||
masak | well, you're right in that it's not necessary in this case. | 20:57 | |
I could have just used the normal || operator. | |||
xivix | I thought it was a side-effect of the changes in v6. | ||
Like you had to do that now. | |||
Also, what are those delimeters? I don't think they're showing right in my encoding. | |||
masak | not at all. | ||
diakopter | xivix: I think you mean the newlines | 20:58 | |
masak | xivix: Unicode is your friend. | ||
diakopter | in p6eval's output | ||
Tene | xivix: I've plenty of times written: defined($foo) ? $foo : $other | ||
xivix | They're newlines. Gotcha. | ||
Tene | with //, that's just $foo // $other | ||
masak | xivix: here on #perl6, if you don't have your set calibrated for utf-8, you'r losing out. | ||
xivix | I think I'm using UTF-8. | ||
Irssi must not be. | |||
Tene | using || would alternate on defined-but-false values like 0 and the empty string. | 20:59 | |
masak | Tene: the Lisp world has a name for that kind of trouble. | ||
xivix | That's some good sugar. | ||
masak | Tene: I don't recall what, though. | ||
jferrero | xivix, what is $^n ? | 21:01 | |
huf | semipredicate problem? | ||
masak | huf: yup, that sounds like it. huf++ | ||
xivix | jferrero: What do you mean? | ||
masak | en.wikipedia.org/wiki/Semipredicate_problem | 21:02 | |
jferrero | sorry, xivix , Is a question for masak :*) | ||
masak | Perl 6 should be mentioned in that article. | ||
jferrero: $^n -- see S06. | |||
jferrero: (it's a variable that declares itself as a parameter) | 21:03 | ||
xivix | jferrero: I thought you were testing me. | ||
jferrero | ah, Ok... | ||
masak | xivix: at any time, there might be a test. better stay alert! :P | 21:04 | |
xivix | PERL N00BS: EVACUATE THE PREMISES | ||
Yo, someone should write a PerlQuiz bot. | 21:05 | ||
Not it. | |||
masak | xivix: I think you and lue++ might get along fine. | 21:06 | |
xivix | Who? | ||
21:06
_kaare left
|
|||
masak | oh, lue is just this guy, you know. :) | 21:06 | |
xivix | Yeah, I see him in your commit logs. | 21:07 | |
masak | he's the one who put in this error message: | 21:10 | |
rakudo: :2<OH HAI> | |||
p6eval | rakudo 064702: OUTPUT«===SORRY!===Malformed radix number at line 22, near "<OH HAI>"» | ||
masak | oh, not that one. | ||
rakudo: my $foo = "OH HAI"; :2($foo) | |||
p6eval | rakudo 064702: OUTPUT«DON'T PANIC! Invalid character (O)! Please try again :)  in main program body at line 1» | ||
masak | that one. | ||
xivix | Er, what was the error? | 21:11 | |
masak | xivix: :2() only accepts the characters "0" and "1". | 21:12 | |
xivix | Oh, duh. | ||
My b. | |||
masak | no need to apologise :) | ||
xivix | I'd be pleasantly surprised if for a moment I forgot what binary was, though! | 21:13 | |
Though maybe a little lost. | |||
And also, I discovered that my encoding is still not working. | |||
αβγδ | 21:14 | ||
How did that...? | 21:15 | ||
sorear | alpha beta gamma delta | 21:16 | |
xivix | But the symbols, right? | ||
masak | the Greek letters. | 21:17 | |
sorear | symbols? no, they're lowercase letters | ||
xivix | The symbols vs. the names. | ||
masak | sorear: letters are symbols :) | ||
xivix | 'f' is a symbol in the Latin alphabet, with the name "eff". | ||
sorear | masak: if I had a penny for every time somebody expected 'λ' ~~ /\W/ ... | 21:18 | |
masak | 是, however, is a symbol but not a letter. actually, it's a 字 :) | ||
xivix | What's its name! | ||
masak | xivix: depends on where you're from. | ||
sorear | the hanzi have different names in each country that uses them | 21:19 | |
masak | xivix: in the Mandarin-speaking parts, its name is SHI4. | ||
xivix | Touché. | ||
masak | TouSHI4. :) | ||
sorear | even the collective name differs; the Japanese call them kanji | ||
masak | and the Korean "hanja". | ||
xivix | I knew that last thing. | 21:20 | |
Because I took some Japanese once. | |||
jnthn | lol i blug: 6guts.wordpress.com/2010/10/15/slid...ymorphism/ | ||
xivix | So, those symbols all showed up just fine, but the delimiters from rakudo didn't. :\ | ||
masak | jnthn++ \o/ | ||
xivix | The past tense? | 21:21 | |
masak | xivix: probably your font not being l33t enough, then. | ||
xivix | Maybe not. | ||
masak | xivix: jnthn likes Indo-European languages, so he's toying with... ablaut, is it? | ||
jnthn | Yes, yes, I abaught inappropriately. :-) | 21:22 | |
*ablaught | |||
masak | *laul* | ||
sorear | xivix: the delimiters from p6eval are in very very few fonts | ||
xivix | Now I'm using Courier, so maybe it'll work. | 21:23 | |
masak | jnthn: “but that usually will create another problem” | 21:24 | |
jnthn: that's not how I heard it. | |||
jnthn: I heard it as "except the problem of too many levels of indirection", which is more of a punch line. | |||
sorear | TimToady is a linguist. It rubs off. | 21:25 | |
xivix | Wait, what should the thing before "Welcome to Perl 6" look like? | ||
sorear | A butterfly. | 21:26 | |
xivix | Oh, okay. | ||
jnthn | masak: en.wikiquote.org/wiki/Programming | ||
masak: Was my source. | |||
masak | xivix: '>>' as one char, 'o' with two dots, '<<' as one char. | ||
sorear | Closing guillemot, o-umlaut, opening guillemot | ||
xivix | Okay, it's looked like that the whole time. | ||
sorear | aka "ISO-8859-1 Camelia" | ||
jnthn | masak: But I seem to remember it the way I have it too. | ||
sorear | our logo has an official character form | 21:27 | |
masak | jnthn: here's my source: en.wikipedia.org/wiki/David_Wheeler...scientist) | ||
21:27
colomon joined
|
|||
masak | quote just above "Publications". | 21:27 | |
jnthn | Yeah | ||
Maybe he said both. ;-) | |||
Sadly, he's no longer around to ask. :-( | 21:28 | ||
I'm pretty sure I stood in an elevator with him once though... | |||
xivix | *schoolgirl scream* | 21:29 | |
jnthn | Those two comments weren't *that* related. :P | ||
masak | not a good idea to scream like a schoolgirl while in an elevator. | ||
jnthn | I didn't. I was more like "wait, is that..." | ||
xivix | masak: Apparently I need to re-evaluate my idea of what is socially appropriate. | 21:30 | |
rakudo: "encoding?" | 21:32 | ||
p6eval | rakudo 064702: ( no output ) | ||
masak | rakudo: say $*ENC | ||
p6eval | rakudo 064702: ( no output ) | ||
masak | :( | ||
xivix | rakudo: say "huh?" | 21:33 | |
p6eval | rakudo 064702: OUTPUT«huh?» | ||
xivix | Nope. Still broked. | ||
Er, unless it's supposed to look like N/L. | 21:34 | ||
muixirt | rakudo: my Buf @b=1,2,3,4; say @b[0] | ||
xivix | In which case that's just strange. | ||
p6eval | rakudo 064702: OUTPUT«maximum recursion depth exceeded in 'at_pos' at line 1 in 'at_pos' at line 5:CORE.setting in 'Any::postcircumfix:<[ ]>' at line 1697:CORE.setting in 'at_pos' at line 5:CORE.setting in 'at_pos' at line 5:CORE.setting in 'Any::postcircumfix:<[ ]>' at line | ||
..1697:CORE.settin… | |||
masak | xivix: it's supposed to look like N/L. | ||
xivix: think about it :) | 21:35 | ||
xivix | I get it. | ||
But it looked like icky quotes and a right angle at size 11. | |||
masak | muixirt: that doesn't do what you think it does. | ||
xivix | I can read the characters now at size 13. | ||
It was never broken in the first place. | 21:36 | ||
xivix feels silly | |||
masak | muixirt: when you type an array, the type refers to the array's elements. | ||
sorear | I actually think a box is more readable than N/L so I haven't bothered to fix it | ||
xivix | So, can arrays have other arrays as elements in Perl 6? | 21:37 | |
masak | xivix: sure. | ||
xivix | Thank God. | ||
masak | rakudo: my @a = [1, 2, 3], [4, 5, 6]; say @a.elems; say @a.perl | ||
p6eval | rakudo 064702: OUTPUT«2[[1, 2, 3], [4, 5, 6]]» | ||
xivix | That was SO NECESSARY. | 21:38 | |
masak | xivix: erm. Perl 5 does that too. | ||
xivix | Have I been using v4? | ||
Maybe using v4 docs. | |||
21:39
pyrimidine left
|
|||
xivix | I thought it could only store the references. | 21:39 | |
masak | that's all Perl 6 can do too. | ||
no real difference. | |||
Tene | perl -E '@a = ([1,2],[3,4]); say scalar(@a)' | ||
2 | |||
muixirt | rakudo: my Buf @b=1,2,3,4; say @b.perl | 21:40 | |
p6eval | rakudo 064702: OUTPUT«[1, 2, 3, 4]» | ||
muixirt | i don't get it | ||
21:40
jferrero left
|
|||
sorear | muixirt: you just created a list of Buf objects, and stored 4 integers in it | 21:41 | |
it should have crashed, saying "1 cannot be stored in an array of Buf" | |||
21:41
mavrc left
|
|||
xivix | Whoah, type checking? | 21:41 | |
muixirt | so how do i get a Buf and fill it with integer values? | 21:42 | |
21:42
chturne joined
|
|||
Tene | rakudo: my Buf $b .= new(); say $b.WHAT; | 21:44 | |
p6eval | rakudo 064702: OUTPUT«Buf()» | ||
masak | rakudo: my Buf $b .= new(65, 66, 67). say $b.decode | 21:49 | |
p6eval | rakudo 064702: OUTPUT«===SORRY!===Confused at line 22, near "my Buf $b "» | ||
xivix | Yeah, so about the array thing. | ||
masak | rakudo: my Buf $b .= new(65, 66, 67); say $b.decode | ||
jnthn | masak: ; | ||
p6eval | rakudo 064702: OUTPUT«ABC» | ||
xivix | I'd been always putting in the addresses by hand. | ||
21:50
envi_ left
|
|||
muixirt | and what is wrong with: my Buf $b .= new(); $b=1,2,3,4; | 21:51 | |
masak | muixirt: the second assignment overwrites the first. | ||
jnthn | That's doing item assignment | ||
It's like ($b=1),2,3,4 | |||
std: my Buf $b .= new(); $b=1,2,3,4; | 21:52 | ||
Tene | rakudo: my Buf $b .= new(); $b[0..4] = 120, 105, 118, 105, 120; say $b.decode; | ||
p6eval | std 263c207: OUTPUT«ok 00:01 119m» | ||
rakudo 064702: OUTPUT«xivix» | |||
jnthn | ah, std ain't doing the useless warnings yet. | ||
21:54
jferrero joined
21:55
timbunce left
22:02
timbunce joined
22:03
synth joined,
Schwern left
22:04
icwiener left,
Chillance left
|
|||
dalek | ecza/master: 2b2ac81 | sorear++ | / (4 files): Implement hash constructors |
22:05 | |
xivix | Where does dalek come from? | 22:07 | |
tadzik | yay, Hashes in niecza! | 22:08 | |
masak | sorear++ | ||
xivix | Why the ++? | 22:09 | |
masak | aloha: karma sorear | ||
aloha | masak: sorear has karma of 105. | ||
masak | sorear++ | ||
aloha: karma sorear | |||
aloha | masak: sorear has karma of 106. | ||
22:09
wooden left
|
|||
xivix | Cool, and why? | 22:10 | |
masak | social expectation to do good -> get karma. | ||
xivix | Right, but, what does it mean? | ||
masak | nothing. it's just a number. | 22:11 | |
22:11
wooden joined
|
|||
xivix | I'm a fan of meaningless fun things. | 22:11 | |
masak | in other news, money are just paper and scraps of metal. | ||
s/are/is/ | |||
xivix | You should have p6eval edit your last message. | 22:12 | |
masak | rakudo: $_ = "in other news, money are just paper and scraps of metal."; s/are/is/; .say | 22:13 | |
22:13
wooden left
|
|||
p6eval | rakudo 064702: OUTPUT«in other news, money is just paper and scraps of metal.» | 22:13 | |
masak | p6eval++ rakudo++ | ||
xivix | Haha. | ||
Where's the source for the p6eval bot? It'd be fun to correct typos with s//. | |||
22:14
alester left
|
|||
xivix | Anyway, I find it fairly surprising that nobody registered the nick "dalek" on freenode until perl6 needed a GitHub bot. | 22:14 | |
sorear | xivix: daleks are the main lawful evil race in Dr Who | 22:15 | |
xivix | sorear: My favorite doctors are 1, 4, and 9. | ||
22:16
wooden joined,
wooden left,
wooden joined
|
|||
xivix | I'd just assume that the name would be registered rather quickly on a network as large as Freenode. | 22:17 | |
tadzik | sorear: btw, where did the name "niecza" come from? | ||
sorear | tadzik: I asked masak to come up with a name for a Perl 6 implementation | 22:18 | |
tadzik | masak: btw, where did the name "niecza" come from? | ||
sorear | you could say "butchered Polish", but "masak's mind" is probably a more apt description | ||
czas = time, nie = no | |||
tadzik | niecza is like "nie trza", which is like "nie trzeba", which is like "isn't needed" | ||
jnthn | I think it was a polification of a misunderstanding of some Czech that was captioned as if it was Swedish. | 22:19 | |
tadzik | ach, cza from czas | ||
masak | tadzik: yes, from czas. | ||
22:19
timbunce left
|
|||
jnthn | o~ "...e kass..." | 22:21 | |
tadzik | yapsi is like "apsik" | 22:22 | |
masak | what does that mean? | ||
"sneezy"? | 22:23 | ||
tadzik | "apsik" is an.., onomathopeia (is there an english word like this?) for... this activity you do when you get a cold | ||
masak | yes, onomatopoeia. | ||
tadzik | some people like to make their "apsik" really loud, so the whole district hears it and fells off their chairs | 22:24 | |
sorear | We say "A-a-a-a-choo!!" here | ||
tadzik | yeah, that's it | ||
"kichać | |||
" | |||
sorear | What is your home language? | ||
tadzik | Polish | ||
masak | my office-mate only says the "CHOO!" sometimes, which tends to make me jump. | ||
tadzik | like a train | 22:25 | |
CHOO CHOO! | |||
masak | no, just once. and real loud. | ||
xivix | chugga chugga | ||
tadzik | I like saying "Achoo!" very loud, and then saying "thank you" even though no one says "bless you", being too stiffed | ||
xivix | And you then look around for who you might have responded to. | 22:26 | |
tadzik | somewhat | ||
22:28
Schwern joined
22:30
wooden left
22:33
wooden joined
22:35
justatheory joined
22:38
wooden_ joined
22:39
wooden left
|
|||
tadzik | sleepytime, g'night folks | 22:41 | |
masak | tadzik: dobranoc! | ||
tadzik | branoc :) | 22:42 | |
22:42
tadzik left,
cdarroch left
|
|||
masak | heh, look how p6 looked on p6l in 2003: www.nntp.perl.org/group/perl.perl6....15787.html | 22:45 | |
22:48
zby_home__ left,
kjeldahl left
|
|||
masak | rakudo: use MONKEY_TYPING; augment grammar Perl6::Grammar { token package_declarator:sym<diagram> { <sym> :my $*PKGDECL := "diagram"; <package_def> } }; Perl6::Grammar!protoregex_generation(); eval(diagram Foo {}; say 42]); | 23:00 | |
p6eval | rakudo 064702: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 22» | ||
jnthn | Missed quotes in eval | ||
masak | argh. | 23:01 | |
rakudo: use MONKEY_TYPING; augment grammar Perl6::Grammar { token package_declarator:sym<diagram> { <sym> :my $*PKGDECL := "diagram"; <package_def> } }; Perl6::Grammar!protoregex_generation(); eval(q[diagram Foo {}; say 42]); | |||
xivix | argv. | ||
p6eval | rakudo 064702: ( no output ) | ||
masak | rakudo: use MONKEY_TYPING; augment grammar Perl6::Grammar { token package_declarator:sym<diagram> { <sym> :my $*PKGDECL := "diagram"; <package_def> } }; Perl6::Grammar!protoregex_generation(); eval(q[diagram Foo {}; say 42]); say $! | ||
p6eval | rakudo 064702: OUTPUT«No HOW declared for package declarator diagram at line 1, near "{}; say 42"» | ||
masak | rakudo: use MONKEY_TYPING; augment grammar Perl6::Grammar { token package_declarator:sym<diagram> { <sym> :my $*PKGDECL := "grammar"; <package_def> } }; Perl6::Grammar!protoregex_generation(); eval(q[diagram Foo {}; say 42]); say $! | 23:02 | |
p6eval | rakudo 064702: OUTPUT«Null PMC access in invoke()» | ||
masak | I... I hesitate to rakudobug this one :) | ||
jnthn | :-) | ||
Tene | jnthn: where's the 6model stuff online? | ||
moritz_ | github.com/jnthn/6model | 23:03 | |
jnthn | Tene: See nom branch in nqp-rx repo for the on-Parrot impl so far | ||
And...what moritz_ said for the CLR and JVM ones. | |||
Tene | That's extremely tempting to work on. | 23:04 | |
jnthn | :-) | ||
sorear | No love for me. | 23:05 | |
:-) | |||
jnthn | Tene: I guess you have a commit bit for nqp-rx repo already, and let me know if you want one for 6model repo. | ||
Tene | jnthn: I'm all sorts of nonfunctional these days, so it's unlikely that I'll do anything. Would I need to work on anything in 6model to work on the nom branch in nqp-rx? | 23:06 | |
jnthn | Tene: No | ||
Tene | I'm unlikely to work on CLR or JVM. | 23:07 | |
jnthn | Tene: Generally my work flow is to do the first cut of things in 6model and then port it. | ||
But that's not the case all the time. | |||
Basically, "whatever's easiest" | |||
It's fine to just hack on one, there's no "they must all remain consistent all the time" requirement. :-) | |||
Tene | 'k | ||
23:13
pwnage- joined,
MayDaniel left
23:18
envi joined
23:19
Chillance joined
23:24
masak left
23:25
pwnage- left
23:35
Trashlord left
23:37
Trashlord joined,
risou_ left,
eternaleye left
23:38
[particle] left
23:39
eternaleye joined
23:40
[particle] joined
23:42
eternaleye left
23:43
eternaleye joined
23:46
eternaleye left
23:49
eternaleye joined
|