»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
00:04
spider-mario left
00:21
cognominal joined,
skids joined
00:26
frew joined
|
|||
TimToady | masak: your premise "expressions are the only things that can call macros" is a bit suspicious to me; I think any protoregex can dispatch to a macro defined in its slot, with the surrounding expectations maintained, since each such protoregex manages its own little lexer | 00:29 | |
and quasi interpolations can be handled much the same way, as little (presumably parameterless?) macro calls from the quasi parser | 00:31 | ||
for regex that are not proto, I think you have to rely on method shadowing, and fallback to the standard one if your special one doesn't match | 00:33 | ||
but most macros will want to fit into an existing grammatical category | 00:34 | ||
TimToady heading out to craigslist's (belated) holiday party, which got stormed in December... | 00:35 | ||
afk & | |||
adu | TimToady: what is the secret to Perl6 understanding? | 00:36 | |
Mouq | Zen & The Art of Perl6 Hacking | 00:37 | |
00:39
rurban left
|
|||
b2gills | adu: it may be too early yet for anyone to have figured it out completely | 00:40 | |
adu | b2gills: or maybe the answer is "42" | 00:41 | |
00:59
raiph joined
|
|||
b2gills | m: say "Life, the Universe, and Everything".WHY | 01:03 | |
camelia | rakudo-moar c5dcdf: OUTPUT«42» | ||
01:08
yeahnoob joined
01:15
tinyblak left
01:16
tinyblak joined
01:19
Mso150_p joined,
Mso150 left
01:20
tinyblak left
01:21
dayangkun joined,
dayangkun left
01:39
cognominal left
01:57
cognominal joined
02:07
cognominal left
02:16
BenGoldberg joined
02:19
cognominal joined
|
|||
dalek | p: 5bda620 | (Geoffrey Broadwell)++ | t/concurrency/02-lock.t: Remove LTA error comment since psch++ fixed the error |
02:22 | |
02:23
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
JimmyZ | .tell japhb I updated the pull request. | 02:29 | |
yoleaux | JimmyZ: I'll pass your message to japhb. | ||
japhb | JimmyZ: Ah, OK, I'll take a look | 02:38 | |
yoleaux | 02:29Z <JimmyZ> japhb: I updated the pull request. | ||
dalek | rl6-bench: d2f48ad | (Jimmy Zhuo)++ | / (6 files): Add Point class benchmark |
02:44 | |
rl6-bench: 90c07ed | (Jimmy Zhuo)++ | / (3 files): Update Point class benchmark, add multi method version for NQP, because it's 2x slow, but Perl 6 multi method version one is the same speed |
|||
rl6-bench: a2cd0bd | (Jimmy Zhuo)++ | / (9 files): adjust point-class-add* |
|||
rl6-bench: 25425c0 | japhb++ | / (9 files): Merge pull request #16 from zhuomingliang/master add point_class_add |
|||
02:49
andreoss joined
|
|||
andreoss | is there one more way to do "take while" than gather while ... { take }? | 02:51 | |
JimmyZ | @a = []; while ... { $a.push: ... } ? | 02:53 | |
s/$/@/ | |||
adu | oo | 02:54 | |
ppl | |||
or commits, I'm not quite sure | 02:55 | ||
02:56
dayangkun joined,
dayangkun left
|
|||
dalek | rl6-bench: 327272c | (Geoffrey Broadwell)++ | perl6/point_class_add_README: Clean up perl6/point_class_add_README |
03:08 | |
rl6-bench: b86885f | (Geoffrey Broadwell)++ | minibenchmarks.pl: Clean up point-class-add minibenchmarks.pl entry, and default to disabled until all variants are converted to SCALE |
|||
japhb | JimmyZ: I'll need to do a couple more commits before re-enabling the tests, but the above ought to reduce confusion a bit. Thank you for the PR! | 03:09 | |
adu | japhb: what's a PR? | 03:10 | |
andreoss | m: sub foo() { [1,2,3] }; my ($a,$b,$c) = foo(); say $b; | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Any)» | ||
japhb | Also, I note that there are some subtle differences between test files (like some using 'return' and others just dropping off the end of the method) | 03:11 | |
moritz | adu: pull request | ||
andreoss | how is such thing done? | ||
japhb | return actually has a significant performance effect, so that may be skewing results | ||
adu | ah | ||
japhb | moritz: thank you | ||
moritz | m: sub foo() { [1,2,3] }; my ($a,$b,$c) = foo().list; say $b; | ||
camelia | rakudo-moar c5dcdf: OUTPUT«2» | ||
adu | japhb: is return faster than progn? | 03:12 | |
japhb | return is slower | ||
adu | what?!? | ||
so progn is faster? | |||
japhb | Wait, 'progn', what is that? | ||
JimmyZ | japhb: Thanks :) | ||
japhb | I had mentally substituted the other thing I mentioned, which is falling off the end of the method | 03:13 | |
03:13
raiph left
|
|||
adu | www.lispworks.com/documentation/Hyp....htm#progn | 03:13 | |
andreoss | moritz: what if foo is gather? | ||
japhb | return is slower than falling off the end, because it is a "control exception". | ||
adu | japhb: "progn" is in my opinion the oldest name for "evaluate a bunch of statements, and then return an expression" | ||
japhb | adu: Yes, in those terms, progn is faster. | 03:14 | |
andreoss | m: sub foo() { [1,2,3] }; my ($a,$b,$c) <== foo(); say $b; | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Any)» | ||
moritz | m: my ($a, $b, $c) = gather { take [1, 2, 3] }.list; say $b | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Any)» | ||
adu | japhb: Scheme renamed Lisp's progn to begin | ||
andreoss | such syntax would be nice | ||
japhb hasn't seriously used Scheme since 1989, so is perhaps a bit out of practice. :-) | 03:15 | ||
adu | japhb: in GNU C it's called ({ a; b; c; }) | ||
moritz | m: sub foo() { [1,2,3] }; my ($a,$b,$c) <== foo().list; say $b | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Any)» | ||
adu | my point is: progn, begin, ({}), "falling off the end", it's all the same idea | 03:16 | |
japhb | Sure. It's not that I didn't understand the concept, I just didn't understand the LISP name for it. | ||
.oO( The name of a thing is not the thing .... ) |
03:17 | ||
adu | lol | ||
but Lisp and Scheme are really old | |||
japhb | So am I, but not as old as LISP. :-) | ||
adu | I've been a listener in debates over which is older | ||
moritz | defun! | ||
japhb | Note my habit of capitalizing LISP, heh. | 03:18 | |
adu | because the first Scheme impl was definitely after Lisp, but the Scheme papers were published before Lisp | ||
japhb shrugs ... his Scheme experience was a semester of SaIoCP | 03:19 | ||
In any case, if you look through the setting, you'll find lots of places where we intentionally end a function with an expression instead of a return statement. | 03:21 | ||
adu | makes sense | 03:22 | |
japhb | & # The bus. It stops. | 03:23 | |
adu | japhb: are you having a siesure? | 03:24 | |
03:27
gfldex left
|
|||
JimmyZ wonders when we need the 'return' keyword | 03:29 | ||
moritz | JimmyZ: for returning from inner constructs | 03:30 | |
JimmyZ | Is there a example code? | 03:31 | |
moritz | sub f(*@v) { for @v -> $x { return 2 * $x if $x > 10 }; 'no such vaule' } | ||
*value | |||
03:32
noganex joined,
BenGoldberg left
|
|||
JimmyZ | Is there a way to return from inner constructs without causing 'control exception'? | 03:33 | |
just like without the 'return | 03:35 | ||
' keyword in the bottom of sub | |||
03:35
noganex_ left,
araujo left
|
|||
moritz | well, with non-control exceptions | 03:35 | |
03:36
araujo joined
|
|||
JimmyZ | I mean just by using return op code | 03:38 | |
moritz | if the return opcode throws a control exception, why not? | 03:39 | |
JimmyZ | hmm, let's change the question: Is there a way to return without calling 'return' sub, like without 'return' sub in the bottom of a sub which returns a value without calling 'return' sub. | 03:41 | |
moritz | JimmyZ: I'm not aware of one | 03:43 | |
JimmyZ | like a sub returns a value in the bottom without calling 'return' sub | ||
03:55
cognominal left
03:58
cognominal joined
|
|||
moritz | JimmyZ: the problem is that for example 'for' executes its block through several layers of routines | 04:00 | |
JimmyZ: so the 'return' must traverse all the layers | |||
04:03
eternaley is now known as eternaleye
04:11
gfldex joined
04:14
sirdancealot joined
04:36
tinyblak joined
04:46
adu left
04:55
Rounin left
|
|||
JimmyZ | moritz: Thanks, I hope there will be a way that acts as the same as implicit return | 05:03 | |
andreoss | how to properly indent chained method calls? | 05:08 | |
$a.b.c.d.e(1) | |||
wow. it's backslash | 05:10 | ||
m: "hello".\ say; | 05:13 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«hello» | ||
05:15
andreoss left
05:18
yeahnoob left,
Mso150_p left
05:25
kaleem joined
05:28
yeahnoob joined
05:29
IllvilJa left
05:40
cognominal left
|
|||
JimmyZ | hmm, maybe it's an opitimization | 05:46 | |
05:49
IllvilJa joined
05:56
dj_goku_ left
06:01
bjz joined
06:02
adu joined
06:10
dj_goku joined
06:19
fwilson left
06:22
Mso150_p joined
06:23
yeahnoob left
06:45
fwilson joined
06:50
Rounin joined
06:56
xinming left,
yeahnoob joined,
yeahnoob left
06:57
yeahnoob joined
06:58
xinming joined
07:00
dj_goku left
07:05
dj_goku joined,
dj_goku left,
dj_goku joined,
jluis joined
07:11
Patterner joined
07:15
Psyche^ left
07:20
mr-foobar left
07:23
adu left
07:26
bjz left
|
|||
dalek | rl6-bench: c13ab05 | (Jimmy Zhuo)++ | perl6/point_class_add2: Fix P6opaque: no such attribute '$!x' |
07:33 | |
rl6-bench: bedc8ed | FROGGS++ | perl6/point_class_add2: Merge pull request #17 from zhuomingliang/master Fix P6opaque: no such attribute '$!x' |
|||
07:34
gfldex left
07:39
Mouq left
07:41
cognominal joined
07:49
tinyblak left,
tinyblak joined
07:51
tinyblak_ joined
07:54
tinyblak left
08:17
darutoko joined
08:27
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
08:28
zakharyas joined
08:30
tinyblak_ left
08:31
tinyblak joined,
virtualsue joined
08:33
telex left
08:34
telex joined
08:42
tinyblak left
08:43
tinyblak joined
08:47
tinyblak left
08:53
tinyblak joined
08:59
cognominal left
09:03
spider-mario joined
09:05
Ovid joined
09:06
Ovid is now known as Guest514,
Guest514 is now known as CurtisOvidPoe
|
|||
CurtisOvidPoe | Morning all. | 09:07 | |
raydiak | \o CurtisOvidPoe | ||
CurtisOvidPoe | \o? | ||
Ah, is that a wave? | |||
raydiak | aye | ||
CurtisOvidPoe | :) | ||
For string overloading, isn’t it supposed to be a simple matter of overloading the Str method? (perl6advent.wordpress.com/2009/12/...rloading/) | 09:08 | ||
raydiak | yes | ||
CurtisOvidPoe | I tried that, but I’m doing something wrong: gist.github.com/Ovid/a935ab3b93300d75d501 | 09:09 | |
psch | CurtisOvidPoe: &say calls .gist | 09:10 | |
m: class Foo { method Str { "foo" }; method gist { "bar" } }; say Foo.new | |||
camelia | rakudo-moar c5dcdf: OUTPUT«bar» | ||
psch | m: class Foo { method Str { "foo" }; method gist { "bar" } }; my $foo = Foo.new; say "$foo" | 09:11 | |
camelia | rakudo-moar c5dcdf: OUTPUT«foo» | ||
JimmyZ | 200~m: class Foo { method Str { "foo" }; method gist { "bar" } }; say~ Foo.new | 09:13 | |
m: class Foo { method Str { "foo" }; method gist { "bar" } }; say~ Foo.new | |||
psch | (or the other way around: &say doesn't force Str context) | ||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!=== Error while compiling /tmp/FUekCcopnBUnsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/FUekCcopnB:1------> { "foo" }; method gist { "bar" }…» | ||
09:13
rurban joined
|
|||
JimmyZ | m: class Foo { method Str { "foo" }; method gist { "bar" } }; say ~Foo.new | 09:13 | |
camelia | rakudo-moar c5dcdf: OUTPUT«foo» | ||
JimmyZ | m: class Foo { method Str { "foo" }; method gist { "bar" } }; say Foo.new | ||
camelia | rakudo-moar c5dcdf: OUTPUT«bar» | ||
raydiak | sometimes when I want to be able to say an object directly and get a string, I'll overload .gist to call .Str, too | 09:14 | |
JimmyZ | so you may want 'say ~$point' | 09:15 | |
raydiak | m: class Foo { method gist { .Str }; method Str { "foo" } }; say Foo.new # like that | ||
camelia | rakudo-moar c5dcdf: OUTPUT«» | ||
CurtisOvidPoe | Thanks all. | ||
raydiak | m: class Foo { method gist { self.Str }; method Str { "foo" } }; say Foo.new # like that | 09:16 | |
camelia | rakudo-moar c5dcdf: OUTPUT«foo» | ||
CurtisOvidPoe | Why is the output of my code then “[0,0]\nTrue”? | 09:17 | |
psch | S29:420 # "used as a last-ditch string coercion" i wonder if that means say should .Str first | ||
synopsebot | Link: perlcabal.org/syn/S29.html#line_420 | ||
psch | CurtisOvidPoe: say say ~$point | 09:18 | |
CurtisOvidPoe: in the paste at least :) | |||
raydiak | CurtisOvidPoe: iow Str should return the string, not print it out | ||
CurtisOvidPoe | Oh, duh! :) | 09:19 | |
raydiak | :) | ||
CurtisOvidPoe | I am a bear of little brain. | 09:20 | |
jnthn | github.com/perl6/specs/blob/master...ist-method may be a worthwhile read on the role of .gist | ||
CurtisOvidPoe | Thanks, jnthn. | 09:21 | |
09:26
kjs_ joined,
virtualsue left
09:27
rindolf joined
09:32
TuxCM left
09:36
yeahnoob left,
TuxCM joined,
cognominal joined
|
|||
mathw | morning | 09:38 | |
09:39
dakkar joined
|
|||
FROGGS_ | hi mathw | 09:44 | |
09:48
abraxxa joined
10:08
tinyblak left,
tinyblak joined
|
|||
nwc10 | 10:12 <@osfameron> does anyone fancy helping out with github.com/mysociety/hassleme ? | 10:15 | |
10:12 <@osfameron> but it's quite a fun project (written in old-fashioned, but I think relatively clean CGI Perl) | |||
10:13 <@Lee> oh, this could be a good candidate for a case study in converting CGI to something new(er) | |||
and, that's the on-topic bit :-) | |||
osfameron | ah... *that* much newer :D | ||
nwc10 | would anyone think it fun to convert something simple in Perl 5 to Perl 6? | 10:16 | |
10:16
virtualsue joined
|
|||
CurtisOvidPoe | Yeah, take a swing at DBIx::Class, please ;) | 10:17 | |
(er, but skip the whole inheritance bit, use roles internally, and have objects delegate to dbic6 rather than inherit. :) | |||
10:19
mvuets joined
|
|||
moritz | CurtisOvidPoe: you missed that "simple" part :-) | 10:21 | |
CurtisOvidPoe | :) | ||
nwc10 | "SMOP" has taught us that "simple" is now permitted to have various values. | 10:22 | |
10:22
sirdancealot left
|
|||
moritz | nwc10: the "S" in "SMOP" stood for "strategic", I believe :-) | 10:23 | |
FROGGS_ | the next thing I am (continuing) to work on is the port of XML::LibXML+XML::Compile... | 10:28 | |
(after testers.perl6.org hackery) | |||
10:28
tinyblak left
10:29
tinyblak joined
10:30
tinyblak_ joined
|
|||
mathw | I'm writing an ncurses binding, and a convenience module atop it | 10:32 | |
because I am utterly insane | |||
FROGGS_ | *g* | ||
we all are | 10:33 | ||
10:33
tinyblak left
|
|||
psch | i ditched readline because i'm not insane enough for that :P | 10:33 | |
bindings for the gnu one that is | |||
mathw | ncurses is fun | ||
FROGGS_ | psch: you'll get back to that, trust me :o) | ||
mathw | for some value of fun most people wouldn't recognise | ||
it does some things with macros which just shouldn't be allowed | 10:34 | ||
FROGGS_ | hehe | ||
moritz | mathw: hey, we have people here in the channel who write VMs, codegen, and finite automaton transformations :-) | ||
FROGGS_ | bbiab # lunch | ||
moritz | or even docs :-) | ||
mathw | moritz: all those things are sane and understandable, if complex | ||
psch | docs?! | 10:35 | |
mathw | ncurses, on the other hand, is an API from the depths of hell | ||
moritz | psch: yes, like, writing things in prose about how to use stuff | ||
FROGGS_ | I hope it is not as bad as the hellboy movies >.< | ||
mathw | FROGGS_: it's incomparable | 10:36 | |
it's one of the most baffling things I've ever done | |||
although part of that is some sort of argument between the Perl 6 I/O system and the ncurses one I think | |||
if you ask ncurses to read a key from the keyboard, it returns immediately with an error | |||
however, ncurses console read mode alteration commands appear to affect $*IO.getc | 10:37 | ||
which at least means I can do what I want to do :) | |||
psch | maybe i can get something howto-ish out of bringing the JavaHOW more towards perl6-land... | ||
although maybe i'm missing some MOP docs. what exists on doc.perl6.org doesn't look too helpful to me | 10:38 | ||
moritz++ # prose explaining how to use stuff | |||
moritz | psch: well, documenting MOP is a slow and painful process | 10:39 | |
psch | moritz: yeah, i'd assume so. i'm still far from confident i understand enough to actually decide if what i'm thinking of doing with the JavaHOW actually makes sense... | 10:40 | |
moritz | psch: mostly because most of it is not specced, and I understand it only half-ways, and because there are quite many methods (even if many of them are rather simple in nature, but still non-trivial to explain precisely) | ||
psch: do you want to expose only java classes, or also interfaces? | 10:41 | ||
psch | moritz: well, in the end i imagine we want a complete two-way interop, and every half-arsed solution in between makes that much more complicated later on... | 10:42 | |
moritz | psch: so you'd likely need a JavaClassHOW and a JavaInterfaceHOW, with the latter acting a bit likes p6 roles | ||
10:42
prime left
|
|||
psch | moritz: and currently i have a JavaHOW which basically just says "we did this all in the vm and we don't expose anything, you better know what you're doing" | 10:43 | |
10:44
tinyblak_ left,
tinyblak joined
|
|||
psch | HOW.name is pretty much all that does what it should atm | 10:45 | |
10:58
spider-mario left
11:08
tinyblak left,
tinyblak joined
11:17
denis_boyun joined,
prime joined
11:23
kjs_ left
|
|||
masak | good mo^Wante^Wafternoon, #perl6 | 11:25 | |
moritz | \o masak | 11:27 | |
11:27
jack_rabbit left
11:33
Mso150_p left
|
|||
masak | Mouq: re irclog.perlgeek.de/perl6/2015-01-08#i_9907773 -- the advantages... in Perl 6? I guess they are that HLL::Grammar already has the expression parser Perl 6 needs. the advantages... in 007? none, and 007 doesn't use HLL::Grammar's EXPR, it defines its own. | 11:42 | |
11:42
IllvilJa left
|
|||
masak | TimToady: I should have said "*currently*, with what we know, what we can consistently imagine, and what we have implemented, expressions are the only things that can call macros". | 11:43 | |
I am always willing to change my outlook based on consistent spec. | |||
11:59
xinming left
12:01
IllvilJa joined
12:03
kaleem left
12:17
saba joined
12:18
saba is now known as Guest995
|
|||
masak | I have a new solution to my 007 macro/quasi/scoping conundrum: github.com/masak/007/issues/7#issu...t-69327526 | 12:19 | |
12:19
gfldex joined
12:21
Guest995 left
|
|||
moritz | arent ⦃...⦄ just a do { ... } block? | 12:22 | |
(except that 007 probably doesn't have 'do') | |||
pmurias | it could be required to have an expression at the end | 12:24 | |
12:25
tinyblak left
12:26
tinyblak joined
12:39
BenGoldberg joined
|
|||
vendethiel | that does sound like a do block to me too | 12:42 | |
masak | I guess it can be thought of that way, yes. | ||
plus OUTER:: meddling. | |||
12:43
xfix joined
|
|||
masak | but note that 007 syntactically still would have neither `do`, nor self-executing blocks, nor blocks that when executed return a value. | 12:43 | |
psch | gist.github.com/peschwa/0f8830ba3c6a2eb852ba \o/ | 12:47 | |
now i just gotta do that automatically for every field in all generated adaptors | |||
vendethiel | psch++ | 12:48 | |
psch | ...i'm pretty sure that's the actually hard part :) | ||
masak | pmurias: interesting notion. | ||
pmurias: I might also require it not to have any exotic control flow, until I understand those bits better. | 12:49 | ||
arnsholt | I think I missed a memo somewhere; what's 007? | ||
(Besides James Bond =p) | |||
FROGGS_ | psch: and you've got a Foo.jar somewhere? | ||
masak | arnsholt: masak.github.io/007/ | ||
arnsholt | "it's perhaps easiest to think of 007 as the secret love child of Perl 6 and Python." =D | 12:50 | |
psch | FROGGS_: no, just a .class; the multiline comment is the contents | 12:51 | |
FROGGS_ | is it a Perlthon or more a Pytherl? | ||
xfix | It's Parrot. | ||
FROGGS_ | psch: ahh, cool | ||
xfix: :P | |||
xfix | Are semicolons mandatory in 007? | 12:52 | |
masak | oh yes, | ||
we may like Python in some ways, but we're not barbarians. | |||
FROGGS_ | then it is more a PHPerlthon | ||
masak | xfix: last semicolon (in block and in compunit) can be skipped, though. | 12:53 | |
FROGGS_ | ohh, I was think about mandatory trailing semicolon... can you omit semicolons in Python between statements? | ||
masak | FROGGS_: yes, you can. | ||
FROGGS_: as long as they are not on the same line ;) | |||
FROGGS_ | "nice" | ||
moritz | FROGGS_: python is very line-oriented | ||
or whitespace-oriented | |||
that's more like it | |||
masak | note that Python allows semicolons, though. not many people are aware of this. | 12:54 | |
xfix | I personally like braces, but dislike semicolons. | ||
12:54
BenGoldberg left
|
|||
masak smiles at the idea of a JS-influenced school of thought flaring up within the Python community, putting in all the semicolons everywhere | 12:54 | ||
vendethiel | *g* | ||
FROGGS_ | I think I do like semicolons... I always feel uneasy when writing VBScript | ||
masak | I really like semicolons. | 12:55 | |
they give me the courage to lay out my statements as I want. | |||
vendethiel doesn't like semicolons very much, but understand they're (mostly) necessary for (sane) postfixes... :) | |||
moritz | well, inserting semicolons in javascript is no clear win | ||
xfix | (I probably use not standard JavaScript coding style without semicolons, because I don't like them) | ||
moritz | because the mere fact that they are optional can mean that the parser might insert one for you anyway | ||
masak | moritz: actually, I would be fine with it all (and I would use semicolons everywhere just for clarity) | ||
moritz | and inserting more yourself doesn't change that in the slightest | ||
masak | moritz: but the `return\nvalue` thing bites me often, and I hate it. | ||
12:56
zakharyas left
|
|||
moritz | I insert semicolons in javascript too, but it's more habit / sentimental value, I guess | 12:56 | |
FROGGS_ | why would you do `return\nvalue`? | ||
12:56
zakharyas joined
|
|||
masak | FROGGS_: I've done it in real code, not thinking anything of it. | 12:56 | |
xfix | I usually do `return (\n` if I have huge value to return. Or just write that return value into a variable. | 12:57 | |
masak | FROGGS_: I think the case was this: the thing I was returning had three similar function calls, so I laid them out vertically. | ||
FROGGS_: and it looked better if I started on the next line. | |||
FROGGS_ | the only reason is when the `value` expression is very long, but then your might break it up anyway | ||
I see | |||
btyler_ | FROGGS_: if you return an object literal and your have a convention of next-line-brace | ||
boom undefined | |||
*you have | |||
masak | the point is, it was a legitimate case. | ||
xfix | return\n{ is ugly IMO. | ||
masak | and that simple *whitespace refactor* broke my code. | ||
good thing I had tests. | 12:58 | ||
but it was during a live demo, so it was still a bit unfortunate :) | |||
xfix | This is a good argument for not allowing statements that do nothing, I guess. | ||
moritz | but return\n does *something* | ||
masak | xfix: `return;` doesn't do nothing. | ||
xfix | I'm aware. | ||
FROGGS_ | but the thing afterwards | ||
it is unreachable code at least | |||
and that's worth a warning | 12:59 | ||
btyler_ | warnings? in my js? :P | ||
use strict; does a bit, but nothing to that degree | |||
masak | I think there should be two "levels" for errors in compilers: code that oughtn't be *run*, and code that oughtn't be *checked in*. | ||
xfix | "use strict", you mean. | ||
masak | dead code would be of the latter kind. | ||
moritz | btyler_: that's what linters are for | ||
masak | oh right, "linter" was what I was after. moritz++ | 13:00 | |
btyler_ | yeah, of course. a linter would probably also yell about return \n {foo: "bar"}; | ||
FROGGS_ | I'd love to see a clang-like mode for perl6... | ||
masak | of course, all that should be baked into a goodenuf IDE anyway. | ||
FROGGS_ | even if most warnings by clang are just annoying and not quite useful, you find quite some real bugs | 13:01 | |
masak: creating a good IDE is one of the hardest things there is sadly | 13:02 | ||
masak | yes. | ||
but it's the logical endpoint of this whole development endeavour. | |||
xfix | I also legitimately used `if (condition) return` without semicolon at end in JavaScript (quick return) once. But I guess it's confusing if somebody doesn't know about automatic semicolon insertion. | ||
masak | xfix: if you were on my team and you did that, I would ask you to stop doing that. | 13:03 | |
moritz | IDEs always felt weird to me | ||
they are a way to manage the complexity of a software system | |||
colomon has never really used an IDE | 13:04 | ||
moritz | and I always wonder if one couldn't simply reduce the complexity instead | ||
colomon does like it when his editor has a simple way to compile his code | |||
IllvilJa | jedit + perltidy + perlcritic :-) | ||
xfix | masak: It's a code that I wrote for my own purposes, written just by me. I use coding style of a project I contribute to, even if I write JavaScript without semicolons, I accept that other projects do use semicolons, and I use semicolons in code I write for those. | ||
IllvilJa | that's my perl IDE. | ||
spray some 'perl -d' over it and there's debugging/step by step testing. | |||
13:07
kaare__ left
|
|||
FROGGS_ | I only use debuggers at the last resort... | 13:07 | |
xfix | console.log best debugger, obviously. | ||
Or .perl.say. Or p. Or printf. Or whatever the language uses. | 13:08 | ||
FROGGS_ | but an editor that highlights todo's of my code and github issues besides a proper code highlighting would be very sweet | ||
(I just realize that the raid migration of my server at home will take about a week in total /o\) | 13:09 | ||
btw, I don't need an output window in my ISE of choice... I don't usually run my code in an IDE anyway | 13:10 | ||
IDE* | |||
so, I should probably fork SciTE and add buttons :o) | |||
and yes, the more I use eclipse the more I hate it | |||
masak | IllvilJa: heeey! long time no see! :D | 13:13 | |
xfix: good. | |||
13:14
kaleem joined
|
|||
psch | FROGGS_: do you know about eclim.org/ ? | 13:14 | |
for when everything is only in eclipse and you *have* to use it from there... :) | 13:15 | ||
FROGGS_ | psch: I don't like vim either :o) | 13:19 | |
psch | "third party clients have been created to add eclim support to other editors as well (emacs, sublime text 2, textmate)." :P | 13:20 | |
moritz wonders if there's some rule that any sufficiently advanced application gets its own package manager eventually | 13:22 | ||
I'm sure eclipse has one for its plugins, as do most (all?) modern browsers | 13:23 | ||
mathw | moritz: I often think like that about IDEs when I use Visual Studio and it's trying to be magical and failing. | ||
moritz | there are vim plugins that act as vim package managers | ||
mathw: I guess the java IDEs are a pretty extreme example, which generate and the later refactor boilerplate code for you | 13:24 | ||
psch | does common lisp contain a package manager and does that package manager belong to the slow, bug-ridden half referenced in greenspun's tenth rule..? | ||
oh, nvm, that rule limits itself to C and Fortran programs | 13:25 | ||
vendethiel | psch: it does not "contain" one, but there are several. asdf is the most widely used, i guess | 13:26 | |
(usually with quicklisp) | |||
and yes, it's slow :P | |||
arnsholt | psch: You're thinking of the *corollary* to Greenspun's tenth rule: Any sufficiently advanced CL program contains a buggy, informally specified version of half of Prolog" =) | 13:27 | |
masak | darn smug Prolog weenies | 13:28 | |
FROGGS_ | even Notepad++ has its own package manager... which is certainly useful for windows peeps | 13:31 | |
CurtisOvidPoe | m: my Rat $foo = 2.0; say $foo | ||
camelia | rakudo-moar c5dcdf: OUTPUT«2» | ||
CurtisOvidPoe | m: my Rat $foo = 2; say $foo | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Type check failed in assignment to '$foo'; expected 'Rat' but got 'Int' in block <unit> at /tmp/rVpGy4Kh2g:1» | 13:32 | |
CurtisOvidPoe | Why does that second one fail? An Int can always be represented as a Rat, can’t it? | ||
13:33
pecastro joined
|
|||
moritz | it can be represented, but it isn't one | 13:33 | |
FROGGS_ | well, (mostly?) everything can be represented as a string, but that does not mean there that a coercing is taking place | ||
moritz | just as you can represent any string or number as a string | ||
FROGGS_ | m: my Rat $foo = 2.Rat; say $foo | ||
camelia | rakudo-moar c5dcdf: OUTPUT«2» | ||
masak | CurtisOvidPoe: everyone seems to assume that Num <: Rat <: Int in Perl 6. | 13:36 | |
13:36
jluis left
|
|||
moritz | CurtisOvidPoe: use Real as a type constraint if you want to allow Rat, Int, Num | 13:37 | |
and Numeric if you also want to allow Complex | |||
CurtisOvidPoe | The reason I ask is that this complicates the Point example. If I declare the x and y as Rats, I can’t do Point.new( x = 2, y = 3 ) | ||
m: class Point {has Rat $.x; has Rat $.y;}; my $p = Point.new(x=2,y=3) | 13:38 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!=== Error while compiling /tmp/09Gzp1T3fmUnsupported use of y///; in Perl 6 please use tr///at /tmp/09Gzp1T3fm:1------> ; has Rat $.y;}; my $p = Point.new(x=2,y⏏=3)» | ||
CurtisOvidPoe | And I’ve hit an entirely different issue there. | ||
FROGGS_ | m: class Point {has Rat $.x; has Rat $.y;}; my $p = Point.new(x=>2,y=>3) | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Type check failed in assignment to '$!x'; expected 'Rat' but got 'Int' in block at src/gen/m-CORE.setting:980 in method BUILDALL at src/gen/m-CORE.setting:963 in method bless at src/gen/m-CORE.setting:951 in method new at src/gen/m-CORE.se…» | ||
moritz | CurtisOvidPoe: don't constrain it to Rat if it shouldn't just accept Rat | ||
CurtisOvidPoe: that's how types work :-) | 13:39 | ||
FROGGS_ | m: class Point {has Real $.x; has Real $.y;}; my $p = Point.new(x=>2,y=>3) | ||
camelia | ( no output ) | ||
masak | CurtisOvidPoe: what you're going through is something we see often here on channel. something of a FAQ. | ||
CurtisOvidPoe: subtypes != number tower | |||
CurtisOvidPoe | Cheers. | ||
masak | (fwiw, I sometimes also feel it's a very stubborn distinction to uphold... but I've resigned to it being the "right" one) | 13:40 | |
CurtisOvidPoe | So generally speaking, are most apps going to stick with Int and Real? | 13:41 | |
masak | yeah. | ||
maybe at some point a module could exist that said "just DWIM these number conversions for me, doggonnit" | |||
moritz | well, one could always use a coercion type Real(Rat) once they are implemented | ||
CurtisOvidPoe | It’s the sort of thing that’s going to trip up many devs who are used to DWIM. | 13:42 | |
moritz | well, adding type annotations does require thoughts | ||
CurtisOvidPoe | Agreed. | 13:43 | |
moritz | and it's something that I often got wrong in the beginning | ||
CurtisOvidPoe | “thoughts” is something I’m apparently not very good at lately :) | ||
moritz | mostly I was so glad that I had types that I used them everywhere, and later found out that many of those constraints simply don't hold up | 13:44 | |
hoelzro | good morning #perl6! | 13:45 | |
CurtisOvidPoe | Agreed, but when they do, they really make life easier. I love that I can create a well-thought out subset and remove a huge amount of manual error checking in my code (at the expense of error messages which are less verbose) | 13:46 | |
13:46
kjs_ joined
|
|||
CurtisOvidPoe | Morning hoelzro. | 13:47 | |
13:47
donaldh joined
|
|||
moritz | CurtisOvidPoe: FTR, I think the types in Perl 6 are awesome. I just can't see how a type system can both always DWIM *and* be useful | 13:49 | |
donaldh | how do I iterate a hash's keys in NQP ? | 13:50 | |
psch | donaldh: my $iter := nqp::iterator($hash); while $iter { my $key := nqp::iterkey_s(nqp::shift($iter)) } # is what i usually do | 13:51 | |
donaldh | thanks | ||
moritz | iirc you can also use a for-loop | ||
psch | yeah, i think so. iterkey_s goes on the loop variable | 13:52 | |
moritz | nqp-m: my $h := nqp::hash('a', 1, 'b', 2); for $h { say($_) } | ||
camelia | nqp-moarvm: OUTPUT«ab» | ||
psch | oh it works like that | ||
moritz | nqp-m: my $h := nqp::hash('a', 1, 'b', 2); for $h { say(nqp::iterkey_s($_)) } | ||
camelia | nqp-moarvm: OUTPUT«ab» | ||
moritz | nqp-m: my $h := nqp::hash('a', 1, 'b', 2); for $h { say($_.key) } | ||
camelia | nqp-moarvm: OUTPUT«ab» | ||
moritz | (I guess nqp::iterkey_s is faster, and doesn't box in-between) | ||
masak | I still think we have some ways to go to make subtyping error messages awesome. | ||
moritz | masak: agreed | 13:53 | |
masak | my ideal would be "Assignment to variable $x fails subtype constraint `$_ > 0`" | ||
preferably it would even split up && clauses and error on the failing one. | 13:54 | ||
donaldh | nqp-m: my $h := nqp::hash('a', 1, 'b', 2); for $h { say($_.key ~ '=' ~ $_.value) } | 13:55 | |
camelia | nqp-moarvm: OUTPUT«a=1b=2» | ||
donaldh | thanks psch++, moritz++ | ||
13:56
Alina-malina left
13:58
Rounin left
|
|||
pmurias | masak: re baked into a good enough ide, I disagree I think we optimaly want the code refactoring/analysis part pluggable so we can get it to work a bunch of editors/ides | 14:00 | |
14:00
xfix_ joined
14:01
Alina-malina joined,
xfix left,
xfix_ is now known as xfix,
xfix left,
xfix joined
|
|||
pmurias | masak: instead of having a case where people use some IDE which is at best mediocre just because it has awesome Perl 6 support | 14:03 | |
masak | *nod* | 14:07 | |
I'm not against pluggability as such. | |||
just note that re-use is frightfully hard. | |||
like, if you are currently thinking about how hard it is -- it's harder than that. | 14:08 | ||
moritz | the typical approach is to make it work in one situation, and then in the second when second situation arises, and then maybe in the third situation you have some idea on how to make it truely reusable | 14:09 | |
14:09
zakharyas left
14:10
tinyblak_ joined,
tinyblak left
14:12
zakharyas joined
14:14
xinming joined
|
|||
pmurias | there are approaches that make reuse much harder, like writting a big pile of horrible vimscript instead of having the backend part seperated in a seperate process that sends json | 14:15 | |
masak | moritz: yes. as far as I know, Josh Bloch coined "three clients" in one of his talks. it's online somewhere. | 14:17 | |
this one, I think: www.youtube.com/watch?v=heh4OeB9A-c | |||
mathw | A type system which can DWIM and be useful at the same time would have to be telepathic, and involve time travel too. | 14:27 | |
And yes, code reuse is hard | 14:28 | ||
VERY HARD | |||
14:32
tinyblak_ left,
tinyblak joined
|
|||
huf | code reuse is hard when you're thinking of it as code reuse | 14:37 | |
masak | r: say 6103515625/5; say ((((6103515625/5) * 4 + 123327057) ** 2) % 6103515625); say (((1220703125 * 4 + 123327057) ** 2) % 6103515625) | ||
camelia | rakudo-{parrot,moar} c5dcdf: OUTPUT«122070312506103515624» | ||
masak | ok -- between those three expressions, something is quite wrong. | ||
huf | but then you just string together a long-ass shell pipeline using pretty old and standard unix tools | ||
masak | note that the third is just the second but with the evaluated result from the first inserted. | 14:38 | |
the second and the third should show up the same. | |||
(don't ask me what I was doing when I discovered this) :P | |||
FROGGS_ | calculated your salary? :P | ||
masak | close, but no cigar. | 14:39 | |
I was finding the square root of -1 among the 5-adics. | |||
masak submits rakudobug | 14:40 | ||
FROGGS_ | m: say ((((6103515625 / 5) * 4 + 123327057) ** 2) % 6103515625) | 14:43 | |
camelia | rakudo-moar c5dcdf: OUTPUT«0» | ||
FROGGS_ | m: say ((((6103515625 div 5) * 4 + 123327057) ** 2) % 6103515625) | ||
camelia | rakudo-moar c5dcdf: OUTPUT«6103515624» | ||
masak | FROGGS_: you're implying I'm suffering from bignum/rounding effects? | 14:44 | |
FROGGS_ | I'm implying nothing atm | ||
masak | anyway, FROGGS_++ for interesting data point. that goes in the ticket, too. | ||
FROGGS_ | m: say ((((6103515625 / 5).Int * 4 + 123327057) ** 2) % 6103515625) | ||
camelia | rakudo-moar c5dcdf: OUTPUT«6103515624» | ||
14:44
cognominal left
|
|||
FROGGS_ | m: say ((((6103515625 div 5).Num * 4 + 123327057) ** 2) % 6103515625) | 14:45 | |
camelia | rakudo-moar c5dcdf: OUTPUT«0» | ||
FROGGS_ | :o) | ||
masak | heh. | ||
someone with a tuit is welcome to apply the patch suggested by Edsger in rt.perl.org/Ticket/Display.html?id=123569 | 14:47 | ||
& | |||
gtodd | FROGGS_: you calculated *my* salary | ||
FROGGS_ | hehe | 14:48 | |
moritz | does that patch still work on good-old cmd? | 14:49 | |
FROGGS_ | moritz: I've got an windows xp box too, I can check | 14:50 | |
14:51
pecastro left,
pecastro joined
|
|||
geekosaur | that was my question too; pretty sure that will not fly in cmd.exe on older windows | 14:53 | |
colomon | m: say (6103515625 / 5) * 4 | 14:54 | |
camelia | rakudo-moar c5dcdf: OUTPUT«4882812500» | ||
colomon | m: say (6103515625 div 5) * 4 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«4882812500» | ||
geekosaur | but I don't know how much older; it might have been added to win7 or win8, I doubt it works in xp | ||
colomon | m: say ((6103515625 / 5) * 4).WHAT | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Rat)» | ||
colomon | m: say ((6103515625 / 5) * 4).gist | ||
camelia | rakudo-moar c5dcdf: OUTPUT«4882812500» | ||
colomon | m: say ((6103515625 / 5) * 4).perl | ||
camelia | rakudo-moar c5dcdf: OUTPUT«4882812500.0» | ||
moritz | is powershell the default shell on win7/8 ? | 14:55 | |
colomon | m: say (6103515625 div 5) * 4 + 123327057 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«5006139557» | ||
colomon | m: say (6103515625 / 5) * 4 + 123327057 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«5006139557» | ||
geekosaur | not as far as I know | ||
colomon | oh! | ||
m: say ((6103515625 / 5) * 4 + 123327057) ** 2 | |||
camelia | rakudo-moar c5dcdf: OUTPUT«25061433264160156249» | ||
moritz | then maybe the problem is executing .bat files with powershell | ||
colomon | m: say ((6103515625 div 5) * 4 + 123327057) ** 2 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«25061433264160156249» | ||
colomon | m: say ((6103515625 / 5).Num * 4 + 123327057) ** 2 | 14:56 | |
camelia | rakudo-moar c5dcdf: OUTPUT«2.50614332641602e+19» | ||
colomon | say ((((6103515625/5) * 4 + 123327057) ** 2) % 6103515625).WHAT | 14:57 | |
m: say ((((6103515625/5) * 4 + 123327057) ** 2) % 6103515625).WHAT | |||
camelia | rakudo-moar c5dcdf: OUTPUT«(Num)» | ||
colomon | m: say (((6103515625 / 5) * 4 + 123327057) ** 2).WHAT | ||
camelia | rakudo-moar c5dcdf: OUTPUT«(Rat)» | ||
colomon | m: say ((1/2) % 3).WHAT | 14:59 | |
camelia | rakudo-moar c5dcdf: OUTPUT«(Num)» | ||
colomon | easy fix | ||
(maybe) | |||
absolutely a rakudobug | 15:02 | ||
colomon starts to wonder if he is talking to himself | 15:08 | ||
15:09
zakharyas1 joined
|
|||
colomon means online, of course he is IRL | 15:09 | ||
15:11
zakharyas left
15:15
kurahaupo left
|
|||
mathw | I had to go and find a new pen. It involved delving carefully past piles of unwanted highlighters and staples, and I had to be very slow and quiet lest I wake them up. | 15:21 | |
15:27
skids left
|
|||
osfameron | hehe | 15:27 | |
FROGGS_ | maybe that explains the behaviour of my co-workers.... perhaps they are searching for pens? | 15:28 | |
mathw | Or they've been bitten by the highlighters | 15:29 | |
15:29
kurahaupo joined
15:33
donaldh left
15:39
rmgk left
15:41
rindolf left
15:42
rindolf joined
15:45
mr-foobar joined
15:47
lumimies left
|
|||
dalek | ast: 8f0853b | colomon++ | S03-operators/arith.t: More tests for infix:<%> on Rats. Previously only had one test on the type returned from calling infix:<%> on Rats and maybe Ints. |
15:49 | |
15:53
jluis joined,
abraxxa left
|
|||
colomon | working on fix for the code right now | 15:54 | |
spectesting fix... | 15:59 | ||
15:59
pyrimidine left
|
|||
FROGGS_ | colomon++ | 16:03 | |
colomon | hmmm… presumably we need FatRat tests for this too. | 16:05 | |
colomon is going to run to the nom-store while the spectest is running. :) | 16:08 | ||
dalek | rl6-roast-data: 5362d1c | coke++ | / (5 files): today (automated commit) |
16:09 | |
16:15
denis_boyun left
16:16
andreoss joined
16:17
rmgk joined
|
|||
masak | colomon: not talking to yourself. glad you're on the case. | 16:19 | |
PerlJam | even if he is talking to himself, I too am glad he's on the case :) | 16:25 | |
16:30
kaleem left
16:36
treehug88 joined
16:37
jluis left
16:40
yeahnoob joined
|
|||
masak | yes, those two statements were unrelated ;) | 16:40 | |
16:43
yeahnoob left
|
|||
masak | oh, and there's an oeis sequence for the calculations I was doing. of course. oeis.org/A048898 | 16:44 | |
masak 's law of oeis sequences: no matter how crazy/original the math thing you're trying is, there's an oeis sequence for that | 16:45 | ||
(it's an approximate law, just like Moore's law) | |||
colomon | oh, interesting! | ||
t/spec/S32-temporal/DateTime-Instant-Duration.rakudo.moar (Wstat: 0 Tests: 33 Failed: 0) | |||
TODO passed: 7, 28-30 | |||
hadn't expected that | 16:46 | ||
16:46
cognominal joined,
cognominal left
|
|||
japhb | colomon: Because you fixed infix:<%> ? | 16:48 | |
colomon | japhb: it's the only thing I changed | 16:49 | |
japhb | Nice! | ||
colomon | doh! | ||
fatal: remote error: | |||
japhb | Though that feels like people have set the bar too low for marking TODO | ||
colomon | You can't push to git://github.com/rakudo/rakudo.git | ||
japhb | .oO( TODO it and forget it ) |
16:50 | |
dalek | kudo/nom: beb41a0 | colomon++ | src/core/Rat.pm: Add Rational versions of infix:<%>. It's probably possible to do it faster by getting some sort of direct NQP support for doing it. This merely makes the operator's behavior correct. |
||
16:50
jluis joined
|
|||
colomon | japhb: A TODO audit would probably be a very good thing. | 16:50 | |
PerlJam | heh ... *merely* makes the operator's behavior correct. | 16:53 | |
hoelzro | m: my @notes; @notes .= sort.uniq; | ||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!=== Error while compiling /tmp/rhcM0M5tC0Two terms in a rowat /tmp/rhcM0M5tC0:1------> my @notes; @notes .= sort⏏.uniq; expecting any of: infix stopper infix or meta-infix…» | ||
hoelzro | should something like .= sort.uniq work? | 16:54 | |
japhb | I should think so | ||
.oO( I should, and it happens that I do also. ) |
|||
16:55
zakharyas1 left
|
|||
hoelzro | =) | 16:56 | |
16:57
adu joined
|
|||
[Coke] | .unique | 17:01 | |
17:01
mvuets left
17:02
rindolf left
17:03
rindolf joined
17:12
rurban left
|
|||
colomon | PerlJam: what can I say, I'm very sensitive to performance issues. :) | 17:13 | |
masak: | |||
> ) ** 2) % 6103515625); say (((1220703125 * 4 + 123327057) ** 2) % 6103515625) | |||
1220703125 | |||
6103515624 | |||
adu | colomon: what are those numbers? | 17:16 | |
colomon | adu: they're masak's | 17:18 | |
adu: the point is the middle one was wrong before, and now it's right. :) | 17:19 | ||
17:21
pyrimidine joined
17:22
kjs_ left
17:27
telex left
|
|||
raydiak | morning #perl6 | 17:28 | |
adu | hi raydiak | ||
17:28
telex joined
|
|||
raydiak | \o adu | 17:29 | |
adu | o/ | ||
17:30
vendethiel left
17:32
rindolf left
|
|||
TimToady | FROGGS_: removing Unicode from a .java program feels like an ever-so-slightly wrongish fix to me; why not just change the encoding from ASCII somehow? Or is the "fix" to recode in UTF-16? <shudders> If so, I retract my qualm... :) | 17:33 | |
17:33
rindolf joined
|
|||
adu | removing? that seems wrong | 17:34 | |
TimToady | well, changing a non-breaking space to an ASCII space | 17:35 | |
adu | was it a string literal? or part of source code? | ||
TimToady | if it's in an ordinary comment, that's fine, but if it were going to turn into documentation, I'd want the NB space preserved | 17:36 | |
it was probably an ordinary comment, but it just gave me a cold grue | |||
TimToady is specializing in trivialities today :) | 17:37 | ||
adu | TimToady: I once spent a week getting all the MOTDs on all my servers perfect | 17:38 | |
masak | colomon++ # swift response as can be called for | ||
17:39
pmurias left
|
|||
TimToady | seeing the term "footgun", I want to coin the term "footrope" to mean enough rope to shoot yourself in the foot, but I fear that it will be taken as a bungee cord instead... :) | 17:42 | |
raydiak | speaking of trivialities, random Pray rendering I did last night: data.cyberuniverses.com/stuff/scene-09.png | 17:44 | |
17:44
skids joined
|
|||
raydiak | nothing new, but it turned out kinda cool so thought I'd share, maybe someone else will get inspired to make something cooler :) | 17:44 | |
PerlJam | TimToady: just contract it a little to "frope" or "footope" or something and it will be sufficiently dissimilar to warrant looking up what it means and thus unambiguously cementing that meaning to the word | ||
TimToady | I suppose we could define footrope as something that works like a footgun, but you have to work a lot harder to pull the trigger | 17:45 | |
colomon | so, tests for infix:<%> and FatRats -- should they got in S03-operators/arith.t or S32-num/fatrat.t? | 17:46 | |
TimToady | when you fire a footgun, people blame the footgun, but when you fire a footrope, they blame you instead | 17:47 | |
PerlJam | or they blame Perl because it gave you the footrope to begin with | ||
TimToady | we just gotta weave all those footropes into a safety net | 17:48 | |
then we could give you enough rope to shoot yourself from a cannon | |||
17:49
virtualsue left
|
|||
TimToady is not sure he should drink more coffee, if it'll just make things worse... | 17:49 | ||
TimToady wonders what's on the far side of trivial... | 17:50 | ||
adu | raydiak: povray? | ||
raydiak | adu: cyberuniverses.com/pray/ | ||
adu | oh, cool | ||
PerlJam | TimToady: I dunno ... it seems to me that you need a boost of entropy every now and then so that you can congeal a useful order from the chaos. Maybe worse is better? | 17:51 | |
TimToady | maybe it's my backbrane trying to write a FOSDEM talk... | ||
adu | raydiak: so how is Math::Symbolic going? | 17:55 | |
raydiak: can it solve PDEs yet? | 17:56 | ||
moritz | that's a nasty one, because it requires integration | 17:58 | |
raydiak | adu: eh, not so much on the progress recently, on much of anything, but hopefully more soonish | 18:00 | |
what is a PDE? | 18:01 | ||
masak | a partial differential equation | 18:02 | |
raydiak | I'll have to learn more calculus before I worry about such things | 18:03 | |
I've only managed to teach myself a tiny subset of it so far | 18:04 | ||
18:04
molaf joined
18:05
rindolf left
18:06
rindolf joined
18:07
pecastro left
18:09
xinming left
|
|||
adu | raydiak: well, it's pretty simple, really, its an equation that has partial derivatives | 18:10 | |
masak | simple as that, huh? :P | 18:12 | |
adu | I was a math major | ||
18:13
FROGGS__ joined
|
|||
adu | so it really is that simple for me | 18:13 | |
18:14
Mso150 joined
18:16
FROGGS_ left,
KCL_ joined
18:17
kjs_ joined
|
|||
itz | github.com/rakudo/rakudo/pull/349 | 18:17 | |
itz coughs | |||
raydiak | adu: when I clean the thing up, I'd be happy to have your help if you have spare tuits | 18:19 | |
[Coke] | itz, that seems safe enough. | ||
adu | tuits? | ||
raydiak | adu: design.perl6.org/S99.html#tuit | ||
FROGGS__ | TimToady: I just wanted to unbust the jvm build very quickly... and since I know very little about Java in general, my guess was that Java might have a problem with unicody stuff in its source files | ||
[Coke] will give a go when the travis build finishes. | 18:20 | ||
raydiak | adu: your skills as a math major likely far exceed my skills as an autodidactic highschool dropout :) | ||
18:20
dakkar left
|
|||
adu | raydiak: well, I'm a 3rd year university dropout, so I'm not sure I'm any better | 18:21 | |
raydiak: it also took me 10 years to get a 2-year degree | |||
raydiak | adu: well if partial differential equations are simple for you, it's probably safe to say you have a leg up on me :) | 18:22 | |
though /me admits to not having tried much to learn those parts of math yet...maybe it is simple and I just don't know yet *shrug* | 18:23 | ||
FROGGS__ | TimToady: stackoverflow suggests we could try to pass -Dfile.encoding=UTF8 to our runner... I'll try this in a bit | ||
raydiak | taught myself everything I know about vectors and matrices though...enough to write Pray and such (heh maybe why it is so slow) | 18:24 | |
adu | raydiak: I've written a few OpenGL apps myself, and I can use matrices effectively, but I still don't claim to "grok" matrices, they're bizarre beasts | 18:25 | |
dalek | kudo/nom: 488178c | (Steve Mynott)++ | src/core/Distro.pm: if lsb_release isn't in path send this to /dev/null |
||
kudo/nom: b718ee9 | (Will Coleda)++ | src/core/Distro.pm: Merge pull request #349 from stmuk/nom if lsb_release isn't in path send this to /dev/null |
|||
[Coke] | seen whiteknight | 18:27 | |
.seen whiteknight | |||
yoleaux | I haven't seen whiteknight around. | ||
itz | ty | 18:28 | |
18:29
tinyblak_ joined,
tinyblak left
|
|||
raydiak | adu: I re-taught them to myself enough times over enough years that I now have the illusion that I kinda understand how they work :) | 18:31 | |
18:31
mvuets joined
|
|||
adu | raydiak: well, then maybe I have a similar illusion about PDEs | 18:33 | |
dalek | ast: ad2a81c | colomon++ | S32-num/fatrat.t: Add tests for infix:<%> on FatRats. |
||
ast: 95a6419 | colomon++ | S (2 files): Unfudge. |
|||
raydiak | adu: apparently my illusions are solid enough to project with a rendering algorithm, so similar illusions for PDEs would cut it in Math::Symbolic I think...it's really only up to elementary algebra or so right now | 18:36 | |
also need to figure out how it will handle composite objects like sets, vectors, matrices, etc | |||
18:36
tgt joined
18:38
tgt left
|
|||
raydiak | but pretty much all the fun stuff is on hold until I catch back up on the cleaning chores | 18:38 | |
18:39
tgt joined
18:40
kjs_ left
18:43
rurban joined
18:45
KCL_ left
|
|||
bartolin | 9~ | 18:52 | |
oops | |||
masak | m: say "9~">>.ord | ||
camelia | rakudo-moar c5dcdf: OUTPUT«57» | ||
masak | m: say "9~".comb>>.ord | ||
camelia | rakudo-moar c5dcdf: OUTPUT«57 126» | ||
TimToady | m: say "9~".ords | 18:53 | |
camelia | rakudo-moar c5dcdf: OUTPUT«57 126» | ||
jercos | m: say :256["9~".ords] | ||
camelia | rakudo-moar c5dcdf: OUTPUT«14718» | ||
masak | m: say :128["9~".ords] | 18:54 | |
camelia | rakudo-moar c5dcdf: OUTPUT«7422» | ||
TimToady | m: say :256["".ords] | ||
camelia | rakudo-moar c5dcdf: OUTPUT«10» | ||
TimToady | oh, heh | ||
masak | that's the evalbot interfering :) | 18:55 | |
TimToady | m: say :256["☺".ords] | ||
camelia | rakudo-moar c5dcdf: OUTPUT«9786» | ||
TimToady | m: say :256[0x263a] | 18:56 | |
camelia | rakudo-moar c5dcdf: OUTPUT«9786» | ||
18:56
leont joined
|
|||
TimToady | seems we could use a check there... | 18:56 | |
m: say :256[256,256] | |||
camelia | rakudo-moar c5dcdf: OUTPUT«65792» | ||
masak submits rakudobug | 18:57 | ||
18:58
Mouq joined
|
|||
TimToady | masak: irclog.perlgeek.de/perl6/2015-01-09#i_9909653 sounds like the setup for a no true Scotsman defense :P | 18:58 | |
no *consistent* spec would every say that... | |||
*ever | |||
masak | heh. | 18:59 | |
no, I meant, I will get behind almost any spec that is closer to directly specifying how to implement stuff than to handwaving. | 19:00 | ||
the macro spec is still too much handwaving. | |||
and wanting other things than expressions to function as macros is all fine, but so far what we have is a bunch of examples of expressions working like macros. | 19:01 | ||
leont is looking for a roommate for FOSDEM, anyone else looking for one? | 19:02 | ||
masak | as far as I know, no-one has ever created a macro of some more exocic category such as sigil:sym<%> or trait_mod:sym<does>, or even thought about how to do so. | ||
jercos | m: say Buf.new((->$word is copy {reverse gather while $word > 0 { take $word % 256; $word div= 256 }})(:256["foo".ords])).decode | 19:03 | |
camelia | rakudo-moar c5dcdf: OUTPUT«foo» | ||
leont | woolfy: what's up with the schedule of the perl devroom? It still looks empty on the FOSDEM website | ||
jercos | hrm, there's probably a cleaner way to get .base(256) :p | ||
m: say Buf.new((->$word is copy {reverse gather while $word > 0 { take $word % 256; $word div= 256 }})(:256["Snowman says hello: ☃".encode.list])).decode | 19:04 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Snowman says hello: ☃» | ||
jercos | och | 19:05 | |
arnsholt | masak: A macro sigil feels more like a reader macro than a standard macro (to appropriate CL terminology), I think | 19:06 | |
jercos | m: say :256["lol".encode] | ||
camelia | rakudo-moar c5dcdf: OUTPUT«3» | ||
jercos | oh good. my rather aged star install OOM'd itself on that. | ||
moritz still wants a more low-level way to cast a Buf[uint16] into a Buf[uint8] | |||
19:06
beastd joined
|
|||
jercos | moritz: like javascript typedarray views? | 19:07 | |
19:08
rindolf left
19:09
rindolf joined
|
|||
arnsholt | Or a primitive to copy the underlying storage with a different element size on top? | 19:09 | |
Incidentally, I think we'd need something more or less like that for NativeCall too | 19:10 | ||
moritz | jercos: what arnsholt said | 19:11 | |
masak | arnsholt: in not too many words, what distinguishes a reader macro from a standard macro? | ||
TimToady | m: say "{"☃".&uniname.tclc} says hello" | 19:12 | |
camelia | rakudo-moar c5dcdf: OUTPUT«Snowman says hello» | ||
adu | m: say "💩".&uniname.tclc | 19:13 | |
camelia | rakudo-moar c5dcdf: OUTPUT«Pile of poo» | ||
TimToady | it didn't say hello | 19:14 | |
FROGGS__ | maybe it is rude | ||
adu | m: say "says hello"; | ||
camelia | rakudo-moar c5dcdf: OUTPUT«says hello» | ||
masak | m: say "{"☃".&uniname.tclc} says hell-oo"; say "💩".&uniname.tclc | ||
camelia | rakudo-moar c5dcdf: OUTPUT«Snowman says hell-ooPile of poo» | ||
El_Che | hehe, TimToady is boasting with perl6's utf8 19:54 < TimToady> oh, heh | ||
19:55 < masak> that's the evalbot interfering :) | |||
crap | |||
masak | :) | ||
masak hands El_Che a "trigger paste finger" badge | 19:15 | ||
arnsholt | masak: Reader macros hook into the lexer, while the others hook into the parser | ||
El_Che | I wanted to add: "perl6's utf8 support, second to none" but copy-paste came along. | ||
masak | arnsholt: that distinction isn't so clear in Perl 6, though. | ||
arnsholt | True, true | ||
masak | arnsholt: still, I think there can be a distinction there somewhere. just not sure it cuts along the same parallels. | 19:16 | |
adu | masak: in Scheme, macros are defined as a transformation from AST -> AST, whereas a reader macro is defined as CharString -> AST | 19:17 | |
masak | arnsholt: our "normal" macros that are like subs wait for their arguments to be parsed before they are called. I imagine there'll be plenty of forms of macros that don't do that. | ||
adu: oh, that makes sense. | |||
arnsholt | Yeah, some kind of distinction there would probably make sense | ||
El_Che | TimToady: today I met an old perl4 user all exited by your fosdem talk | ||
masak | El_Che: what, he only digs even versions? :P | 19:18 | |
adu | masak: well, maybe not CharString, but some kind of character-based peekable I/O | ||
TimToady | by definition, any perl4 user is old :) | ||
masak | El_Che: was he very into Perl 2 as well? | ||
El_Che | masak: I think he followed the old-perl -> old-java -> middle management road :) | 19:19 | |
masak | my pary are with him | ||
more for the Java than for the middle management, by the way | |||
adu | El_Che: old-java? what is this you speak of | ||
El_Che | hehe | ||
TimToady | that's...not a road...more of a swamp... | ||
19:20
kjs_ joined
|
|||
adu | Java has changed very little over the past decade, the only things I can think of is the invokedynamic instruction | 19:20 | |
El_Che | hehe | ||
adu | s/things/thing/ | ||
El_Che | well, working with files is now pretty ok to what it used to be before 7 | 19:21 | |
before everytime you opened a file was synonime with 20 cigarettes for your life span | 19:22 | ||
19:22
virtualsue joined
|
|||
adu | El_Che: Synonymous? | 19:23 | |
masak | or "tantamount" | 19:24 | |
19:24
dj_goku left
|
|||
El_Che | :) | 19:24 | |
adu | Synonymous would make a great hacker group name, and when CNN interviews them about how they distinguish themselves with Anonymous, they can simply say "we don't" | 19:25 | |
El_Che | hahaha | ||
masak | also, Pseudonymous and Eponymous | 19:26 | |
19:26
kjs_ left
|
|||
El_Che | what did you say about pseudhashes? :) | 19:26 | |
TimToady | Retronymous | ||
El_Che | throw an o somethere | ||
19:26
rurban left
|
|||
adu | Antonymous | 19:27 | |
masak .oO( Retronymous: we were legion ) | |||
Patronymous | |||
adu | Backronymous | ||
masak | the latter being part of the BLA, but no-one has any expansion for that acronym. | 19:28 | |
...yet. | |||
19:28
dj_goku joined
|
|||
FROGGS__ | bla? like the color? | 19:28 | |
TimToady | Backronymous Lags Acronymous | 19:29 | |
masak | ooh, Acronymous! | ||
they are not in the least bitter, oh no. | |||
adu | TimToady: wow that sounds Latin | 19:30 | |
El_Che | ab asino lanam | 19:33 | |
TimToady | something about east and southeast asia, I think | 19:34 | |
adu | dolorem ipsum | 19:35 | |
El_Che | (like getting) wool from a donkey | ||
although the 'ass' translation is funnier | |||
psch .oO( we have always been saying that south east asia must destroy carthage ) | |||
El_Che | :) | 19:36 | |
that could be a good end for a talk | 19:37 | ||
[Language of choice here] delenda est | |||
adu | it always hurts my humanity when I see "Lorem ipsum" | ||
19:39
Mso150 left
19:40
Mso150 joined
|
|||
adu | the original words were "dolorem ipsum", and "do-" was hyphenated on the previous page, and so what might have been "Wednesday poker nights" is now "Nesday Poker", which is synonymous with nonsense text. | 19:41 | |
TimToady | not as bad as hyphenating horsemen after the r | 19:42 | |
adu | TimToady: huh? | 19:43 | |
r-hosemen? | |||
huf | you know, pen is mightier, japan-us relations, an album cover | 19:44 | |
geekosaur | hor-semen | ||
huf | that sort of thing. | ||
adu | ooh | ||
El_Che | wasn't hor a pharao? | 19:45 | |
adu | anal bum cover? | ||
huf | yes, unlike the other bums | 19:46 | |
adu | huf: I feel like everyone here has already made a list of hyphenation mistakes | ||
huf | sinners, all of us | ||
19:46
tgt left
20:00
spider-mario joined
20:01
tgt joined
|
|||
TimToady | hoelzro: @notes .= sort.uniq; should say 'Useless use of .uniq in sink context' probably | 20:01 | |
@notes.=sort.=unique might do what you want | 20:02 | ||
m: my @notes = < a b a b b a c d a d b c >; @notes.=sort.=unique; say @notes | 20:05 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«a b c d» | ||
TimToady | er, actually, that's a waste | ||
m: my @notes = < a b a b b a c d a d b c >; @notes.=sort.=squish; say @notes | |||
camelia | rakudo-moar c5dcdf: OUTPUT«a b c d» | ||
hoelzro | TimToady: why would .uniq be in sink context there? | ||
because it would parse as (@notes .= sort).uniq? | |||
TimToady | probably | 20:06 | |
.= is not a real operator | |||
hoelzro | is it weird that I interpret @notes .= .sort.uniq as @notes = @notes.sort.uniq? | ||
TimToady | insofar as it forces the next word to be taken as a method call | ||
it's a natural enough error that we should think about whether it's possible it could dwym | 20:07 | ||
lizmat | hoelzro: not weird to me | 20:08 | |
m: my @a; @a .= sort.=unique | |||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!===Method call node requires at least one child» | ||
lizmat | that's at least LTA :-) | ||
20:10
darutoko left
|
|||
TimToady | m: my $x = 42; $x .= sqrt++; say $x | 20:10 | |
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!=== Error while compiling /tmp/CJAh0Sife0Preceding context expects a term, but found infix + insteadat /tmp/CJAh0Sife0:1------> my $x = 42; $x .= sqrt++⏏; say $x» | ||
TimToady | m: my $x = 42; ($x .= sqrt)++; say $x | 20:11 | |
camelia | rakudo-moar c5dcdf: OUTPUT«7.48074069840786» | ||
TimToady | trying to make it dwim might only increase confusion | 20:12 | |
.= as an operator is already high in bogonic density | |||
20:15
masak joined,
esaym153 joined,
jack_rabbit joined,
masak is now known as Guest34696
20:16
Guest34696 is now known as masak_grr
|
|||
adu | maybe there's something I'm still not understanding | 20:19 | |
so QAST can represent things like constants, variables, and expressions | |||
but how are things like Modules, Classes, Grammars, Methods, Subs, and the like represented? | 20:20 | ||
jnthn | Objects. | 20:21 | |
FROGGS__ | they are added to the SC, and referenced by a lexical lookup for example | ||
adu | what's SC? | ||
[Coke] | SC is our giant internal company wide intranet, so I am frequently wondering what the hell is going on here until I remember where I am. | ||
jnthn | haha | 20:22 | |
Serialization Context | |||
[Coke] | HA. didn't see adu's question first. | ||
FROGGS__ | serialization context | ||
masak_grr | serialization context | ||
jnthn | Basically "the set of objects that we created during the compile that should be persisted if we compile the program to bytecode" | ||
masak_grr: such slow! | |||
masak_grr | jnthn: it means "Serialization Context" | ||
adu | so serialization context == compilation unit? | ||
masak_grr | no, "compilation unit" is a file or eval string. | 20:23 | |
jnthn | Well, a compilation unit has a serialization context, if you want to be precise. | ||
20:23
rindolf left
|
|||
jnthn | QAST::CompUnit has a :sc(...) that you set when constructing it | 20:23 | |
FROGGS__ | and a CU/SC can/does refer to other SC's | ||
SCs* | |||
adu | when going from String -> AST shouldn't it be called a deserialization context? | ||
jnthn | That's the top-level linkage between declarative and executive stuff. | ||
20:24
denis_boyun joined
|
|||
moritz | masak_grr: what's up with your nick? | 20:24 | |
jnthn | It never becomes an AST, or a string for that matter | ||
It's all about objects. | |||
adu | jnthn: then what does it have anything to do with "serialization"? | ||
masak_grr | moritz: proper one got temporarily unavaliablized during an IRC storm. | ||
FROGGS__ | the .moarvm file that gets created is a serialized blob | 20:25 | |
... of moarvm instructions | |||
adu | oh | ||
do you mean the environment? | |||
FROGGS__ | no | ||
adu | FROGGS__: do you know what I mean by environment? | 20:26 | |
FROGGS__ | I am talking about what we usually call precompilation | ||
adu: perhaps not, now that you ask :o) | |||
jnthn | FROGGS__: That's only half true. It's also containing a bunch of bytes representing serialized objects. | ||
Basically, QAST is all about executional stuff. | |||
Every declaration you write in your program becomes an object. | 20:27 | ||
QAST is always turned into bytecode for the target VM, whether we run immediately or save to disk. | |||
The objects created by declarations are, if we precompile, also serialized (to a bunch of bytes). | 20:28 | ||
The MoarVM file contains both of these (same for the .jar on the JVM) | |||
adu | FROGGS__: well, there are 2 common uses: a Bash environment is a hashtable available to all processes (usually with getenv or setenv), a Scheme environment is a linked list of hashtables, and are unique to all lexical scopes. (when you are evaluating Scheme code and start evaluating a function body, for example, a new environment would be pushed on the stack, and when you return from a function body, then the environment would be pop'e | 20:29 | |
jnthn | The QAST tree can reference objects created by declaratoins using a QAST::WVal. This actually compiles into an index into a serialization context. | ||
FROGGS__ | adu: like a callframe? | ||
adu | FROGGS__: kind of, only that makes me think of assembly | 20:30 | |
FROGGS__ | (WVal mean World Value) | ||
jnthn | *nod* | ||
adu | FROGGS__: frames in asm would be the same idea only local variables are represented in a list instead of a hashtable | 20:31 | |
jnthn | In MoarVM, most lexical accesses are done with a list | ||
The hash to list index is kept statically and only used if we ever do a named lookup. | |||
adu | doesn't Parrot do that too? | ||
jnthn | I'm not sure. | 20:32 | |
I know on JVM we also do the same as on Moar. | |||
lizmat | Q: is BUILDALL an implementation detail, or do we expect classes to be able to subclass that ?? | 20:33 | |
adu | jnthn: so are there similarities between this SC and lexical envionments? | 20:34 | |
jnthn | adu: Not really. An SC is just an array of objects, and an array of code refs. | ||
And also an implementation detail. | |||
lizmat: Well, technically you *can* subclass it, but you'll really, really, need to know what you're doing. :) | 20:35 | ||
It's in the spec. | |||
lizmat | jnthn: so I was thinking of turning BUILDALL into a private method | ||
jnthn | lizmat: How does that help? | ||
And, uh, you can't. | 20:36 | ||
lizmat | faster ? | ||
ah, subclassing | |||
jnthn | That is SO not where the cost is. | ||
Remember that spesh can devirtualize a lot of method calls anyway. | |||
And indy on the JVM | |||
lizmat | ok, *plonk* for that one then | 20:37 | |
jnthn | Also, keeping it virtual is an important part of my idea for speeding object construction up | ||
adu | jnthn: so classes are represented as ClassHOW's, grammars as GrammarHOW's, and they get added to something called the "SC" which has nothing to do with lexical context? | 20:38 | |
jnthn | adu: Correct. They may *additionally* be installed in lexpads, packages, etc. But anonymous classes cannot be, for example. | ||
Well, s/cannot be/are not/ :) | |||
adu | and a lexpad, I think, is exactly what Scheme calls lexical environments | ||
jnthn | lizmat: I've been pondering (was discussing with timotimo++ on #moarvm yesterday) that we should compile the BUILDPLAN into a BUILDALL method specific to the class in question. | 20:39 | |
lizmat: Rather than having a generic BUILDALL that interprets the plan. | |||
lizmat | jnthn: ok, ah, I see | 20:40 | |
jnthn | lizmat: Which could be a huge improvement. | ||
lizmat | the reason is that I found that making BUILD a private method called in a custom new() is much faster | ||
than it being a submethod (at least in the simple case) | |||
jnthn | Yes, though I suspect that's 'cus it circumvents the interpretation in BUILDALL, primarily. | ||
lizmat | now that the dispatcher:<!> is optimized | 20:41 | |
again | |||
jnthn | If you call the submethod in a custom new, I'd expect it'd also be fast? | ||
lizmat | let me test that again (to be 100% sure :-) | 20:42 | |
itz | has moar been tried much on PPC? I have access | 20:44 | |
jnthn | OK. I'll be a bit surprised, 'cus submethod dispatches should be hitting the method cache at the very least. | ||
itz: I know a bunch of work was done by nwc10++ on PPC support | |||
itz: We could do with regular builds to make sure it stays working. | |||
itz: I dunno if you're in a position to do that; if you are it'd help. | 20:45 | ||
20:45
noganex left
|
|||
itz | yeah I have shell access to a friend's linux box and will give it a go | 20:46 | |
hoelzro | $^var are auto declared positional block params, right? should they work in a block provided to for? | ||
ex. for 1 .. 5 -> { say $^v } | |||
lizmat | jnthn: indeed, no diff between private and submethod BUILD | ||
mucho difference calling BUILD directly in new | |||
jnthn | lizmat: There, then that matches my analysis of where the cost is. | 20:47 | |
hoelzro: Not if you write -> | |||
hoelzro: that already is specifying a sig. | 20:48 | ||
m: for 1 .. 5 -> { say $^v } | |||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!=== Error while compiling /tmp/kmD8Jn74GZPlaceholder variable '$^v' cannot override existing signatureat /tmp/kmD8Jn74GZ:1------> for 1 .. 5 -> { say $^v }⏏<EOL>» | ||
jnthn | Yay. Correct error :) | ||
hoelzro | ahhhhh | ||
jnthn | m: for 1 .. 5 { say $^v } | ||
camelia | rakudo-moar c5dcdf: OUTPUT«12345» | ||
hoelzro | thank you for pointing that out jnthn | ||
jnthn | np :) | ||
hoelzro | I didn't look at my own code closely enough =) | ||
FROGGS__ | 'pointing that out' - that covers it :o) | 20:50 | |
skids | now there's a pointed comment. | ||
hoelzro | buh dum tsch | 20:51 | |
jnthn | At least it unblocked him :P | ||
skids groans | 20:52 | ||
masak_grr .oO( someone got the point? ) | |||
mst | jnthn: I guess that's a reasonable position to take | 20:54 | |
FROGGS__ | gather around, gather around, that wasnt the last | 20:55 | |
adu | jnthn: so it sounds like the SC has a lot in common with DSOs | ||
20:59
denis_boyun___ joined
21:00
denis_boyun left
|
|||
dalek | kudo/nom: 667cfa4 | lizmat++ | src/core/ (2 files): Don't need extra variable in .new |
21:03 | |
kudo/nom: 318be42 | lizmat++ | src/core/MapIter.pm: Don't need lexical nor optional parameters |
|||
21:11
Mso150_f joined,
Mso150 left
|
|||
masak_grr | what, the point puns just dies out? we didn't even reach peak point! | 21:12 | |
lizmat | I guess someone just punted it away | 21:13 | |
skids | We didn't want to belabor the point that hoelzro missed the big arrow pointing right at the problem. | 21:14 | |
raydiak | There is no point. | 21:15 | |
TimToady started to feel listless | 21:17 | ||
geekosaur | next up, the great listless refactor... | 21:18 | |
TimToady | the native arrays are listless tonight... | 21:19 | |
21:19
kaare__ joined
|
|||
skids | .oO(if this flash drive doesn't hurry up I may be stuck here for the whole friday punorama. yikes.) |
21:20 | |
TimToady | that would be NFG | 21:21 | |
FROGGS__ | raydiak: that's one poїnt to many! | ||
gnight & | 21:22 | ||
TimToady | ô/ | 21:23 | |
21:24
kjs_ joined,
kjs_ left
21:25
xfix left
21:28
masak_grr is now known as masak
|
|||
lizmat | a nick may lose its _grrr, but not its .... | 21:28 | |
masak | you can take the grrr out of the masak, but you can't take the masak out of the grrr! | 21:29 | |
lizmat | :- | 21:30 | |
) | |||
masak | that's the laziest smiley I've ever seen. | ||
delivered on demand! | |||
TimToady | kind of the opposite of a Cheshire smiley | ||
skids | It's a litsless smiley. | 21:31 | |
masak decides to start off a discussion | |||
SQL table names: singular, or plural? | |||
TimToady | they should be named things like master, and slave, and auxiliary | 21:32 | |
skids | definitely not both. | ||
bcode | the solution is to find some language that doesn't have separate plural forms and name your tables in that language, of course | 21:33 | |
everyone will be happy! | |||
jnthn | masak: About rt.perl.org/Ticket/Display.html?id=123078 - do we really want errors to reveal private stuff inside the object? | ||
masak | jnthn: oh! it was evident to me, so I left it unsaid: the private method has to have *been able to be called*. | 21:34 | |
jnthn: either because we're in the object itself, of because we trust that class. | |||
no wait, the other way around: because that other class trusts us. | |||
skids | Use proper nouns. They looked funny when pluralized so nobody will do it. | 21:35 | |
TimToady | is one of the class members named Bobby Tables? | ||
jnthn | masak: Uh, so that means producing the errors also needs to introspect the backtrace of the point the method was called to decide whether or not to mention it? | ||
jnthn wonders if this error is worth the cost of writing/maintaining the code to produce it :) | 21:36 | ||
Well, s/error/hint/ | |||
21:37
denis_boyun_ joined
|
|||
[Coke] | I prefer singular names for tables that are nouns. | 21:38 | |
21:38
denis_boyun___ left
|
|||
masak | if errors were judged against the cost of writing/maintaining the code to produce it, we'd have lots worse errors than we do, and we wouldn't keep repeating the maxim "torment the devs". | 21:38 | |
s/'it,'/them,/ | 21:39 | ||
jnthn | There's gotta be a line somewhere, and for me this is on the "not worth it" side of the line, is all. | ||
If anyone writes a patch to do it, I won't object, I guess. | 21:40 | ||
masak | [Coke]: the style guide I just found says they should be plural, because a table consists of several whatevers. | ||
skids | name all your tables with different spellings of Bruce and be done with it. | 21:41 | |
21:43
noganex joined,
noganex left
|
|||
dalek | kudo/nom: 90f3778 | lizmat++ | src/core/Match.pm: Give Match its own new/BUILD This improves the Text::CSV benchmark with 2%, and should have a noticeable effect on other Match heavy applications. |
21:44 | |
[Tux] | :) | ||
[Coke] | lizmat: ^^ Should that have a comment or something indicating it was added soley for performance reasons? | 21:45 | |
does it change the functionality at all? | |||
lizmat | no functionality change | ||
dalek | kudo/nom: 0061eda | lizmat++ | src/core/Match.pm: Mention new/BUILD are there only for performance |
21:46 | |
TimToady | that looks completely bogus to me | 21:47 | |
BUILD is supposed to have named parameters, so you've prevented anyone from ever deriving from Match | 21:48 | ||
lizmat | TimToady: but it;s a submethod BUILD ? | 21:49 | |
21:49
ssutch left
|
|||
lizmat changes | 21:49 | ||
El_Che | lizmat: not too much I hope :) | 21:52 | |
lizmat | no, been there, done that :-) | ||
21:55
denis_boyun_ left,
denis_boyun joined
|
|||
raydiak | lizmat: why do you name it BUILD if you are entirely circumventing all the bless/BUILDALL stuff which is responsible for calling BUILD? could just name it something else and un-break it for inheriting classes, if I'm not mistaken | 21:55 | |
lizmat | I've considered that, but found other cases in the core that took the same approach | 21:56 | |
so I considered it to be confusing to change that meme | 21:57 | ||
dalek | kudo/nom: cd0614e | lizmat++ | src/core/Match.pm: Make Match subclassable again, TimToady++ |
||
21:58
noganex joined
|
|||
nwc10 | 1 file changed, 4 insertions(+), 7 deletions(-) | 22:00 | |
lizmat | ? | ||
22:00
denis_boyun left
|
|||
nwc10 | less code, same functionality | 22:00 | |
that's good ,right? | |||
lizmat | yes, but all of those lines were added just 2 commits before that :-) | 22:01 | |
nwc10 | I'm OK with that downside | ||
I more meant, that the new way of doing the optimisation is also pleasingly shorter | |||
(as well as fixing the problem TimToady noted) | 22:02 | ||
I'm not good enough at Perl 6 stuff to know what the other implications are | 22:03 | ||
22:03
denis_boyun_ joined
|
|||
lizmat | there shouldn't be other implications, and the spectest thinks so as well | 22:07 | |
22:09
denis_boyun_ left
|
|||
nwc10 | win! | 22:10 | |
jnthn spectests today's little fix. :) | |||
lizmat | .oO( that sounds promising! ) |
22:11 | |
22:11
tgt left
22:14
skids left
|
|||
[Coke] | Promise-ing? | 22:17 | |
lizmat | .oO( only if jnthn keeps it ) |
22:18 | |
avuserow_ | I agree with arnsholt and moritz's comments about going from Buf[uint16] to Buf[uint8] and it being needed for NativeCall. In particular, my attempt at making Compress::Snappy handle non-utf8 data was frustrated by this. | 22:22 | |
22:22
raiph joined
|
|||
jnthn | I'm not masochistic enough to debug conc bugs on vacation :P | 22:22 | |
dalek | kudo/nom: 47f3252 | jnthn++ | src/ (3 files): Exporting an enum should export the values. Fixes RT#123114. |
22:23 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123114 | ||
masak | (yay) | ||
jnthn++ | |||
lizmat | jnthn++ indeed! | ||
22:23
donaldh joined
|
|||
psch | jnthn++ # looks less horrid than my attempt at that bug | 22:24 | |
masak | can we now submit a follow-up ticket about poisoned enum values not working properly? :P | ||
22:24
IllvilJa left
|
|||
masak <-- evil | 22:24 | ||
jnthn | masak: If you like, especially as you'll need to come up with a concise example, which basically means a test case :) | 22:25 | |
masak | aye. | ||
jnthn | Also the code that needs fixing for that is in a totally different place, so it didn't make sense to tackle the two together. | ||
(It's an importer thing, this was all export side) | |||
Anyway, tagged the ticket testneeded. | 22:26 | ||
If somebody fancies turning the example into a test, please do. Then we can close it. :) | |||
masak | more and more, I see the actions centering around RT as a small ecology. there are producers, consumers, and decomposers. just like in nature. | 22:27 | |
masak .oO( it's the ci-i-i-rcle of life... ) | |||
22:27
IllvilJa joined
|
|||
jnthn | Sleep time here. 'night | 22:30 | |
masak | 'night, jnthn++ | 22:31 | |
lizmat | night jnthn | 22:33 | |
22:33
IllvilJa left
22:35
IllvilJa joined
|
|||
masak | m: module M1 { enum A is export <B C> }; module M2 { enum X is export <Y Z> }; import M1; import M2; say B | 22:37 | |
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!===cannot stringify thisError while constructing error object:Could not locate compile-time value for symbol Undeclared::Symbols» | ||
masak | I'm sorry? | ||
:( | |||
temporary glitch? or... international conspiracy? | |||
m: say "do you even lift?" | 22:38 | ||
camelia | rakudo-moar c5dcdf: OUTPUT«do you even lift?» | ||
masak | m: module M1 { enum A is export <B C> }; module M2 { enum X is export <Y Z> }; import M1; import M2; say B | ||
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!===cannot stringify thisError while constructing error object:Could not locate compile-time value for symbol Undeclared::Symbols» | ||
masak | hrm. | ||
works locally, fwiw. | |||
dalek | kudo/nom: d1a5151 | lizmat++ | src/core/ (5 files): Make Set/Bag/Mix creation faster |
22:40 | |
kudo/nom: 0459ebd | lizmat++ | src/core/Capture.pm: Make Capture creation faster |
|||
donaldh | Finally tracked down the cause of NQPMatch objects getting serialized in the setting. | 22:42 | |
lizmat | donaldh: and? | ||
donaldh | QAST::Node.shallow_clone is copying the Node annotations by reference and the before_promotion annotation references QAST::Node that contains an NQPMatch. | 22:43 | |
Question is, should the clone's annotations be cleared? | 22:44 | ||
Or should the annotations be kept, but cleaned up - problematic because there are cyclic references to deal with it seems. | 22:45 | ||
lizmat | I have no idea, jnthn FROGGS__ moritz might ? | 22:46 | |
donaldh | I'm guessing that it's okay to clear the annotations. But I'd like some guidance on whether it's okay to have QAST::Node.shallow_clone always clear the annotations. | ||
Yeah, I probably need to ask jnthn and I see he's off to bed. | 22:47 | ||
masak | m: module M1 { enum A is export <B C> }; module M2 { enum X is export <Y Z> }; import M1; import M2; say B | 22:51 | |
camelia | rakudo-moar c5dcdf: OUTPUT«===SORRY!===cannot stringify thisError while constructing error object:Could not locate compile-time value for symbol Undeclared::Symbols» | ||
masak | :/ | ||
22:51
adu left
|
|||
lizmat | $ 6 'module M1 { enum A is export <B C> }; module M2 { enum X is export <Y Z> }; import M1; import M2; say B' | 22:51 | |
B | |||
masak | right, same here. | 22:52 | |
lizmat | so camelia is just behind, right ? | ||
masak | oh, two days behind. | 22:53 | |
something is failing to update camelia. | |||
lizmat++ | |||
22:53
Mouq_ joined
|
|||
lizmat | maybe moritz can do something about that | 22:54 | |
lizmat is going to bed now | |||
so good night, #perl6! | |||
masak | 'night, liz | ||
donaldh | 'night o/ | ||
raydiak | good night lizmat | ||
dalek | p: 636872f | peschwa++ | src/HLL/Compiler.nqp: Fix RT #77894 the most obvious way. |
22:55 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77894 | ||
psch | g'night lizmat | ||
dalek | ast: b1490b5 | peschwa++ | S19-command-line/arguments.t: Add test for RT #77894. |
||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77894 | ||
22:55
jluis left
22:57
Mouq left
|
|||
raiph | .ask psch Do you have ideas about why jnthn's util::zip::CRC32 example fails? His original code yields "No such method 'method/update/(B)V' for invocant of type 'java.util.zip.CRC32'"; replacing that expression with the shortname'd `$crc.update($_)` instead yields "Couldn't parse arguments in Java call. (Did you pass a type object?)" | 23:01 | |
yoleaux | raiph: I'll pass your message to psch. | ||
psch | raiph: yes, the descriptor is wrong. afair i corrected it for my advent post but neglected to mention in needed correcting | 23:02 | |
yoleaux | 23:01Z <raiph> psch: Do you have ideas about why jnthn's util::zip::CRC32 example fails? His original code yields "No such method 'method/update/(B)V' for invocant of type 'java.util.zip.CRC32'"; replacing that expression with the shortname'd `$crc.update($_)` instead yields "Couldn't parse arguments in Java call. (Did you pass a type object?)" | ||
psch | raiph: or i might be misremembering this again... | ||
timotimo | did anybody measure the speed improvements lizmats constructor work have given? | ||
23:02
Mso150_f left
|
|||
psch | timotimo: she said 2% i think? | 23:03 | |
23:03
abraxxa joined
|
|||
timotimo | only for one benchmark and one of the improvements | 23:03 | |
tell japhb i've started a run of perl6-bench ("quickstart") on the weekend, now i'm finally watching the output and it gives me lots and lots of lines with Run command did not produce expected output: install/bin/nqp-m -e my @a; nqp::push(@a,42); my $i := 0; while ($i := $i + 1) <= 378453 { nqp::push(@a, @a) }; say(+@a); | 23:04 | ||
23:04
Mso150_f joined
|
|||
timotimo | and the number in the <= * always increases by one | 23:04 | |
psch | raiph: this is about stackoverflow.com/questions/27156329/ right? the answer by the asker resolves this. i fixed the unbox error | ||
raiph: unless the example with "method/update/(I)V" still doesn't work, in that case i'd have to dig | 23:05 | ||
timotimo | tell japhb i'd be interested in some kind of way to control what perl6-bench does; like a signal handler for USR1 to cancel the current implementation perhaps? | ||
psch | timotimo: s/^/./ | ||
23:06
berekuk joined
|
|||
timotimo | oh | 23:06 | |
.tell japhb i've put a few tell messages here that didn't go through. lookie here: irclog.perlgeek.de/perl6/2015-01-09#i_9913027 | 23:07 | ||
yoleaux | timotimo: I'll pass your message to japhb. | ||
psch | raiph: uh, apologies, i should've finished reading your tell... :) | ||
timotimo | .tell japhb also, since the output of perl6-bench can be pretty darn verbose, maybe writing a log file automatically would be nice; otherwise i'd just get used to using tee | 23:11 | |
yoleaux | timotimo: I'll pass your message to japhb. | ||
psch | m: my Buf $x = "f".encode('utf-8'); say "y" if nqp::isint($x[0]) | 23:12 | |
camelia | rakudo-moar c5dcdf: OUTPUT«Type check failed in assignment to '$x'; expected 'Buf' but got 'utf8' in block <unit> at /tmp/Y3QGfY3GWO:1» | ||
psch | m: my $x = "f".encode('utf-8'); say "y" if nqp::isint($x[0]) | ||
camelia | ( no output ) | ||
psch | raiph: ^^^ that's half of the problem. the other half is that the generic unboxing doesn't work for Blob (i think that's what utf8 is?) | 23:13 | |
23:17
donaldh left
23:19
treehug88 left
|
|||
psch will look closer at that example tomorrow | 23:20 | ||
i think it's about container types to java, but i'm not sure | |||
although i did test that, but only with Int @foo | |||
well, writing more tests etc. | 23:21 | ||
g'night o/ | |||
raiph | psch: sorry, was afk, thanks and goodnight | 23:23 | |
23:23
Mouq_ left
23:34
mvuets left
23:35
adu joined
23:37
Rounin joined
23:38
cognominal joined
23:46
Mouq joined
23:48
skids joined
23:54
BenGoldberg joined
23:57
spider-mario left
|