»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:18
benabik_ joined
00:22
benabik left,
benabik_ left
00:27
unobe left,
unobe joined
00:53
scott__ joined
|
|||
sorear | good * #perl6 | 01:02 | |
01:12
tokuhirom left
01:15
cooper joined,
IRCMonkey_ left
01:25
kmwallio joined
01:37
am0c left
01:41
woosley joined
|
|||
colomon | o/ | 01:42 | |
01:45
awwaiid left
01:51
awwaiid joined
01:57
woosley left,
cosimo left,
Khisanth left,
domidumont left
|
|||
colomon | ://colomon@melissa/home/colomon/SolsSVN/HWLibs/branches/HWLibs_1_5_stable HWLibssvn co svn+ssh | 01:58 | |
01:59
cosimo joined,
Khisanth joined,
domidumont joined
|
|||
colomon | wow, windowing is really messed up on my mac -- that typed in two windows, the one I wanted to type in and this one too. | 01:59 | |
time to reboot, I guess | |||
02:05
colomon left
02:07
broquaint left,
lumi___ left,
wooden left,
PZt left,
phenny left,
jerome_ left,
jnthn left,
timotimo left,
kfo left,
clkao left,
charsbar___ left,
felher left,
huf left,
Timbus left,
araujo left,
hillu left,
HarryS left
02:08
HarryS joined,
broquaint joined,
lumi___ joined,
wooden joined,
PZt joined,
araujo joined,
phenny joined,
jerome_ joined,
jnthn joined,
timotimo joined,
kfo joined,
clkao joined,
hillu joined,
charsbar___ joined,
felher joined,
huf joined,
Timbus joined
02:09
colomon joined
02:12
pothos left,
dju left,
LoRe left,
silug_ left,
[Coke] left,
jasonmay left,
integral left,
colomon left,
skids left,
whiteknight left,
Patterner left,
bonsaikitten left,
jaldhar left,
diakopter left,
daemon left,
masak left,
Grrrr left,
p6eval left,
rsimoes1 left,
bacek_at_work left,
odoacre left,
Tene left,
tadzik left,
cosimo left,
Khisanth left,
domidumont left,
broquaint left,
lumi___ left,
wooden left,
PZt left,
phenny left,
jerome_ left,
jnthn left,
timotimo left,
kfo left,
clkao left,
charsbar___ left,
felher left,
huf left,
Timbus left,
araujo left,
hillu left,
Su-Shee left,
betterworld left,
sftp_ left,
PerlJam left,
avar left,
flussence left,
abercrombie left,
DarthGandalf left,
`10 left,
jtpalmer left,
pnu left,
kst left,
chra left,
Juerd left,
pochi left,
nebuchadnezzar left,
x3nU left,
mikemol left,
Lorn left,
yeltzooo7 left,
zamolxes left,
Bucciarati left,
dukeleto left,
tomaw left,
sunnavy left,
Maddingue left,
jrockway left,
rafl left,
cj left,
yves left,
aloha left,
lestrrat left,
Util left,
literal left,
pyrimidine left,
_sri left,
moritz left,
takesako left,
s1n left,
shachaf left,
doy left,
wolverian left,
mattp_ left,
szbalint left,
bbkr left,
perimosocordiae left,
`patch` left,
kmwallio left,
y3llow left,
eiro left,
HarryS left,
jlaire left,
Woodi left,
orafu left,
BinGOs left,
awwaiid left,
pernatiy left,
preflex left,
baest left,
sjn left,
felipe left,
imarcusthis left,
SHODAN left,
overrosy left,
Vlavv` left,
cognominal_ left,
mls_ left,
ashleydev left,
etneg left,
kshannon left,
Gothmog_ left,
TimToady left,
Yappoko___ left,
scott__ left,
sudokode left,
_ilbot left,
slavik left,
aindilis left,
c1sung left,
djanatyn left,
eviltwin_b left,
simcop2387 left,
jevin left,
leontopod left,
apejens left,
[particle] left,
drbean left,
BooK_ left,
prammer left,
japhb left,
sirhc left,
frettled left,
buubot_backup left,
ranguard left,
krunen left,
cooper left,
bacek left,
nsh left,
arnsholt left,
renormalist left,
rhr left,
pmichaud left,
ocharles left,
athomason left,
jfried left,
szabgab left,
unobe left,
jferrero left,
Trashlord left,
ruoso left,
cxreg left,
kcwu left,
sivoais left,
dalek left,
revdiablo left,
colomon joined,
Timbus joined,
huf joined,
felher joined,
charsbar___ joined,
hillu joined,
clkao joined,
kfo joined,
timotimo joined,
jnthn joined,
jerome_ joined,
phenny joined,
araujo joined,
PZt joined,
wooden joined,
lumi___ joined,
broquaint joined,
HarryS joined,
domidumont joined,
Khisanth joined,
cosimo joined,
awwaiid joined,
kmwallio joined,
cooper joined,
scott__ joined,
unobe joined,
skids joined,
whiteknight joined,
jferrero joined,
sudokode joined,
y3llow joined,
pothos joined,
pernatiy joined,
preflex joined,
DarthGandalf joined,
Patterner joined,
Woodi joined,
Trashlord joined,
baest joined,
simcop2387 joined,
sftp_ joined,
bonsaikitten joined,
ruoso joined,
Su-Shee joined,
orafu joined,
jaldhar joined,
jevin joined,
overrosy joined,
eiro joined,
leontopod joined,
nebuchadnezzar joined,
Vlavv` joined,
BinGOs joined,
sjn joined,
felipe joined,
x3nU joined,
dju joined,
`10 joined,
_ilbot joined,
jtpalmer joined,
mikemol joined,
apejens joined,
betterworld joined,
cognominal_ joined,
PerlJam joined,
[particle] joined,
pnu joined,
drbean joined,
yves joined,
kst joined,
aloha joined,
chra joined,
BooK_ joined,
imarcusthis joined,
Lorn joined,
yeltzooo7 joined,
LoRe joined,
avar joined,
mls_ joined,
silug_ joined,
perimosocordiae joined,
Juerd joined,
lestrrat joined,
ashleydev joined,
pochi joined,
slavik joined,
prammer joined,
flussence joined,
etneg joined,
zamolxes joined,
SHODAN joined,
bacek joined,
abercrombie joined,
kshannon joined,
Util joined,
Bucciarati joined,
dukeleto joined,
literal joined,
pyrimidine joined,
Gothmog_ joined,
_sri joined,
moritz joined,
takesako joined,
s1n joined,
shachaf joined,
nsh joined,
tomaw joined,
diakopter joined,
daemon joined,
japhb joined,
frettled joined,
sunnavy joined,
masak joined,
arnsholt joined,
sirhc joined,
cj joined,
TimToady joined,
buubot_backup joined,
Grrrr joined,
Maddingue joined,
aindilis joined,
p6eval joined,
rsimoes1 joined,
Yappoko___ joined,
c1sung joined,
cxreg joined,
kcwu joined,
doy joined,
bacek_at_work joined,
[Coke] joined,
krunen joined,
ranguard joined,
odoacre joined,
sivoais joined,
jrockway joined,
djanatyn joined,
wolverian joined,
dalek joined,
revdiablo joined,
rafl joined,
eviltwin_b joined,
wolfe.freenode.net sets mode: +vv p6eval dalek,
renormalist joined,
mattp_ joined,
rhr joined,
pmichaud joined,
szbalint joined,
ocharles joined,
jasonmay joined,
Tene joined,
tadzik joined,
bbkr joined,
integral joined,
athomason joined,
`patch` joined,
sorear joined,
szabgab joined,
jfried joined,
tty234 joined,
scottp joined,
snarkyboojum joined,
cotto joined,
Helios joined,
risou joined,
ingy joined,
twinshadow joined,
krakan joined
02:13
jlaire joined
02:16
colomon left,
skids left,
whiteknight left,
Patterner left,
bonsaikitten left,
jaldhar left,
diakopter left,
daemon left,
masak left,
Grrrr left,
p6eval left,
rsimoes1 left,
bacek_at_work left,
odoacre left,
Tene left,
tadzik left,
krakan left,
twinshadow left,
risou left,
colomon joined,
skids joined,
whiteknight joined,
Patterner joined,
bonsaikitten joined,
jaldhar joined,
diakopter joined,
daemon joined,
masak joined,
Grrrr joined,
p6eval joined,
rsimoes1 joined,
bacek_at_work joined,
odoacre joined,
Tene joined,
tadzik joined,
krakan joined,
twinshadow joined,
risou joined,
wolfe.freenode.net sets mode: +v p6eval
02:17
pothos left,
dju left,
LoRe left,
silug_ left,
[Coke] left,
jasonmay left,
integral left,
ingy left,
snarkyboojum left,
cotto left,
Helios left
02:18
pothos joined,
dju joined,
LoRe joined,
silug_ joined,
[Coke] joined,
jasonmay joined,
integral joined,
ingy joined,
snarkyboojum joined,
cotto joined,
Helios joined,
Chillance joined
02:21
pothos left
02:22
pothos joined
02:30
woosley joined
02:34
lutok joined
02:48
lutok left
02:52
scott__ left
02:54
scott__ joined
03:00
whiteknight left
03:03
wolfman2000 joined,
benabik joined
03:06
uno_be joined
03:07
unobe left
03:11
kmwallio left
03:29
lutok joined
03:34
lutok left
03:40
gfldex joined
03:49
orafu left,
orafu joined
04:05
alvis left
04:27
Su-Shee left
04:28
Su-Shee joined
04:50
odoacre left
04:54
birdwindupbird joined
05:05
revdiablo left
05:13
pothos left,
pothos_ joined
05:14
pothos_ is now known as pothos
05:16
odoacre joined
05:17
kaleem joined
05:19
orafu left,
jlaire left,
HarryS left,
Woodi left,
BinGOs left,
BinGOs joined,
Woodi joined
05:20
orafu joined
05:21
HarryS joined
05:23
cooper left
|
|||
moritz | \o | 05:25 | |
sorear | o| | ||
araujo | o/ | ||
sorear | araujo \o/ | 05:26 | |
05:26
jlaire joined
|
|||
araujo | sorear, \o/ | 05:27 | |
05:29
jlaire left
|
|||
[Coke] | perl6: .say for Bool; | 05:29 | |
p6eval | rakudo 0711f9, niecza v14-23-g0699296: OUTPUT«Bool()» | ||
..pugs b927740: OUTPUT«Bool» | |||
05:32
Khisanth left,
khisanth_ joined
05:33
cosimo left,
cosimo joined
05:34
revdiablo joined
05:37
JimmyZ joined
05:39
kaleem left,
jlaire joined,
kaleem joined
05:40
kst` joined
05:41
xinming left
05:42
jtpalmer_ joined
05:43
chra_ joined,
xinming joined,
Patterner left
05:44
pnu_ joined
05:45
Juerd_ joined,
pochi_ joined
05:46
nebuchadnezzar left,
yeltzooo7 left,
nebuchad` joined,
jtpalmer left,
kst left,
chra left,
`10 left,
pnu left,
pochi left,
DarthGandalf left,
Juerd left,
Juerd_ is now known as Juerd
05:47
yeltzooo joined,
DarthGandalf joined
|
|||
[Coke] | niecza: say True.key | 05:53 | |
p6eval | niecza v14-23-g0699296: OUTPUT«True» | ||
[Coke] | niecza: say True.value | ||
p6eval | niecza v14-23-g0699296: OUTPUT«1» | ||
[Coke] | niecza: enum cat <mao meow ruff>; say mao.value | 05:56 | |
p6eval | niecza v14-23-g0699296: OUTPUT«0» | ||
[Coke] | niecza: enum cat <1 2 ruff>; my $a = cat::1; say $a.value | 05:57 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Two terms in a row at /tmp/xI8Ml46dAV line 1:------> enum cat <1 2 ruff>; my $a = cat::⏏1; say $a.valueParse failed» | ||
[Coke] | niecza: enum cat <1 2 ruff>; my $a = cat::ruff; say $a.value | ||
p6eval | niecza v14-23-g0699296: OUTPUT«2» | ||
05:58
JimmyZ left
06:01
khisanth_ is now known as Khisanth,
birdwind1pbird joined
|
|||
TimToady | niecza: enum cat <1 2 ruff>; my $a = cat::<1>; say $a.value | 06:02 | |
p6eval | niecza v14-23-g0699296: OUTPUT«0» | ||
TimToady | tada | ||
06:02
Psyche^ joined
06:03
Psyche^ is now known as Patterner
|
|||
TimToady | niecza: enum cat <mraa term:<⑆> hsss>; say ⑆.value | 06:08 | |
p6eval | niecza v14-23-g0699296: OUTPUT«1» | ||
moritz | std: sub a() { }; multi a() { } | 06:09 | |
p6eval | std 48335fc: OUTPUT«===SORRY!===Illegal redeclaration of routine 'a' (see line 1) at /tmp/kspDNPqJ5E line 1:------> sub a() { }; multi a⏏() { }Check failedFAILED 00:01 109m» | 06:10 | |
TimToady | nom: enum cat <mraa term:<⑆> hsss>; say ⑆.value | ||
p6eval | nom 0711f9: OUTPUT«===SORRY!===Confusedat /tmp/s0HcGV8N3h:1» | ||
[Coke] | masak: gist.github.com/404035 - this at least gets the original code running on niecza. | 06:11 | |
(now with real enums and some other cleanups) | |||
niecza: gist.github.com/404035 | 06:12 | ||
p6eval | niecza v14-23-g0699296: OUTPUT«Hand 1:  ace of spades  three of clubs  king of spades  jack of diamonds  jack of clubsHand 2:  ten of spades  four of diamonds  five of clubs  ten of diamonds  king of heartsThe first hand is a 'one pair' and the | ||
..second one a 'one pair', so th… | |||
[Coke] must sleep now. | 06:13 | ||
moritz | [Coke]: sleep well. Dream of perfectly scored poker hands. | ||
std: has sub f() { } | 06:14 | ||
p6eval | std 48335fc: OUTPUT«Potential difficulties: 'has' declaration outside of class at /tmp/WEUfe9TdY8 line 1:------> has⏏ sub f() { }ok 00:01 109m» | ||
moritz | std: state sub f() { } | ||
p6eval | std 48335fc: OUTPUT«ok 00:01 109m» | ||
[Coke] | rakudo: gist.github.com/404035 | 06:15 | |
p6eval | rakudo 0711f9: OUTPUT«Type check failed in assignment to '$!suit'; expected 'Suit' but got 'Pair' in method BUILDALL at src/gen/CORE.setting:583 in method bless at src/gen/CORE.setting:573 in method new at src/gen/CORE.setting:558 in block <anon> at /tmp/jbfHuXRrTD:80 in metho… | ||
[Coke] never tried it on rakudo. ;) | |||
danke. see you today. | |||
moritz | niecza: my $x = 3; enum Foo (x => $x); | 06:16 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Enum values must be Int or Str, but got Any at /home/p6eval/niecza/lib/CORE.setting line 1586 (List.gist @ 4)  at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/Gqsjit3Ote line 0 (ANON @ 2)  at <unknown> line 0 (ExitRun… | ||
TimToady | niecza: BEGIN my $x = 3; enum Foo (x => $x); | 06:18 | |
p6eval | niecza v14-23-g0699296: ( no output ) | ||
moritz | niecza: enum Foo (x => get()); | 06:19 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Unable to resolve method get in class Any at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/im7EzMyaqf line 1 (ANON @ 2)  at <unknown> line 0 (ExitRunloop @ 0) at /tmp/im7EzMyaqf line 1:------> enum Foo (x => get()… | ||
TimToady | the value must be known at compile time | ||
moritz | method? | ||
TimToady: I know, I just try to explore niecza's error messages | 06:20 | ||
TimToady | an 'is export' maybe | ||
moritz | ah, probably method because it re-dispatches get to $*ARGFILES.get | ||
and that is Any | |||
06:24
Patterner left
06:26
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
TimToady | we might be missing a list infix op, M, which merges lazy lists lazily | 06:44 | |
it might, in fact, be a metaop | |||
06:47
koban joined,
koban left
06:48
takesako left
06:54
takesako joined
|
|||
TimToady | constant @hamming = 1, dedup (@hamming X* 2) M (@hamming X* 3) M (@hamming X* 5); | 06:58 | |
06:58
lestrrat left
|
|||
TimToady | your mission is to define infix:<M> so that it works right | 06:58 | |
06:59
lestrrat joined,
wtw joined
|
|||
moritz | you want Mmin, don't you? | 06:59 | |
06:59
lestrrat left
|
|||
TimToady | well, we might define it elsewise | 06:59 | |
07:00
birdwind1pbird left
|
|||
TimToady | I'm thinking M<= would include ups, and M< wouldnt | 07:00 | |
*dups | |||
or something like that | |||
07:00
lestrrat joined
|
|||
TimToady | then we can get rid of the dedup | 07:01 | |
the next trick after that is to make it so that calculating @hamming[1_000_000] doesn't have to keep all the previous values around | 07:02 | ||
07:03
Chillance left
|
|||
dalek | kudo/nom: 6ed624d | moritz++ | src/Perl6/Actions.pm: Throw one more typed exception |
07:03 | |
TimToady | c.f. rosettacode.org/wiki/Hamming_numbers | ||
Python brags a lot in the associated Wikipedia articles about their built-in merge | 07:05 | ||
I think we could show 'em what a *real* built-in merge looks like :) | 07:07 | ||
if M defaults to before semantics, and we want the equals case, then it really defaults to M[!after] I guess | 07:11 | ||
which seems a bit odd | |||
maybe we need a beforesame operator | 07:12 | ||
moritz | urks | ||
dalek | ast: 171ad0a | moritz++ | S32-exceptions/misc.t: test X::Undeclared |
||
ast: 63626c2 | moritz++ | S32-exceptions/misc.t: another redeclaration test |
|||
TimToady | I guess we could name it with either 2-way or 3-way comparisons, then it's just Mcmp to get the 'leave dups in case' | 07:14 | |
er, 'leave dups in' case | 07:15 | ||
I suppose it's not really a very good higher-order function if it has to introspect the operator to see if it supports equality, and make it mean dedup if it doesn't | 07:17 | ||
moritz | well | 07:18 | |
we can distinguish True/False from Order::{Same,Increase,Decrease} | |||
TimToady | that doesn't exactly help | ||
moritz | right | 07:19 | |
TimToady | well, unless we require the Order form for equality | ||
and restrict the other to non-equalities | |||
well, something to sleep on, I think, and maybe try to prototype, which I don't doubt will stress our iterator implementations :) | 07:23 | ||
at least, it did last time I tried to write a list merge routine... | |||
masak | morning, #perl6. | 07:27 | |
moritz | \o masak | 07:28 | |
masak | #phasers in 661? | ||
07:28
lestrrat left
|
|||
moritz | 601 I think | 07:29 | |
$ date --utc | |||
Wed Feb 8 07:28:48 UTC 2012 | |||
and #phasers is 1730 UTC | |||
07:30
lestrrat joined
|
|||
sorear | hello, masak | 07:31 | |
masak | oh, 17:30! | 07:32 | |
that's why I keep missing it ;) | |||
gist.github.com/404035 -- first time I've seen 'where sub' in a subtype declaration. | 07:33 | ||
possible but doesn't seem necessary here, AFAICS. | |||
anyway, [Coke]++ | |||
07:34
nebuchad` is now known as nebuchadnezzar
07:35
abercrombie left
|
|||
jnthn | Morning. It is it. | 07:37 | |
Last day of class. Tomorrow: Perl 6 tuits :) | |||
moritz | niecza: my $i = 1; m:$i/s/ | 07:39 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Colons may not be used to delimit quoting constructs at /tmp/H9518wDAgQ line 1:------> my $i = 1; m⏏:$i/s/Parse failed» | ||
moritz | niecza: my $i = 1; m:i($i)/s/ | ||
p6eval | niecza v14-23-g0699296: OUTPUT«Unhandled exception: Unable to resolve method match in class Any at /tmp/WHsMasZ0_I line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 3744 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3745 (module-CORE @ 65)  at /home/… | ||
moritz | niecza: my $i = 1; say 'S' ~~ m:i($i)/s/ | 07:40 | |
p6eval | niecza v14-23-g0699296: OUTPUT«#<match from(0) to(1) text(S) pos([].list) named({}.hash)>» | ||
moritz | niecza: my $i = 0; say 'S' ~~ m:i($i)/s/ | ||
p6eval | niecza v14-23-g0699296: OUTPUT«#<match from(0) to(1) text(S) pos([].list) named({}.hash)>» | ||
sorear | what? | ||
:i() shouldn't be parsing at all | |||
moritz | why not? | ||
:i(1) sounds perfectly fine | 07:41 | ||
also it parses the same way as :c($start_from_here), which is also legitim | |||
sorear | because that code long predates niecza's constant expression support. | ||
masak | oh no not another metaop :) | 07:42 | |
though this one sounds cool, I'll admit. | |||
07:45
`10 joined
|
|||
dalek | kudo/nom: a2792b9 | moritz++ | src/ (2 files): typed exceptions for things that must be known at compile time |
07:55 | |
ast: 59f3f35 | moritz++ | S32-exceptions/misc.t: test exception type for stuff that must be known at compile time |
07:56 | ||
masak | rosettacode.org/wiki/Hamming_numbers#Perl_6 -- "Rakudo Perl 6 (2010.12) does not as of yet have support for for arbitrarily large integer calculations." -- I think that's old info now, no? | 08:03 | |
jnthn | yeah | ||
masak edits | |||
jnthn | We've had big integer support for ages | ||
moritz | given ages === months :-) | 08:06 | |
jnthn | ;) | 08:07 | |
Su-Shee | good morning everyone. | 08:09 | |
sorear | Su-Shee! | 08:10 | |
good morning! | |||
masak | Su-Shee! \o/ | 08:14 | |
08:25
woosley left
08:30
sftp_ left
|
|||
tadzik | good morning :) | 08:31 | |
08:31
ab5tract joined
|
|||
masak | tadzik! \o/ | 08:36 | |
08:39
chra_ is now known as chra
08:45
mj41 joined
08:48
orafu left
|
|||
moritz | niecza: my ($x, $y) = (2**30, 1); printf "%32b\n", +^$x +& $y; | 08:48 | |
p6eval | niecza v14-23-g0699296: OUTPUT« 1» | 08:49 | |
08:50
orafu joined
|
|||
sorear sleep | 08:51 | ||
moritz | perl6: my ($x, $y) = (2**30, 1); say +^$x +& $y; | 08:54 | |
p6eval | pugs b927740, niecza v14-23-g0699296: OUTPUT«1» | 08:55 | |
..rakudo a2792b: OUTPUT«-1152921504606846975» | |||
masak | Rakudo does like negative numbers... | 08:56 | |
moritz | I think I have a fix for it | ||
and it's so stupid that I wonder nobody has caught it before :/ | 08:58 | ||
masak | sounds like most fixes... :) | 09:06 | |
so, is it a fix in Rakudo, not libtommath? | |||
moritz | nqp | 09:08 | |
masak | heh. I like this. in Perl 6, I have to write 'say ""' because just 'say' is an error (except not right now in Rakudo) to prevent Perl 5 thinkos with implicit $_. in Perl 5 I have to write 'say ""' instead of 'say' because I'm making the *reverse* thinko and not even considering that 'say' defaults to $_. :) | 09:09 | |
life in the day of a Perl 6 hacker trying to use Perl 5. | |||
moritz | oh, but the fix breaks something else | 09:11 | |
hm | |||
09:18
mj41 left
09:19
mj41 joined
|
|||
moritz | it seems that my detection of when then result of a binary bitop is negative is wrong | 09:28 | |
masak | is it possible that the flaw in you in your detection of when the result of a binary bitop is negative is fixable? :) | 09:31 | |
g'ah, s/in you / | |||
language. it nests well. | |||
moritz | it is possible, yes | ||
jlaire | "life in the day" ... sounds interesting | 09:32 | |
masak | jlaire: I was all "hey, this is Perl 5, I can do `say;` and not `say "";` like I have to in Perl 6!" | ||
undefined $_ warnings were my reward. | |||
moritz | I just hope that the the C compiler constant-folds the heck out of my code :-) | 09:33 | |
masak | C compilers are usually good at such things. | ||
moritz | I know | ||
jlaire | yep, but "day in the life" is the usual saying | ||
wondered if it's a thinko or some deep pun | 09:34 | ||
moritz | note to self: - is not allowed in C identifiers. _ is. | ||
masak | I recently learned that the prime 31 is popular in hash-code algorithms, because various compilers take '$x * 31' and turn it into '$x <+ 5 - $x', a bit-shift and a subtraction, which is cheaper than a multiplication. | ||
jlaire: oh, argh. pre-coffee thinko. | 09:35 | ||
jlaire | at some point, gcc was over enthusiastic about replacing multiplication with shifts and additions/subtractions | ||
moritz | ... except when it isn't cheaper | ||
jlaire | it was a pessimization on some AMD processors | ||
iirc | |||
masak | right. pipelining and stuff changes the game a bit. | ||
no pun intended. | |||
moritz | non taken. | 09:36 | |
09:36
dakkar joined
|
|||
tadzik | 'right', 'bit' ;) | 09:39 | |
09:41
orafu left,
orafu joined
09:42
pernatiy left
|
|||
dalek | p: 19f1639 | moritz++ | / (2 files): [bigint] fix detection of negative numbers from binary ops This should fix RT #109740 |
09:43 | |
09:44
daxim joined
|
|||
moritz | it's better to just consider a single bit than the whole digit :-) | 09:45 | |
and the parens were wrong before anyway | 09:46 | ||
09:46
ab5tract left
09:49
Patterner left
09:52
tarch joined
|
|||
masak | moritz++ | 09:54 | |
moritz | executive summary: we need many more tests for bitops | ||
09:55
tarch left,
kst` is now known as kst,
tarch joined
|
|||
masak | today's autopun: Interviewer: "What do you say, Mr. Kinnock, to all those people who accuse you of blatant electioneering?" -- Neil Kinnock: "Vote for me!" | 10:01 | |
10:02
sftp joined
10:06
Psyche^ joined,
Psyche^ is now known as Patterner,
ab5tract joined
|
|||
moritz | gist.github.com/1767768 | 10:09 | |
masak | :) | 10:13 | |
trying to make the research for my lightning talk easier? :) | |||
moritz | akshually I started collecting before we discussed the talk the first time | 10:14 | |
masak | oh ye of much self-reference. get thee to an auto-punnery. | 10:16 | |
10:19
Patterner left
10:22
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
dalek | kudo/nom: 0a3ee96 | moritz++ | tools/build/NQP_REVISION: bump NQP revision to get RT #109740 fix |
10:35 | |
10:35
xinming left
|
|||
dalek | ast: 45d427d | moritz++ | S03-operators/bit.t: RT #109740, big-ish binary bit ops |
10:35 | |
10:37
Patterner left
|
|||
masak | moritz: I don't think the Banach-Tarski one is an autopun. either it isn't, or I'm missing something about the Banach-Tarski theorem. | 10:38 | |
10:38
xinming joined
|
|||
masak defender of the purity of the definition of "autopun" | 10:38 | ||
moritz | masak: well, it's more of a meta joke than an autopun | 10:39 | |
jlaire | what's the definition | ||
10:40
mj41 left
|
|||
masak | jlaire: "pulling up" mentioning a phenomenon into use of the phenomenon. | 10:41 | |
jlaire | mmkay | ||
masak | jlaire: example: "I got these pills to give me strength, but it was no good. I can't get the bottle open. :-/" | 10:42 | |
jlaire | aha, I get it now | ||
thanks :) | |||
masak | yes, the example works better than the explanation :) | ||
10:43
scott__ left
10:45
Psyche^ joined,
Psyche^ is now known as Patterner
10:46
lutok joined
|
|||
masak | another one: "What's the difference between ignorance and apathy?" -- "I don't know, and I don't care." | 10:46 | |
jlaire | hehe | 10:47 | |
10:48
scott__ joined
|
|||
masak | the other day, I saw the tweet "Does the twittersphere understand the concept of rethorical questions?" | 10:49 | |
I was on the verge of replying "Guess not!", but it felt too obvious. :) | 10:50 | ||
moritz | there's a nice one that only works in German, unfortunately | 10:54 | |
"Wiseen ist Macht" -- "Ich weiss nichts" -- "Macht nichts!" | |||
masak | moritz: your gist is the top Google result for "autopun". | ||
moritz | masak: woah. | ||
jlaire | hehe | ||
needs an urbandictionary entry | |||
10:54
mj41 joined
|
|||
masak | moritz: "Knowldege is power" -- "I don't know [about that]" -- "That doesn't work!" | 10:55 | |
moritz: did I get that right? | |||
moritz | masak: no | ||
masak | dang :) | ||
I'm trying to learn German by passive absorbtion. it's a slow process. | |||
moritz | masak: "macht nichts" means "doesn't matter" (but of course also puns "Macht" eq "power") | ||
masak | ah! that was the missing piece :) | 10:56 | |
that's a pun; don't know about it being an autopun :) | |||
verging on one, certainly. if you consider the first line to be the mention, and the rest to be the use. | 10:57 | ||
moritz | well, it's an edge case | ||
masak | right. | ||
ah, so de:"macht nichts" is sv:"det gör inget" | 10:58 | ||
phenny: "macht nichts!"? | |||
phenny | masak: "does not matter!" (de to en, translate.google.com) | ||
masak | phenny: "det gör inget!"? | ||
phenny | masak: "it does not matter !" (sv to en, translate.google.com) | ||
10:58
scott__ left
|
|||
moritz | phenny: "gör"? | 10:59 | |
phenny | moritz: "doing" (sv to en, translate.google.com) | ||
moritz | "Unable to remove the selected object\n[Error: null]" # I /love/ such error messages | 11:00 | |
masak | "Dissecting a joke is like dissecting a frog: you'll only make a mess, and the frog dislikes it." | ||
moritz | that's from a commerical optics simulation program | ||
masak | moritz: did I tell you about the worst user error I've ever seen? | ||
moritz | masak: no | 11:01 | |
masak | "Child killed. Cause: could not connect to FTP server." | 11:02 | |
user was allegedly very distraught. | |||
worse than being unintentionally uninformative is probably to unintentionally horrify people. | 11:04 | ||
...was it something I said...? :) | 11:20 | ||
moritz | maybe it was something you didn't say :-) | 11:22 | |
std: sub f() | 11:24 | ||
p6eval | std 48335fc: OUTPUT«===SORRY!===Malformed block at /tmp/D5lQ2mXfkT line 1 (EOF):------> sub f()⏏<EOL>Parse failedFAILED 00:01 108m» | ||
11:28
lutok left
11:39
benabik left
11:54
am0c joined
12:06
fasad joined
12:10
Trashlord left
12:18
tarch left
12:39
gfldex left
12:42
benabik joined
12:45
orafu left,
orafu joined,
pernatiy joined,
mtk joined
12:47
gfldex joined,
am0c left
12:48
am0c joined
12:54
skids left
12:56
Tedd1 joined
12:57
bluescreen10 joined
13:01
WAZ joined
|
|||
WAZ | Wesh! | 13:01 | |
13:02
WAZ left
|
|||
masak .oO( drive-by weshing ) | 13:05 | ||
dictionary.reference.com has "wesh" as an archaic variant of "washed", used by Chaucer. | 13:06 | ||
13:21
kaleem left
|
|||
moritz | perl6: class A { method m() { say 'A.m' } }; class B is A { has $.m = 'foo' }; say B.new.m | 13:24 | |
p6eval | pugs b927740, rakudo 0a3ee9, niecza v14-23-g0699296: OUTPUT«foo» | ||
13:24
kaleem joined
13:25
gfldex left
|
|||
masak | makes sense, methinks. | 13:25 | |
you asked for a method, you gots one. :) | |||
moritz | +1 | ||
benabik | has $.m == has $!m; method m() { $!m } # ?? | 13:26 | |
masak | to a first approximation, yes. | ||
tadzik | ywis | ||
moritz | benabik: not quite, in case there's already a method m present | ||
13:26
gfldex joined
|
|||
moritz | which is why I felt the need to check | 13:26 | |
masak | ...present in the same class declaration. | ||
moritz | nom: class A { has $.x; method x() { 'foo' } }; say A.new.x | ||
p6eval | nom 0a3ee9: OUTPUT«foo» | ||
moritz | perl6: class A { has $.x; method x() { 'foo' } }; say A.new.x | 13:27 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Two definitions of method x (see line 1) at /tmp/Cqn6SNUFsU line 1:------> class A { has $.x; method x⏏() { 'foo' } }; say A.new.xUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/COR… | ||
..pugs b927740, rakudo 0a3ee9: OUTPUT«foo» | |||
benabik | I would vaguely expect that has $.m with a method m would cause an error. | ||
13:27
abercrombie joined
|
|||
masak | benabik: there was an RT ticket recently discussing similar issues. | 13:29 | |
benabik | masak: Well, then, I guess I'm just catching up. | ||
masak | I'd say so :) | 13:30 | |
13:31
am0c left,
am0c joined
|
|||
moritz | I'm now trying to merge Exception and X::Base | 13:32 | |
which is totally not going to work as I hope it does :/ | |||
masak | :/ | 13:36 | |
moritz is still not used to the fact that if you have 24 CPUs, a CPU usage of < 5% can still mean that one core is working non-stop | 13:37 | ||
benabik | That's a lot of CPUs. | ||
jnthn | Must be awesome for parallel testing though :) | ||
moritz | sadly I don't have a proper dev environment on that machine | ||
jnthn | .oO( core blimey! ) |
||
moritz | I should change that soon | ||
benabik | load can be a better indicator there, since a load of 1 means that 1 process wants the CPU at all times. | 13:38 | |
moritz | oh, and they are only 12 "real" cores, plus hyperthreading | ||
benabik: I don't think windows reports load average | |||
benabik | moritz: :-( | ||
masak | benabik: ah, found the ticket: rt.perl.org:443/rt3/Ticket/Display...?id=108670 | 13:40 | |
moritz | anyway, that box also has 90G of memory, so it should be enough to run 24 spectests in parallel too | ||
masak | 90GB! that's, like, sixty-four thousand 1.44 MB diskettes! | 13:41 | |
benabik | moritz: Gah! | 13:42 | |
moritz | masak: the case of that machine isn't small, but I don't think that many diskettes fit in there :-) | ||
13:43
colomon left
|
|||
masak | so... storage must've gotten smaller in the past decades. | 13:44 | |
this is amazing! | 13:45 | ||
;) | |||
moritz | :-) | ||
13:45
colomon joined
|
|||
moritz | jnthn: which perl are you using for building parrot and rakudo? | 13:47 | |
jnthn | moritz: ActivePerl 64-bit build | ||
cognominal_ | ya une sociale ce soir? | ||
jnthn | cognominal_: oui oui, une sociale avec bier! | ||
masak | cognominal_: tout les soirs! | ||
touts* | 13:48 | ||
cognominal_ | oops | ||
masak hugs cognominal_, good French user :) | |||
jnthn | moritz: If the autosizes branch ain't merged in Parrot yet, it'll want a --parrot-option=--intval="long long" | ||
masak .oO( pardon his French ) | 13:49 | ||
jnthn: aussi, je pense que devrait être "bière" | 13:51 | ||
s/que/que ce/ | |||
cognominal_ | indeed | ||
jnthn | Je suis une merdique en francais :P | ||
masak .oO( merdiquocracy ) | 13:52 | ||
cognominal_ | merdique is the adjective. | ||
masak | kinda proving his point :P | ||
jnthn | How...self-fulfilling :P | ||
moritz | autopun! | 13:53 | |
jnthn | .oO( is it an auto-pun? :) ) |
||
masak | yes :) | ||
so is "I speak the English a poor." | |||
[Coke] | masak: that where sub is YOURS. :P | ||
masak | [Coke]: dang! :P | ||
cognominal_ | "merder" is the verb and "merde" the noun. Useful word like "shit" in English. | ||
jnthn | Great, my first successful autopun and it's in a language I don't even really speak :P | ||
[Coke] | masak: (it's old code. probably a fossil. I'll try to sixify it more as I make it work better. | 13:54 | |
masak | \o/ | ||
maybe there's a special sub-category of autopun where mention coincides with use. | |||
jnthn | .oO( sub-optimal ) |
||
PerlJam | cognominal_: so if I hear a french-speaking person talking about "murder", maybe they're really talking about "merder"? :) | 13:55 | |
though the french tend to drop trailing consonants, so I guess I wouldn't hear the trailing "r" in "merder" | 13:56 | ||
masak | the first 'e' in 'merde' sounds quite different to the 'u' in 'murder' to my ear. | 13:57 | |
arnsholt | That's because it's a different vowel, probably ^_^ | ||
PerlJam | masak: aye, but americans aren't that sensitive to subtle differences ;) | ||
masak | troo | ||
masak loves subtle differences <3 | |||
jnthn lоvеs thеm alsо :) | 14:01 | ||
PerlJam | jnthn: how do you pronounce that? | ||
;) | |||
jnthn | Palletedly | 14:02 | |
14:02
Trashlord joined
|
|||
PerlJam gets out his paint brushes | 14:02 | ||
14:07
orafu left,
orafu joined
|
|||
[Coke] | perl6: enum S <a b>;enum R <c d>;class C {has S $.s;has R $.r;}my $a=C.new(a,c); | 14:07 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/DdowlGKPY5 line 1:------> m R <c d>;class C {has S $.s;has R $.r;}⏏my $a=C.new(a,c);Parse failed» | ||
..rakudo 0a3ee9: OUTPUT«===SORRY!===Confusedat /tmp/vVUBJln964:1» | |||
..pugs b927740: OUTPUT«*** No such subroutine: "&enum" at /tmp/rCSnf6CUs7 line 1, column 1-13» | |||
[Coke] | perl6: enum S <a b>;enum R <c d>;class C {has S $.s;has R $.r;};my $a=C.new(a,c); | 14:08 | |
14:08
skids joined
|
|||
p6eval | pugs b927740: OUTPUT«*** No such subroutine: "&enum" at /tmp/7infOyHZDS line 1, column 1-13» | 14:08 | |
..niecza v14-23-g0699296: OUTPUT«Potential difficulties: $a is declared but not used at /tmp/MhSx5mUfo7 line 1:------> <c d>;class C {has S $.s;has R $.r;};my ⏏$a=C.new(a,c);Unhandled exception: Excess arguments to Mu.new, used 1 of 3 positionals at /home/p6eval/… | |||
..rakudo 0a3ee9: OUTPUT«Default constructor only takes named arguments in method new at src/gen/CORE.setting:561 in block <anon> at /tmp/nBN5JaD17i:1 in <anon> at /tmp/nBN5JaD17i:1» | |||
masak was gonna say | 14:09 | ||
it'd be .new(:s(a), :r(c)) | |||
[Coke] | perl6: enum S <a b>;enum R <c d>;class C {has S $.s;has R $.r;};my $a=C.new(:s<a>,:r<c>); | ||
p6eval | rakudo 0a3ee9: OUTPUT«Type check failed in assignment to '$!s'; expected 'S' but got 'Str' in method BUILDALL at src/gen/CORE.setting:583 in method bless at src/gen/CORE.setting:573 in method new at src/gen/CORE.setting:558 in block <anon> at /tmp/7628q7AmMX:1 in <anon> at /tm… | ||
..niecza v14-23-g0699296: OUTPUT«Potential difficulties: $a is declared but not used at /tmp/nQ4uL8sRzr line 1:------> <c d>;class C {has S $.s;has R $.r;};my ⏏$a=C.new(:s<a>,:r<c>);» | |||
..pugs b927740: OUTPUT«*** No such subroutine: "&enum" at /tmp/WTaeRiBziJ line 1, column 1-13» | |||
masak | not <a>, a | ||
[Coke] | right, because <> leaves strings, not literals. | ||
Danke. | |||
masak | right. | ||
14:13
orafu left,
orafu joined
14:15
colomon left
|
|||
dalek | kudo/nom: 15dc125 | moritz++ | src/core/Exception (2 files): eliminate X::Base It is replaced by Exception as a base class, and by X::AdHoc for die with non-Exception arguments |
14:15 | |
masak | \o/ | 14:16 | |
14:21
orafu left,
orafu joined
|
|||
dalek | ecs: 008dddb | moritz++ | S32-setting-library/Exception.pod: [S32::Exception] update to current state of the art in particular, X::Base is now called Exception, and some unneeded stuff has been removed |
14:25 | |
masak | I like the commit overall, but I disagree that backtraces are very ".gist"-y. | 14:30 | |
that's the probalem with the current backtraces. they're mostly just screenfuls of noise. | |||
not printing them at program exit would be less annoying that printing them. | |||
than* | 14:31 | ||
moritz | I disagree. They often help me to locate errors. | 14:33 | |
14:33
PacoAir joined
|
|||
moritz | masak: would you be happier if X::AdHoc surpressed backtraces in .gist? | 14:34 | |
14:39
am0c left
|
|||
masak | marginally; that still wouldn't help against all the usual exceptions, IIUC. | 14:40 | |
I'm not annoyed mostly by the backtraces non-standard errors that I throw deliberately. | |||
I'm annoyed by backtraces. | 14:41 | ||
14:41
am0c joined
|
|||
masak | they're twice as long or more than they should be, they contain a lot of internal routines that I don't care about because they don't add any useful information, and they scroll away the actual error message, which is what I care about. | 14:42 | |
14:42
zb joined
14:43
au joined
|
|||
moritz | so if backtraces contained less noise and came before the message, would you stop disliking them? | 14:43 | |
14:43
orafu left,
orafu joined
|
|||
masak | those two things would make them more useful. I don't know if I would like them, but I would at least consider liking them again. | 14:44 | |
[Coke] | not reporting on internal bits would be nice. (though I can see the need to enable them if you're trying to debug core.) | 14:45 | |
masak | compare Perl 5, which doesn't do backtraces (except Moose). I have no trouble using the information I *do* get from Perl 5 to find my errors. | ||
moritz | well, debugging core is not a problem; you can use a custom exception handler (or --ll-exception) for that | 14:46 | |
[Coke] | I prefer backtraces to a single error. | ||
masak | backtraces have a tendency to make me sad just by appearing. and the ones that Rakudo give me are near-useless. | ||
moritz | the backtrace information is available in the Exception object anyway | ||
masak | I usually have a pretty good idea of which path my execution has taken. | ||
moritz | masak: I have the opposite experience: in rakudo often enough single line numbers are unreliable, so it helps to have several line numbers available, one of which usually leads in the right direction | 14:47 | |
masak | line numbers are unreliable? | 14:52 | |
that sounds like the core problem, not something to be worked around by looking at the backtrace. | |||
[Coke] | For larger codebases with multiple ways to execute the same code, the backtraces can be very helpful. | 14:58 | |
masak | conceded. | 14:59 | |
here -- let me show you: gist.github.com/1770312 | 15:01 | ||
moritz | masak: yes, we know that for-loops generate horrible backtraces in rakudo | ||
masak: that must be fixed | |||
masak | I count 1 line with the error message, and then 18 useless lines mixed up with two useful lines. | 15:02 | |
moritz | but I don't see that as a general problem with the design of backtraces | ||
masak | the for loops help exemplify the issue, but even random anonymous blocks are pretty useless. | ||
benabik | Isn't there already a way to hide subs from the backtrace? Should eager, gimme, and reify use it? | 15:03 | |
masak | more behind-the-scenes fiddling of the kind that Carp performs to make things look very natural and effortless, is needed. | ||
maybe we could even take a leaf from Carp. | 15:04 | ||
moritz | I've experimented with showing only routines | ||
and also with filtering out any backtrace lines from CORE.setting | 15:05 | ||
the problem with that is that it makes errors thrown from lazy lists nearly impossible to track down | |||
consider sub generate { 1, 2, &generator ... * }; ... ; for generate() { } | 15:07 | ||
now if &generator dies, sub generate doesn't appear in the call chain at all | |||
and that can easily go through several levels | 15:08 | ||
[Coke] | I had a similar issue today with niecza, a comparator threw an error, and all I got was this useless backtrace. | ||
moritz | and if &generator is a block not a routine, and you filter out all blocks, you have no idea where the error came from | 15:09 | |
[Coke] | (but, to crib from masak, let's fix the backtraces, not hide them ;) | ||
flussence | .oO( perl6 really needs Carp ) |
||
[Coke] | moritz: what about hiding all the intermediate blocks? | ||
(but not the root cause) | 15:10 | ||
moritz | [Coke]: that might be worth trying | 15:11 | |
15:11
snearch joined,
spine_ joined
|
|||
moritz | nom: sub f() { die "foo" }; sub g() { f}; try g; say $!.backtrace.concise | 15:12 | |
p6eval | nom 15dc12: OUTPUT« in sub f at /tmp/WAhGQx188q:1 in sub g at /tmp/WAhGQx188q:1» | ||
moritz | nom: sub f() { for 1..10 { die "foo" } }; sub g() {for 1..10 { f }}; try g; say $!.backtrace.concise | ||
p6eval | nom 15dc12: OUTPUT« in sub f at /tmp/zOlZtxO1zz:1 in sub g at /tmp/zOlZtxO1zz:1» | ||
[Coke] | anyone else having trouble with github? | 15:18 | |
15:18
am0c left
|
|||
[Coke] | twitter says yes. | 15:19 | |
moritz too | |||
and I just shut down my VPN because I thought it was to blame :-) | |||
[Coke] | back, it seems. | 15:20 | |
15:20
not_gerd joined
|
|||
not_gerd | hello, #perl6 | 15:20 | |
not_gerd broke github just now :( | |||
moritz | how? | ||
flussence | status.github.com/ | 15:21 | |
not_gerd | connection times out, and then even the webpage no longer worked... | ||
flussence: thanks... | 15:22 | ||
moritz | not_gerd: I kinda doubt it was your fault :-) | ||
not_gerd | well, the timeming did correspond pretty closely to my push ;) | ||
^timing | 15:23 | ||
moritz | correlation != causation | ||
frettled | moritz: that's the third time I've seen that used, or used that, today :D | 15:24 | |
masak | "Observation bias is very common -- I keep seeing it everywhere." | 15:25 | |
not_gerd | moritz: the egocentric in me disagrees - OF COURSE itwas me who broke it! | ||
15:25
wtw left
|
|||
moritz | not_gerd: conratulations, you are human :-) | 15:25 | |
masak | I knew it! | 15:26 | |
15:27
gfldex left,
kaare_ joined,
au is now known as au|to|pun,
au|to|pun is now known as au
|
|||
[Coke] | masak: www.smbc-comics.com/?id=2444 | 15:28 | |
masak | :) | ||
[Coke] | github++ (just used the report/fork/pull for great justice.) | 15:29 | |
not_gerd | jnthn: where would I get a class_handle from for use with attr_funcs->hint_for? | 15:31 | |
jnthn: alternatively, is there another way to identify attributes by numeric id? | |||
bbkr | can roles be composed into self (not class but object instance)? if I do "self does $some_role" then methods from role are not visible as self.name_of_method_from_role | 15:34 | |
this was legal syntax in pre-NOM era | 15:35 | ||
15:36
tokuhirom joined
15:38
kaleem left
|
|||
bbkr | rakudo: class A {}; my $a = A.new; $a.^does( role { method foo { say "OK"; } } ); $a.foo # this one also doesn't work | 15:40 | |
p6eval | rakudo 15dc12: OUTPUT«Method 'foo' not found for invocant of class 'A' in block <anon> at /tmp/UH9icljptM:1 in <anon> at /tmp/UH9icljptM:1» | ||
[Coke] | b: class A {}; my $a = A.new; $a.^does( role { method foo { say "OK"; } } ); $a.foo # this one also doesn't work | 15:41 | |
p6eval | b 1b7dd1: OUTPUT«Method 'foo' not found for invocant of class 'A' in main program body at line 22:/tmp/Olb85F3CJ_» | ||
not_gerd | nom: say (5 but role { method foo { 42 } }).foo | ||
p6eval | nom 15dc12: OUTPUT«42» | ||
bbkr | pre-NOM rakudo required ^compose on role, but I see that it's not longer needed | 15:42 | |
masak | no, .^compose is for classes, AFAIK. | 15:43 | |
jnthn | not_gerd: class_handle is just the type object of the class that defined the attribute | ||
No, that's the way you get the hints. | |||
15:43
Psyche^ joined
|
|||
jnthn | .^does is *asking* if a type does a role, not composing it :) | 15:44 | |
bbkr | maybe i will rephrase my question: how can I add method to object instance (not whole class)? | ||
15:44
kaleem joined
|
|||
jnthn | nom: class A { method foo() { self does role { method lol { 42 } } } }; my $x = A.new; $x.foo; $x.lol; | 15:45 | |
p6eval | nom 15dc12: ( no output ) | ||
jnthn | nom: class A { method foo() { self does role { method lol { 42 } } } }; my $x = A.new; $x.foo; say $x.lol; | ||
p6eval | nom 15dc12: OUTPUT«42» | ||
[Coke] | nom: class A { method foo() { self does role { method lol { 42 } } } }; my $x = A.new; $x.foo; say $x.lol; my $y = A.new; say $y.lol; | 15:46 | |
p6eval | nom 15dc12: OUTPUT«42Method 'lol' not found for invocant of class 'A' in block <anon> at /tmp/HioWPX7Kdt:1 in <anon> at /tmp/HioWPX7Kdt:1» | ||
[Coke] | (just to check the negative) | ||
jnthn | *nod* :) | ||
15:46
Patterner left,
Psyche^ is now known as Patterner
|
|||
dalek | kudo/nom: ef61a32 | moritz++ | src/core/Exception.pm: experiment a bit with backtrace printing inpsired by a discussion with masak++, [Coke]++ and a few others |
15:47 | |
tadzik | 'evening | ||
moritz | \o tadzik | 15:48 | |
masak | by my count, TimToady++ has sent 2499 individual emails to p6l since it was created. | 15:49 | |
tadzik | for a short while, I've actually considered reading the repo :) | 15:50 | |
bbkr | rakudo: class A { method foo() { my $r = role { }; $r.^add_method( "lol", method { 42 }); self does $r; }; }; my $x = A.new; $x.foo; $x.lol; | ||
p6eval | rakudo 15dc12: OUTPUT«Method 'lol' not found for invocant of class 'A+{<anon>}' in block <anon> at /tmp/y98T95Zpal:1 in <anon> at /tmp/y98T95Zpal:1» | ||
masak | tadzik: I plan to read through those emails. I wasn't paying attention in the early days, and I want to learn more about that time. | ||
bbkr | why above one does not work? is it illegal to add_method to roles? | 15:51 | |
moritz | bbkr: you never composed $r | ||
masak decommutes | |||
skids | nom: my subset foo of Int where { $^n % 2 }; my foo $i; my $j = 1; $i := $j; $i.say; $j = 2; $i.say; # and the spec says? | ||
p6eval | nom 15dc12: OUTPUT«12» | ||
bbkr | rakudo: class A { method foo() { my $r = role { }; $r.^add_method( "lol", method { 42 }); $r.^compose; self does $r; }; }; my $x = A.new; $x.foo; $x.lol; | 15:52 | |
p6eval | rakudo 15dc12: OUTPUT«Method 'lol' not found for invocant of class 'A+{<anon>}' in block <anon> at /tmp/fjJspmkBfw:1 in <anon> at /tmp/fjJspmkBfw:1» | ||
not_gerd will be back later with more questions about 6model... | |||
15:52
not_gerd left
|
|||
moritz | bbkr: also I'm not sure you're allowed to modify 'self' that way without marking it as 'rw' | 15:53 | |
rakudo: class A { method foo($self is rw:) { my $r = role { }; $r.^add_method( "lol", method { 42 }); $r.^compose; $self does $r } }; my $x = A.new; $x.foo; $x.lol | 15:54 | ||
TimToady | or 'copy' | ||
p6eval | rakudo 15dc12: OUTPUT«Method 'lol' not found for invocant of class 'A+{<anon>}' in block <anon> at /tmp/Ah0wrJNfwy:1 in <anon> at /tmp/Ah0wrJNfwy:1» | ||
moritz | hm | ||
15:54
uno_be left
|
|||
jnthn | It's because of a bug in how .^ is implemented, which is causing premature punning | 15:54 | |
If you write $r.HOW.add_method($r, ...) then it probably works out. | 15:55 | ||
TimToady | well, roles *are* supposed to be considered immutable, and the compiler is allowed to assume that immutable things don't change | ||
15:55
unobe joined
|
|||
moritz | rakudo: class A { method foo($self is rw:) { my $r = role { }; $r.add_method($r, "lol", method { 42 }); $r.compose($r); $self does $r } }; my $x = A.new; $x.foo; $x.lol | 15:55 | |
p6eval | rakudo 15dc12: OUTPUT«Method 'add_method' not found for invocant of class '<anon>' in <anon> at src/gen/Metamodel.pm:1160 in method foo at /tmp/OSkUKjKlSw:1 in block <anon> at /tmp/OSkUKjKlSw:1 in <anon> at /tmp/OSkUKjKlSw:1» | 15:56 | |
15:56
rsimoes joined
|
|||
jnthn | .HOW | 15:56 | |
moritz | rakudo: class A { method foo($self is rw:) { my $r = role { }; $r.HOW.add_method($r, "lol", method { 42 }); $r.HOW.compose($r); $self does $r } }; my $x = A.new; $x.foo; $x.lol | ||
p6eval | rakudo 15dc12: ( no output ) | ||
moritz | rakudo: class A { method foo($self is rw:) { my $r = role { }; $r.HOW.add_method($r, "lol", method { 42 }); $r.HOW.compose($r); $self does $r } }; my $x = A.new; $x.foo; say $x.lol | ||
p6eval | rakudo 15dc12: OUTPUT«42» | ||
moritz | the anser! | 15:57 | |
*answer | |||
bbkr thanks everyone and goes back to work on new shiny JSON::RPC for nom :) | 15:58 | ||
jnthn | TimToady: And probably does. I guess meta-programming is kinda an escape hatch. Though the MOP could still forbid modification after composition time. | ||
Which just means you gotta use the BEGIN escape hatch too :) | 15:59 | ||
TimToady | One life in the day of Ivan Denisovich was not worth very much, unless your name happened to be Josef... | 16:01 | |
bbkr | this role example by moritz works without compose too, i'm not sure what's the difference. | 16:03 | |
skids | .oO(perhaps a useful behavior for scenario I pasted above would be for subsets to validate constraints when they get, and so become lazily generated Failures if something has pulled the rug out from under them) |
||
jnthn | bbkr: Not very much in this particular case. | ||
moritz | the difference is that we generally require new type obejcts to be composed before you can use them reliably | 16:04 | |
16:04
colomon joined
|
|||
jnthn | But you should call compose after changes generally | 16:04 | |
16:04
colomon left
|
|||
jnthn | Because it's part of the protocol to do so :) | 16:04 | |
16:04
colomon joined
|
|||
jnthn | my work here is done | 16:07 | |
decommute \o/ & | |||
colomon | o/ | 16:09 | |
TimToady | Physicist: After the Big Rip, nothing will be left but the dark energy. Civilian: No matter! | 16:21 | |
araujo | :) | 16:22 | |
16:22
tokuhirom left
16:23
birdwindupbird left
|
|||
bbkr | how can I distinguish if I'm dealing with class definition or class instance? for example: my $x = Int; my $y = 33; - both returns Int() as .WHAT | 16:27 | |
colomon | niecza: my $x = Int; say $x.defined; my $y = 33; say $y.defined | 16:28 | |
p6eval | niecza v14-23-g0699296: OUTPUT«FalseTrue» | ||
PerlJam | bbkr: why do you need to? | 16:29 | |
16:34
kaleem left,
kaleem joined
|
|||
bbkr | PerlJam: I've noticed that "self" behaves in BUILD as class definition and in regular method as class instance. I just want to confirm my observations | 16:34 | |
PerlJam | ah | ||
16:35
kaleem left
16:36
kaleem joined
|
|||
TimToady | moritz, masak: I still think backtraces should go to a temporary disk file by default, with a link in the error message | 16:41 | |
PerlJam | It's too bad there isn't stdin, stdout, stderr, and stdbacktrace | 16:42 | |
[Coke] | -1 on leaving files lying about. (You may not even be able to) | ||
TimToady | in the old days, they saved your backtrace on disk--it was called "core" :) | ||
+1 on automatically cleaning up old ones | 16:43 | ||
or just overwriting the last one | |||
if the specified location is not writable, then of course you can put it somewhere else, up to and including on stderr | 16:44 | ||
if you write out enough info, you can start up Tardis on it :) | |||
PerlJam | perl6 --launch-debugger-on-error | 16:45 | |
TimToady | --checkpoint-on-error | ||
run the debugger later | |||
--hang-and-wait-for-network-connection-to-debugger :) | 16:47 | ||
moritz | perl6 --autodebug-for-me | ||
PerlJam | --ask-#perl6-for-help | ||
benabik | perl6 --dwim # you don't even have to pass the script name ;-) | ||
TimToady | putting the backtrack into a linkable location will make it easier to paste into a bug tracker, maybe | 16:48 | |
and you can automatically put all the other info that you wish you had about the configuration but people never think to add | 16:49 | ||
PerlJam | --create-nopaste-on-error | ||
that would make an interesting and useful module I think | |||
TimToady | SORRY, you divided by 0 there at line 42; backtrace on at http:gist.github.com/1234567 | 16:50 | |
bbkr | I found very weird bug when role methods are leaking to other object instances if composed in BUILD: | 16:51 | |
rakudo: class A { submethod BUILD (:$name){ my $r = role { }; $r.HOW.add_method( $r, $name, method { 42 }); self does $r; }; }; my $x = A.new(name=>"foo").foo; A.new(name=>"bar").foo; | |||
p6eval | rakudo ef61a3: ( no output ) | ||
16:51
wolfman2000 left
|
|||
TimToady | s/on at/at/ | 16:51 | |
bbkr | the second A instance should hot have foo method | ||
s/hot/not/ | 16:52 | ||
PerlJam | bbkr: bbkr: why not? | 16:54 | |
16:54
gfldex joined
|
|||
TimToady | [Coke]: in any case, in the Land of Perl, "it might not work" is considered a poor excuse for not trying | 16:55 | |
bbkr | PerlJam: compare with Coke's isolation example: | 16:57 | |
rakudo: class A { method foo() { self does role { method lol { 42 } } } }; my $x = A.new; $x.foo; say $x.lol; my $y = A.new; say $y.lol; | |||
p6eval | rakudo ef61a3: OUTPUT«42Method 'lol' not found for invocant of class 'A'» | ||
TimToady | punishing the innocent with the guilty is more a hallmark of the Turing Tarpit languages... | 16:58 | |
colomon: I note that Unicode has special glyphs for Bag ops | 17:00 | ||
bbkr | PerlJam: in my example both object instances of A class have different roles applied, one object instance should not see methods from role composed into other instance | ||
TimToady | .u ⊍⊎ | ||
phenny | U+228D MULTISET MULTIPLICATION (⊍) | ||
U+228E MULTISET UNION (⊎) | |||
colomon | TimToady: oh my.... | ||
TimToady | $set1 ⊎ $set2 makes some sense | 17:01 | |
17:01
pernatiy left
|
|||
TimToady | since ordinary union would remove dups and return a set instead | 17:01 | |
also, you get <a b b c> ⊎ <c a b> for free | 17:02 | ||
.u ⊌ | |||
phenny | U+228C MULTISET (⊌) | ||
TimToady | not sure howyou're supposed to use that one... | 17:03 | |
moritz | fsvo free | ||
TimToady | well, fits in with the coercing operator heritage quite nicely | ||
Google: Your search - ⊌ - did not match any documents. | 17:04 | ||
PerlJam | In my font that character kind of looks like the Transformers icon | ||
moritz | it's only used in undocuments | 17:05 | |
TimToady | I guess that's supposed to be a left arrow inside, so maybe it's an assignop | ||
17:08
MayDaniel joined
|
|||
sorear | good * #perl6 | 17:13 | |
17:14
not_gerd joined
|
|||
moritz | }o{ | 17:16 | |
not_gerd | moritz: I spot two guys using their noses to balance a ball between their faces | 17:19 | |
17:19
not_gerd left
17:20
not_gerd joined
|
|||
moritz | not_gerd: my ears are just over-sized and curly :-) | 17:21 | |
cognominal_ | ...better than to balance a face between their balls. | 17:23 | |
tadzik | ohh | ||
cognominal_ | sorry I could not resist | 17:24 | |
tadzik | :) | ||
leontopod | how many operators does Perl 6 have now? | ||
benabik | All of them. | ||
leontopod | hundreds? | ||
tadzik | more like dozens, I guess | ||
perlcabal.org/syn/S03.html may help you counting | |||
leontopod | There is a Perl 6 Periodic Table of Operators | 17:25 | |
I should google image search that | |||
cognominal_ | ho, I did not even read last Larry Wall posts, but reading its unicode strings, there is some Jungian synchronicity with my joke. | 17:29 | |
moritz | $ ack -ho '(in|pre|post)(circum)?fix:<[^>]+>' src/core/ |sort -u|wc -l | 17:33 | |
89 | |||
of course that's just a rough estimate | 17:34 | ||
so O(100) | |||
sorear | #phasers in -6 !!! | 17:36 | |
leontopod: Infinitely many, since we have productive families of operators. :) | 17:37 | ||
although there's not a lot of point to RRRRRRRRRRR+ | |||
17:50
spine_ left
17:51
kaleem left
17:53
zby_home joined
17:54
mj41 left
|
|||
skids | leontopod: www.perlfoundation.org/perl6/index.cgi?witch | 17:58 | |
18:03
bluescreen10 left
18:04
leprevost joined
18:05
dakkar left
|
|||
dalek | ecs: 815b7bf | larry++ | S32-setting-library/Exception.pod: Fossil found by JimmyZ++ |
18:11 | |
[Coke] | TimToady: (no excuse) fair enough. Also, I program in cold fusion for a living, you probably want to avoid taking clues from my preferences. ;) | 18:15 | |
18:18
bluescreen10 joined
|
|||
sorear | heh. I forgot that I gave masak a commit bit. | 18:20 | |
18:23
daxim left
|
|||
[Coke] reads a presentation with the text: 30-second snapshots in IPv4 Hilbert-curve space | 18:27 | ||
sorear | mmm Hilbert curves. | 18:28 | |
[Coke] | www.nanog.org/meetings/nanog54/pres.../Cowie.pdf for sorear. | 18:29 | |
sorear | "7 November 2012" on p.3 | 18:30 | |
18:33
fasad left
18:35
Patterner left,
abercrombie left,
benabik left
|
|||
PerlJam | presentations from the future have got to be useful for something. | 18:35 | |
sorear | fascinating | 18:41 | |
dalek | kudo/usage-prints-WHY: 0683298 | moritz++ | src/ (2 files): more typed exceptions |
||
rakudo/usage-prints-WHY: 5fcfed5 | moritz++ | src/Perl6/Actions.pm: | |||
rakudo/usage-prints-WHY: fix thinko | |||
18:41
dalek left,
dalek joined
|
|||
dalek | kudo/nom: 2251cbb | tadzik++ | src/core/Main.pm: Make default USAGE print .WHY for the documented candidates |
18:41 | |
18:41
ChanServ sets mode: +v dalek
18:42
mj41 joined,
benabik joined
18:43
Patterner joined,
abercrombie joined
18:50
Khisanth left
18:55
ajox joined
|
|||
leontopod | so the goal of Perl 6 has now to become the ultimate computer language that ever was? | 18:55 | |
so the goal of Perl 6 has now to become the most ultimate computer language that ever was? | 18:56 | ||
colomon | what do you mean, "has now to become"? That was the goal from day one... | ||
leontopod | I should say | ||
PerlJam | leontopod: "ever will be" | ||
leontopod | ok! =D | ||
skids | Anything better won't be a "language" :-) | ||
leontopod | hey, question, can you compile perl 6 code into a standalone executable? | ||
PerlJam | leontopod: yesish | ||
moritz | noish :-) | 18:57 | |
leontopod | baw | ||
PerlJam | leontopod: you can see we're conflicted about it ;) | ||
leontopod | I guess by the time there is a definitive Version 1 of Perl 6 | 18:58 | |
computers will be so fast it won't matter | |||
masak | I don't think that's so. | ||
PerlJam | leontopod: We're already at the "it doesn't matter" point if you ask me. | ||
masak | we'd still be too slow if we didn't do anything about it if you ask me. | ||
moritz | rakudo supported creating "fakexecutables" some time ago, but it wasn't exactly "standalone" | ||
masak | as you can see, we're conflicted about the speed, too ;) | 18:59 | |
Su-Shee | I suggest changing the motto "there's more than one way to do it" into "there's a different perl 6 for everyone in it" ;) | 19:00 | |
PerlJam | We're always "too slow" (if we thought otherwise, we'd stop making improvments and Perl would be dead :) | ||
masak | early in Java's life, it was criticised for being too slow. early in Ruby's like, *it* was criticised for being too slow. | ||
both have gotten big improvements over the years. | |||
19:01
birdwindupbird joined
|
|||
masak | but you've got to "make it run" and "make it right" before you "make it fast" :) | 19:01 | |
PerlJam | yeah, "get it right, then make i .... blah! | ||
What masak said :) | |||
(no one is conflicted about that) | 19:02 | ||
19:03
ab5tract left
|
|||
masak | leontopod: speaking from my own experience, Perl 6 is already a power tool in many regards. there are missing pieces, bugs, and places where it just doesn't perform well yet. it's a matter of getting to know and work with the things we have already. | 19:04 | |
if you can do that, Perl 6 is a really cool language to use, already today. | |||
PerlJam | Indeed. | 19:05 | |
masak | if you're more bothered by the deficiencies than with the features, then maybe in a year we'll serve your needs :) | ||
or two years. we're working on it constantly. | |||
or five years. | |||
Perl 6 was ready for me four years ago. | |||
PerlJam | I was playing with it yesterday and though the startup time was still a little slow, I was marveling at how quick execution time was and how expressive the code was. | 19:06 | |
it == Rakudo | |||
and Niecza is even faster than Rakudo for most (all?) things | |||
masak | yeah, I get that feeling of awe all the time nowadays. | ||
it's like, "wow, I'm actually writing this in Perl 6, and when I try to run it, it actually runs!" :D | |||
19:07
spine joined
19:08
Khisanth joined
|
|||
masak | today I showed a colleage 'sub postfix:<!>($N) { [*] 2..$N }; say 5!'. and I explained that that introduces an operator into the local language. | 19:08 | |
when he grokked it, he was impressed. | |||
PerlJam | moreover, it's "I'm writing this in Perl 6 and it's not even a smallish subset because of a crippled compiler" | ||
masak | his next reaction was "won't that screw it up for everybody?" and I said "well no, we've thought of ways to isolate it" | 19:09 | |
PerlJam | I'm mildly surprised that no one has written a "Math::Ops" module or something that gives us all of the standard notations that aren't built into Perl 6, but are used by mathematicians. | 19:10 | |
(I would have expected colomon or so to have done that already :) | |||
19:10
trey__ joined
|
|||
benabik | sub infix:<±>( $n, $e ) { ($n-e)..($n+e) } | 19:11 | |
That's a _lot_ of ground to cover, really... | |||
19:11
trey__ is now known as yertalert
|
|||
benabik | And different branches of math use different notation... | 19:11 | |
colomon | It is indeed somewhat surprising that the colomon of 2009 didn't try doing exactly late.... | ||
benabik | But I expect the Math::* modules to have a lot of use. | ||
PerlJam | I'm not saying it would have been perfect or complete, just that I'm surprised it doesn't exist yeet :) | 19:12 | |
s/yeet/yet/ | |||
colomon | s/late/that/ | ||
timotimo | i'm pretty sure you want to treat ± on a symbolic level | ||
19:12
leprevost left
|
|||
PerlJam | timotimo: what does that mean? | 19:13 | |
not_gerd | +/- is more of a junction-ish thing | ||
you don't want the range, but both values... | |||
timotimo | well, can you multiply ranges with one another? | 19:14 | |
colomon | no | ||
PerlJam | not yet! :) | ||
timotimo | (1 ± 5) * (1 ± 5) what's that? | ||
[Coke] | niecza: sub infix:<±>( $n, $e ) { ($n-e)..($n+e) } ; say 100±10 ~~ 95 | ||
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Variable $n-e is not predeclared at /tmp/NXXLfkTcaz line 1:------> sub infix:<±>( $n, $e ) { (⏏$n-e)..($n+e) } ; say 100±10 ~~ 95Potential difficulties: $e is declared but not used at /tmp/NXXLfkTcaz … | ||
PerlJam | but, as long as you're writing the ± op, you can add those other semantics too | ||
[Coke] | niecza: sub infix:<±>( $n, $e ) { ($n-$e)..($n+$e) } ; say 100±10 ~~ 95 | ||
timotimo | yeah, missing two $ | ||
p6eval | niecza v14-23-g0699296: OUTPUT«False» | ||
tadzik | nom: (any(-2, 2) * any(-3, 3)).perl.say | ||
p6eval | nom 2251cb: OUTPUT«any(any(6, -6), any(-6, 6))» | ||
[Coke] | niecza: sub infix:<±>( $n, $e ) { ($n-e)..($n+e) } ; say 95 ~~ 100±10 | 19:15 | |
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Variable $n-e is not predeclared at /tmp/FZVk_FGMNL line 1:------> sub infix:<±>( $n, $e ) { (⏏$n-e)..($n+e) } ; say 95 ~~ 100±10Potential difficulties: $e is declared but not used at /tmp/FZVk_FGMNL … | ||
[Coke] | niecza: sub infix:<±>( $n, $e ) { ($n-$e)..($n+$e) } ; say 95 ~~ 100±10 #argh, copied wrong one. ;) | ||
p6eval | niecza v14-23-g0699296: OUTPUT«True» | ||
benabik | not_gerd: It can either be a junction or a range depending on where you see it. I'd probably make infix be a range (for error) and prefix be a junction. | 19:16 | |
masak | leontopod: now I backlogged over your "how many operators?" question. | 19:17 | |
PerlJam | timotimo: I don't think I know what that means in math-land, let alone perl 6. | ||
masak | leontopod: do you have the feeling that Perl 6 is perhaps a little overambitious sometimes? | ||
benabik still thinks the answer is "all of them". :-D | |||
leontopod | Yes, I have that feeling. | ||
masak | leontopod: I do, sometimes. there's a fine line between "ambitious" and "overambitious". | 19:18 | |
leontopod: I'd like for Perl 6 to be the former but not the latter. | |||
leontopod | Well, I think someone needs to put a foot down and say "let's get out a Version 1 for god's sake" | ||
masak | leontopod: many changes I made to the spec in 2011 were removals of things I considered to be overambitious. | ||
PerlJam | "overambitious" can only be determined after the fact really | ||
not_gerd | benabik: you have an example for the range use (not that I doubt you, I just can't think of one myself right now...) | ||
masak | leontopod: I agree -- we want to get something out. no-one is disputing that. | 19:19 | |
benabik | not_gerd: Error. 2 ± 0.5 generally means (1.5 .. 2.5), not any(1.5,2.5) | ||
masak | leontopod: there's nothing that will take us to such a point, though, except hard work on implementations, apps, tests, and spec. | ||
colomon | benabik: actually, I'd say both interpretations are common, in different settings. | 19:20 | |
mathematical notion is very flexible... | |||
tadzik | so it's really prefix vs infix | ||
benabik | colomon: Fair enough. | ||
leontopod | Perl 6 should include postfix | ||
PerlJam | colomon: really? I *always* use ± in the sense of a range | ||
masak | leontopod: some people got tired of "waiting for Perl 6" in 2002. some gave up in 2004. some lost hope in 2008. you see here the rest of us, working towards the goal still. | ||
colomon | PerlJam: think of the standard way of writing the quadratic equation... | 19:21 | |
[Coke] | leontopod: it does. | ||
PerlJam | colomon: oh. good point. | ||
masak | leontopod: do you mean it should include postfix:<!> ? | ||
leontopod | yikes! | ||
benabik | We could assign range to ± and junction to ∓ just to confuse people. | ||
PerlJam | colomon: though I *never* use it that way in practice. | ||
masak | nom: sub postfix:<!>($N) { [*] 1..$N }; say 5! | ||
p6eval | nom 2251cb: OUTPUT«120» | ||
masak | nom: say 5! | ||
p6eval | nom 2251cb: OUTPUT«===SORRY!===Confusedat /tmp/WKm0A8PqfU:1» | ||
masak | leontopod: see? :) | ||
leontopod | wow! | ||
[Coke] | niecza: sub postfix:<!> { say "$_, and I MEAN IT!" }; "eek"! | ||
not_gerd | benabik: thanks | 19:22 | |
p6eval | niecza v14-23-g0699296: OUTPUT«eek, and I MEAN IT!» | ||
masak | leontopod: I'm telling you! :) | ||
leontopod | Perl 6 is going to do EVERYTHING! | ||
masak | only in a Turing-complete sense. | ||
tadzik | for the predefined value of Everything | ||
benabik | Of course, it's turi- Oh | ||
PerlJam | leontopod: is it going to solve the halting problem? | ||
leontopod: is it going to make my breakfast? | |||
masak | PerlJam: I don't think you heard the man. EVERYTHING. | ||
leontopod | this is Perl 6: | ||
1.bp.blogspot.com/_VY9lef3Ripw/RvFR...yKnife.jpg | |||
masak | no, that's Perl 5. :P | 19:23 | |
benabik | (re: making breakfast) I don't think any perl6 is going to be small enough to fit in an Arduino any time soon. | ||
PerlJam | leontopod: the perl 6 version of that utilizes 4 dimensional space so that it can still fit in your pocket | ||
masak | PerlJam: you just made it one of my life goals to have Perl 6 make me breakfast. | ||
gfldex | nom: multi quicksort([]) { () }; multi quicksort([$pivot, *@rest]) {my @before := @rest.grep(* before $pivot); my @after := @rest.grep(* !before $pivot); (quicksort(@before), $pivot, quicksort(@after)) }; quicksort((1..10).pick(10)); | ||
p6eval | nom 2251cb: ( no output ) | ||
gfldex | nom: multi quicksort([]) { () }; multi quicksort([$pivot, *@rest]) {my @before := @rest.grep(* before $pivot); my @after := @rest.grep(* !before $pivot); (quicksort(@before), $pivot, quicksort(@after)) }; say quicksort((1..10).pick(10)); | 19:24 | |
masak | gfldex: 'say' | ||
p6eval | nom 2251cb: OUTPUT« 1 2 3 4 5 6 7 8 9 10 » | ||
gfldex | nom: multi quicksort([]) { () }; multi quicksort([$pivot, *@rest]) {my @before := @rest.grep(* before $pivot); my @after := @rest.grep(* !before $pivot); (quicksort(@before), $pivot, quicksort(@after)) }; say quicksort((1..10).pick(10)).perl; | ||
p6eval | nom 2251cb: OUTPUT«((((), 1, ()), 2, (((), 3, ()), 4, ((), 5, ((), 6, ())))), 7, ((), 8, (((), 9, ()), 10, ())))» | ||
PerlJam | benabik: progress is made by unreasonable men. See masak :-) | ||
skids | .oO(might fit in a giant mesh of arduinos. Mmm. Cloud-cased strudel.) |
||
benabik | masak++ | ||
skids | erm based | ||
colomon | aaiiigggghhhh! I've got a $work test failure which only happens when I run my *entire* (6516 test) test suite; run the test in isolation or in a smaller group of tests, and it works fine. :\ | 19:25 | |
gfldex | niecza: multi quicksort([]) { () }; multi quicksort([$pivot, *@rest]) {my @before := @rest.grep(* before $pivot); my @after := @rest.grep(* !before $pivot); (quicksort(@before), $pivot, quicksort(@after)) }; say quicksort((1..10).pick(10)).perl; | ||
PerlJam | cloud-cased ... is that like encased in a cloud (or whipped cream or icing?) | ||
p6eval | niecza v14-23-g0699296: OUTPUT«(((((), 1, ()), 2, ()), 3, ((), 4, ())), 5, ((((), 6, ()), 7, (((), 8, ()), 9, ())), 10, ()))» | ||
PerlJam | or is cloud-cased related to upper/lower/title casing ? | ||
:) | |||
gfldex | nom: multi quicksort([]) { () }; multi quicksort([$pivot, *@rest]) {my @before := @rest.grep(* before $pivot); my @after := @rest.grep(* !before $pivot); (quicksort(@before), $pivot, quicksort(@after)).flat }; say quicksort((1..10).pick(10)).perl; | 19:26 | |
p6eval | nom 2251cb: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list» | ||
gfldex | that added .flat removes the problem of added LoL but it would break sorting of LoLs | ||
that's from rosettacode btw | |||
skids | Cloud casing is when you consult a server on the Internet to determine the proper capitalization. What they don't tell you is it actually links to a sweatshop full of destitute literature majors. | 19:27 | |
PerlJam | skids: that's how dictionaries are maintained too. | ||
TimToady | Perl 6 is the whole darn Swiss Army | 19:29 | |
leontopod | uhm, the bot output is not rendering on xchat | ||
gfldex | One language to rule them all! | ||
benabik | leontopod: Perhaps chat isn't handling UTF8 properly? | 19:30 | |
leontopod | do I need a different font? | ||
not completely rendering that is | |||
ah, probably | |||
benabik | It uses Unicode to show a N/L symbol for newline | ||
gfldex | or the font is missing fancy chars | ||
masak | more likely that. | 19:32 | |
leontopod: does this render as one character for you: ☺ | 19:33 | ||
leontopod | nope | ||
TimToady | if it comes out with lots of characters like  then it is probably a UTF-8 issue | ||
masak | s:2nd/':'/?/ | ||
leontopod | renders as three characters | ||
masak | leontopod: then you need to set your encoding in xchat. | ||
leontopod | oh! | ||
masak | which will probably fix it. | ||
"please adjust your set" :) | 19:34 | ||
leontopod | haha | ||
TimToady | irclog.perlgeek.de/perl6/2012-02-08 will show you approximately what it should look like, assuming your browser is newish | 19:35 | |
thought the irclog still screws up ANSI colors regularaly | 19:36 | ||
masak | leontopod: if you look at snippets of Perl 6 from 2003, they look a lot like Perl 5. since then, Perl 6 has become its own language, and we believe it's matured into something that we're more happy about delivering than what we had then. | ||
TimToady | and in the meanwhile we discovered a lot of bad decisions in the early design, and fixed 'em | 19:37 | |
leontopod | ok masak, so Perl 6 uses funky characters | ||
PerlJam | meanwhile Perl 5 stole some of our bad design decisions :( | ||
leontopod | is there going to be a Perl 6 keyboard? | 19:38 | |
TimToady | s/stole/cargo culted/ | ||
masak | leontopod: there are always ASCII replacements for the funky Unicode characters. | ||
[Coke] | p5p subject: Stealing stackable modifiers from Perl 6 | ||
leontopod | a Perl 6 keyboard would be neat | ||
just like there used to be APL keyboards | |||
masak | leontopod: like » can be written as >> | ||
TimToady | just define a Compose key, and you'll have most of it | ||
benabik | in Vim: help digraphs | 19:39 | |
masak | leontopod: what TimToady said. good editors give you... what benabik said. or keyboard layouts. | ||
benabik | CAn't help with other editors, as I never use 'em. :-) | ||
flussence | altgr+zx is «» on my standard GB qwerty keyboard | ||
TimToady | under gnome, you've got CTRL/SHIFT-u 263a and such | ||
masak | Emacs have an input system called LEIM, but it's all but lame. | ||
benabik | Macs have lots of interesting characters hidden behind the option key. | ||
masak | has* | ||
yertalert | ☺ | 19:40 | |
oooo, shiny | |||
PerlJam likes remapping the "windows key" on his keyboards that have them. | |||
masak | benabik: and Mac OS X has an excellent choice of keyboard layouts, too. | ||
yertalert: hi! | |||
yertalert | masak: Hello | ||
TimToady | and if I were doing set theory, I'd probably figure out the hex codes for ∪ and ∩ pretty soon | 19:41 | |
you can also cut and paste from something that will show the character | |||
.u intersection | |||
phenny | U+2229 INTERSECTION (∩) | ||
TimToady | .u smiling | 19:42 | |
phenny | U+263A WHITE SMILING FACE (☺) | ||
awwaiid | though I think that the "length" of a character as far as huffman encoding common things goes should be measured in keypresses :) | ||
masak | leontopod: if you're interested, compare the code at the bottom of dev.perl.org/perl6/doc/design/exe/E02.html (from 2001) with the modern gist.github.com/294621 | ||
TimToady | awwaiid: except that a program is read many more times than it is written, normally, so you should optimize for visual length really | 19:43 | |
awwaiid | TimToady, how about an average between the two? | ||
yertalert | I suspect people will copy and paste a lot of these symbols | ||
masak | leontopod: and here's the post I wrote about it: strangelyconsistent.org/blog/blast-...e-past-e02 | ||
yertalert: I suspect so too. but I won't. | |||
TimToady | as soon as you have one in your program, you can usually copy it around elsewhere in your program too | 19:44 | |
I use yl all the time in vim to hank a character under the cursor to put it somewhere else | |||
awwaiid | I try to _not_ copy/paste any code :) | ||
but yeah... I do use tab-complete to have readable names | 19:45 | ||
yertalert | copy/pasting code it dangerous | ||
awwaiid | and not have to re-type them | ||
TimToady | there's also some kind of super compose file outer there somewhere that has mnemonic compose sequences for most of the math chars | ||
PerlJam | awwaiid: that's an acceptable form of code reuse provided it is done judiciously | ||
TimToady | *out there | ||
19:45
MayDaniel left
|
|||
awwaiid | wherefore optimizing for readability | 19:45 | |
masak | awwaiid: copy/pasting code has its uses. but it's good to go through a phase of utterly despising it first ;) | ||
awwaiid | but tab complete is actually _less_ characters than the original typing. though I guess some copy/paste would be too | ||
PerlJam | yertalert: copying code without understanding it can be dangerous, true | ||
TimToady | tab completion can, of course, install bugs too if it picks the wrong name | 19:46 | |
masak | awwaiid: denormalizing/duplicating data has its uses, too. | ||
awwaiid | pft. copy paste is lame. s/// + eval is the way to go. | ||
masak | :P | ||
awwaiid: I find that the more I use vim, the more I make use of mark-some-text, call-out-to-a-shell-command. | 19:47 | ||
awwaiid | yeah | ||
masak | (which replaces the selection with the output of the command.) | ||
yertalert | PerlJam: Even if you do understand it, a wrong function call here, an out of scope variable there | ||
awwaiid | the other day I wanted to output two different bits to temp files and diff them, so did :!cat > out1.txt and :!cat > out2.txt ... and then had to undo because it replaced my text with nothing :) | ||
TimToady still wants an anthy-like input method for unicode | |||
awwaiid | anyway | 19:48 | |
PerlJam | awwaiid: you forgot to use tee | ||
awwaiid | doesn't matter | ||
because I can do >> or » and they'll both work | |||
and I can teach vim to do whatever I want | |||
TimToady | niecza: say <a b c> ∩ <b c d> | 19:49 | |
awwaiid | as far as minimizing keystrokes goes, that is | ||
p6eval | niecza v14-23-g0699296: OUTPUT«===SORRY!===Confused at /tmp/cdUqfeaedf line 1:------> say <a b c> ⏏∩ <b c d>Parse failed» | ||
benabik | awwaiid: Yank them into two different buffers and use :diffthis? :-) | ||
awwaiid | benabik, now we're talkin :) | ||
19:49
bbkr1 joined
|
|||
eviltwin_b assumes that was supposed to be !! not :! | 19:51 | ||
leontopod | masak, so where exactly do you see Perl 6 going? | ||
eviltwin_b | (or maybe vim is broken) | ||
masak | leontopod: a good question. | ||
PerlJam | leontopod: everywhere! | ||
:) | |||
masak | leontopod: I don't see it taking over the world, or even replacing Perl 5. | ||
colomon | TimToady: I promise I'll let you know what I get around to making your Set operators work. ;) | ||
bbkr1 | rakudo: sub foo { return role { method foo {42};} }; foo().WHERE.say; foo().WHERE.say; # can someone please explain why do I get the same role? | ||
p6eval | rakudo 2251cb: OUTPUT«-7393211224278785710-7393211224278785710» | ||
19:52
Bucciarati left
|
|||
masak | leontopod: it will become a language for people who enjoy programming, and enjoy having a powerful medium of expressing solutions to problems. | 19:52 | |
leontopod | <== Teratogen, btw | ||
hi PerlJam! | |||
masak | oh! Teratogen! | ||
leontopod | yes, it's me | ||
PerlJam | leontopod: why the name change? | ||
leontopod | I'm still alive! | ||
masak | welcome back :) | ||
leontopod | oh | ||
19:52
leontopod is now known as Teratogen
19:53
Teratogen left,
Teratogen joined
|
|||
benabik | eviltwin_b: If you type ":!blah" while a block of text is highlighted (with vap, for instance), Vim will automatically add the '<,'> to the command. | 19:53 | |
19:53
Teratogen left
|
|||
eviltwin_b | ah. I don't generally use the visual block stuff | 19:53 | |
benabik | I use it a fair amount, especially with the shell command... :'<,'>!sort is very useful sometimes. | 19:54 | |
PerlJam | vi(m) has many features that are plain awesome if people would play with them more. | 19:55 | |
benabik discovers :sort | |||
masak | can someone please unban poor Teratogen? :) | 19:56 | |
I don't remember the syntax for doing it offhand. | |||
flussence | mode -b something something | ||
masak | sorear: can you do it? | ||
19:57
Bucciarati joined
|
|||
flussence | .oO( the IRC protocol isn't very well designed for text commands... ) |
19:57 | |
20:01
MayDaniel joined,
ChanServ sets mode: +o moritz,
moritz sets mode: -b *!*leontopod@unaffiliated/teratogen,
moritz sets mode: -o moritz
|
|||
masak | moritz++ | 20:02 | |
moritz | fwiw the commands I used where '/ban' to get the list of bans, and then '/unban *!*leontopod@unaffiliated/teratogen' | 20:03 | |
masak | ossum. | 20:05 | |
20:05
thou joined
20:09
ChanServ sets mode: +o masak,
ChanServ sets mode: -o masak
|
|||
masak | I see. | 20:09 | |
20:15
hundskatt joined
|
|||
colomon now suspects he's running out of filehandles in Windows.... | 20:17 | ||
masak | nom: my %en2swe = <dog hund tax skatt>; say %en2swe<dog tax>.join | 20:18 | |
p6eval | nom 2251cb: OUTPUT«hundskatt» | ||
masak | :) | 20:19 | |
tadzik | :) | ||
masak | Podatek od posiadania psa. | 20:23 | |
tadzik | istotnie | 20:24 | |
psodatek :) | |||
masak | really? I pasted from Wikipedia... | 20:26 | |
20:26
MayDaniel left
|
|||
masak | oh, it's a pun? I see. | 20:26 | |
benabik | And wikipedia is never wrong. :-D | ||
masak is slow | |||
tadzik++ | |||
in retrospect, I'm rather glad it took me a minute rather than a day to get that one :) | 20:27 | ||
tadzik | :P | ||
PerlJam | but now you've deprived yourself from a random pleasant surprise in your future. | 20:28 | |
s/from/of/ | |||
tadzik | masak: you can also get kotodatek or whatever :) | ||
well, I'm pushing it now ;) | |||
20:28
birdwindupbird left
20:35
cooper joined
|
|||
masak | clearly. :) | 20:38 | |
PerlJam: that's fine, random pleasant surprises in my future seem to replenish themselves automatically. | 20:39 | ||
bbkr1 | ehh, I give up. after 2 hours I still cannot find how to create role object. "my $r = role{ }" is not the same as good old "$r =RoleHOW.new", because it binds role to namespace - for example "sub x { return role { } }" returns always the same object in memory. | 20:51 | |
[Coke] | KOTO DALEK | ||
moritz | nom: sub x { return role { } }; say x() === x() | 20:52 | |
p6eval | nom 2251cb: OUTPUT«True» | ||
20:54
y3llow left,
y3llow joined
|
|||
benabik | nom: sub x { return RoleHow.new }; say x() === x() | 20:55 | |
p6eval | nom 2251cb: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&RoleHow' called (line 1)» | ||
masak | bbkr1: I would expect it to, I think. | ||
benabik | nom: sub x { return RoleHOW.new }; say x() === x() | ||
p6eval | nom 2251cb: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&RoleHOW' called (line 1)» | ||
masak | bbkr1: if you declare it syntactically like that, it's the same role. | ||
20:55
leontopod joined
|
|||
[Coke] | . o O (Great, now I'm hearing all the uppercase messages from perl6 in the DALEK VOICE) | 20:56 | |
moritz | nom: say Numeric.HOW.new() | ||
p6eval | nom 2251cb: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'» | ||
20:56
y3llow left
|
|||
bbkr1 | masak: true, same as "sub foo { return class A {} }". but at the same time RoleHOW is not accessible from user level, so any role created is always syntatically bound | 20:57 | |
20:57
y3llow joined
|
|||
moritz | bbkr1: if you have one role, you can ask it for its .HOW | 20:57 | |
20:58
abercrombie left
|
|||
moritz | bbkr1: what are you trying to achieve in the end? | 20:58 | |
20:59
y3llow left
|
|||
bbkr1 | make this work on NOM. github.com/bbkr/jsonrpc/blob/maste....pm#L20-30 - this is CANDO workaround. | 21:00 | |
21:00
y3llow joined
|
|||
moritz | maybe you want .^add_fallback instead? | 21:02 | |
21:02
y3llow left,
y3llow joined
|
|||
masak | sounds like it. | 21:02 | |
bbkr1 | does fallback knows name of the method that was called and not found? | 21:03 | |
bbkr1 has to experiment with this | |||
PerlJam is reminded that the MOP needs documenting. | 21:04 | ||
moritz | bbkr1: I think so | ||
21:04
y3llow left
|
|||
moritz | yes, it takes two closures | 21:04 | |
21:05
y3llow joined
|
|||
moritz | &cond($obj, $name) must return True or False to indicate if it can handle the fallback | 21:05 | |
and &calc($obj, $name) should return the Code object to invoke | |||
21:07
y3llow left
21:08
y3llow joined
21:10
y3llow left
21:11
y3llow joined
21:12
ajox left
21:13
y3llow left,
y3llow joined
|
|||
bbkr1 | works! you are awesome... | 21:14 | |
21:15
y3llow left
21:16
y3llow joined
|
|||
bbkr1 | in fact this is much better than composing roles, because user doesn't have to know RPC method names up front | 21:16 | |
21:18
y3llow left,
y3llow joined
21:20
y3llow left
21:21
y3llow joined
21:23
y3llow left
21:24
y3llow joined
|
|||
not_gerd | phenny:, tell jnthn where does 6model keep the stable-pointer in case of flattening an attribute object? | 21:24 | |
phenny, tell jnthn where does 6model keep the stable-pointer in case of flattening an attribute object? | 21:25 | ||
phenny | not_gerd: I'll pass that on when jnthn is around. | ||
21:25
not_gerd left
21:26
y3llow left,
y3llow joined
21:28
y3llow left
21:29
y3llow joined
21:31
y3llow left,
y3llow joined
21:33
y3llow left
21:34
y3llow joined
21:36
y3llow left
21:37
y3llow joined
21:39
y3llow left
21:40
y3llow joined,
carlin joined
21:42
y3llow left,
y3llow joined
|
|||
jnthn home :) | 21:51 | ||
phenny | jnthn: 21:25Z <not_gerd> tell jnthn where does 6model keep the stable-pointer in case of flattening an attribute object? | ||
jnthn | phenny: tell not_gerd that's up to the REPR to do. See P6opaque - it keeps it around in its REPR_data. | ||
phenny | jnthn: I'll pass that on when not_gerd is around. | ||
21:53
skids left
22:04
bluescreen10 left
22:05
benabik_ joined
22:08
tarch joined
22:09
benabik left
22:10
benabik_ left
|
|||
flussence | hm, I want to mess around with reading keypresses directly on a terminal but $*IN is line-buffered. Any way to make it not do that? | 22:17 | |
22:23
kaare_ left
|
|||
jnthn | flussence: I'm guessing you're trying .getc and finding it line-buffered? | 22:24 | |
flussence | yep | ||
I've tried .read(1) too, same result | 22:25 | ||
I'm wondering if perl6 even has control over this kind of thing, it might be handled entirely by the terminal... | |||
22:25
tarch left
|
|||
tadzik | C has no control either, I think | 22:26 | |
some termcap/ncurses thing has, though | |||
eviltwin_b | stdio defaults to line buffering of terminals, use setvbuf() to change it. there is also tty-level control as well, stty -icanon vmin 1 vtime 0 | ||
(or tcsetattr()) | 22:27 | ||
I don't know how either of those maps to perl6 though | |||
tadzik | NativeCall to the rescue! | ||
flussence | ...but then I'd have to learn ncurses! :) | 22:29 | |
doy | Term::ReadKey is how it's done in perl 5 | 22:30 | |
22:30
awwaiid left
|
|||
doy | there's no standard interface to getting anything other than line-buffered data from stdin | 22:30 | |
tadzik | how about this setvbuf? | ||
22:30
awwaiid joined
|
|||
flussence | ooh, that looks interesting. | 22:31 | |
tadzik | even my K&R writes about it :) | ||
flussence | I guess the "right" way to do this is $*IN.autoflush(1), but that doesn't exist yet | 22:32 | |
doy | setvbuf isn't related | 22:35 | |
that's only dealing with the stdio buffers | |||
it doesn't affect the buffering that the terminal itself does | |||
there's two layers of buffering going on here | 22:36 | ||
dalek | ast: 8de5275 | jnthn++ | S04-declarations/constant.t: Fix a wonky test. |
||
doy | the stdio one is part of the c standard, but the terminal-level one isn't | ||
eviltwin_b | right. for th eother, if you don't want to deal with figuring out termios access, catch the output of "stty -g" to save terminal state, then run the stty command Igave above; invoke stty again with the saved output to reset the terminal | ||
(unix-specific; no idea how you deal on windows) | 22:37 | ||
doy | right | ||
22:46
spine left
22:49
leontopod is now known as Teratogen
22:56
tarch joined
22:57
snearch left
23:09
mj41 left
|
|||
[Coke] ponders turning masak's one off script into a module so it's easier to write tests for. | 23:11 | ||
23:17
yertalert left
|
|||
colomon | +1 | 23:17 | |
masak | 'night, #perl6 | 23:19 | |
23:19
sftp left
23:20
sftp joined
|
|||
dalek | kudo/stdinit: f3058c8 | jnthn++ | src/Perl6/Actions.pm: Small refactor to bind_op/assign_op to prepare for initializer changes. |
23:23 | |
kudo/stdinit: 95a255a | jnthn++ | src/Perl6/ (2 files): First round of changes to parse variable initializers as part of variable_declarator. Basically works, though doesn't yet handle the attribute initializer case yet. |
|||
jnthn | ...oops, English too hard after long day... | ||
23:25
skids joined
23:31
tarch left
23:33
yertalert joined
23:36
benabik joined
|
|||
dalek | kudo/stdinit: b0a9d14 | jnthn++ | src/Perl6/Actions.pm: Re-work attribute initializer handling, getting rid of the nasty action at a distance stuff. Also a bit more robust. |
23:37 | |
23:39
kst` joined,
PacoAir left
23:41
kst left
|
|||
jnthn | perl6: my $pair = 'foo' => 'bar'; say $pair.WHAT | 23:43 | |
p6eval | pugs b927740: OUTPUT«Pair» | ||
..rakudo 2251cb, niecza v14-23-g0699296: OUTPUT«Pair()» | |||
jnthn | perl6: sub x($a = 'foo' => 'bar') { say $a.WHAT }; x() | 23:46 | |
p6eval | pugs b927740: OUTPUT«Pair» | ||
..niecza v14-23-g0699296: OUTPUT«Pair()» | |||
..rakudo 2251cb: OUTPUT«===SORRY!===Malformed block at line 1, near "($a = 'foo"» | |||
jnthn | perl6: my $b; sub x($a = $b = 'bar') { say $a.WHAT }; x() | 23:47 | |
p6eval | rakudo 2251cb: OUTPUT«===SORRY!===Malformed block at line 1, near "($a = $b ="» | ||
..pugs b927740: OUTPUT«Str» | |||
..niecza v14-23-g0699296: OUTPUT«Str()» | |||
jnthn | pmichaud: ping? | ||
23:48
sftp left,
sftp joined
|