»ö« 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. |
|||
xenoterracide | hmm... well I can't seem to get things to work on the newer parrot now | 00:02 | |
I wonder what's up with that | |||
I give up for the time being | 00:03 | ||
00:04
Kharec left
00:08
hash_table left
00:12
zjmarlow__ joined
00:16
qu1j0t3 left
00:47
zjmarlow__ left
00:49
wamba left
|
|||
xenoterracide | r: say Date.new; | 01:02 | |
p6eval | rakudo cecc9f: OUTPUT«2012-12-24» | ||
xenoterracide | that seems so arbitrary | ||
sorear | xenoterracide: it is, in fact, completely arbitrary | 01:03 | |
xenoterracide | why doesn't it throw an exception | 01:04 | |
01:07
dedis6 joined,
anuby joined
|
|||
sorear | that's the way it is. not my call. | 01:09 | |
01:15
dedis6 left
01:18
Chillance left
01:23
hypolin joined
|
|||
xenoterracide | so asked this early but think it may have gotten lost in another conversation. can I apply a role at runtime but where it's also new time? meaning not after the object is constructed | 01:25 | |
01:37
tokuhiro_ left
01:38
tokuhiro_ joined
|
|||
xenoterracide | r: class T { has $.foo }; my $t = T.new; $t.foo('test'); | 01:53 | |
p6eval | rakudo cecc9f: OUTPUT«Too many positional parameters passed; got 2 but expected 1 in method foo at src/gen/CORE.setting:1794 in block at /tmp/KuoZG3JWXh:1» | ||
xenoterracide | I don't understand that error | ||
01:53
sirrobert left
01:56
sirrobert joined
|
|||
sorear | xenoterracide: the correct syntax is $t.foo = 'test'; | 02:09 | |
r: class C { } ; role R { method foo() { 42 } }; say (C but R).new.foo # something like this xenoterracide? | 02:10 | ||
p6eval | rakudo cecc9f: OUTPUT«42» | ||
xenoterracide | I thought `but` allowed things to be removed not added... yeah I suppose something like | 02:11 | |
I guess I don't quite understand `but` yet | 02:12 | ||
sorear | but only adds. | 02:13 | |
(C but R) is the same as (anon class :: is C does R { }) | |||
02:16
fgomez left
|
|||
xenoterracide | using the word `but` for this grates against my sense since I see but as a negation | 02:17 | |
still thanks | |||
02:21
bowtie left,
fgomez joined,
fgomez left
02:22
whiteknight left
02:26
fgomez joined
02:46
FROGGS_ joined
02:49
rurban_ joined,
fgomez left,
fgomez joined
02:50
flightrecorder left,
FROGGS left
02:51
flightrecorder joined
|
|||
felher | 'night #perl6 :) | 02:52 | |
doy | 'but' isn't a negation, even in the linguistic/logical sense | 02:53 | |
"this object is green but small" | |||
means it's both green and small | |||
geekosaur | but is a constraint, even in natural language. negation is the simplest constraint but far from the only one | 02:55 | |
sorear | 'but' indicates an unexpected propert | 02:56 | |
y | |||
"this tungsten ball is small but quite heavy" | 02:57 | ||
"after '$x = 0 but True', $x is numerically zero but true in boolean context" | |||
you expect small things to be light, and zero things to be false (at least in Perl) | 02:58 | ||
03:00
hash_table joined
|
|||
xenoterracide | privatepaste.com/1130814e00 O.o | 03:12 | |
03:15
hash_table left
03:32
ifim joined
|
|||
lue | r: say "foo bar".^methods; my @array = "foo bar".^methods; my @array = "foo bar".words; say @array.perl' | 03:32 | |
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Redeclaration of symbol @arrayat /tmp/hHARka2VXg:1» | ||
lue | (IIRC rakudo's REPL isn't the most reliable way of testing P6 code) | 03:33 | |
ifim | you declared @array twice | 03:36 | |
r: say "foo bar".^methods; | |||
p6eval | rakudo cecc9f: OUTPUT«BUILD Int Num chomp chop substr pred succ match ords lines samecase samespace trim-leading trim-trailing trim words encode capitalize wordcase trans indent codes tclc path WHICH Bool Str ACCEPTS Numeric gist perl comb subst split» | ||
doy | r: say "foo bar".words.perl | ||
p6eval | rakudo cecc9f: OUTPUT«("foo", "bar").list» | ||
ifim | r: my @array = "foo bar".words; say @array.perl'; | 03:37 | |
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Confusedat /tmp/QAltXN0pPT:1» | ||
doy | r: my @array = "foo bar".words; say @array.perl | ||
p6eval | rakudo cecc9f: OUTPUT«Array.new("foo", "bar")» | ||
ifim | r: my @array = "foo bar".words; say @array.perl; | ||
p6eval | rakudo cecc9f: OUTPUT«Array.new("foo", "bar")» | ||
ifim | sorry | ||
lue | r: my @array = "foo bar".^methods; say @array.perl; | ||
p6eval | rakudo cecc9f: OUTPUT«Array.new(submethod BUILD(Str : :value(:$value) = { ... }, Mu *%_) { ... }, method Int(Str:D : Mu *%_) { ... }, method Num(Str:D : Mu *%_) { ... }, method chomp(Str:D : Mu *%_) { ... }, method chop(Str:D : Mu *%_) { ... }, method substr(Str:D : $start, $length? is … | ||
lue | Apparently the REPL will ignore a redeclaration without telling you (+ giving the appearance of success). | 03:38 | |
03:51
orafu left,
orafu joined
03:58
ifim left
04:09
takesako joined
04:28
dedis joined
|
|||
dalek | rl6-bench: b47060b | (Geoffrey Broadwell)++ | bench: Remove unixism by switching to Shell::Command for rm_rf |
04:31 | |
rl6-bench: 5268d41 | (Geoffrey Broadwell)++ | bench: Change 'extract-releases' command to just 'extract', but leave the longer name as an alias for the short one |
|||
rl6-bench: 04e2158 | (Geoffrey Broadwell)++ | / (2 files): Add 'time' command to time individual checkouts; change timeall program to support this (minimally, at least) |
|||
rl6-bench: 273e045 | (Geoffrey Broadwell)++ | bench: Remove redundant line that had been copy-pasted to three places |
04:50 | ||
rl6-bench: e48cabb | (Geoffrey Broadwell)++ | bench: Move 'clean' command multi back to where it was supposed to be |
|||
rl6-bench: 45eee9e | (Geoffrey Broadwell)++ | bench: Factor out some boilerplate from most of the command multis |
05:29 | ||
05:43
skids left
05:46
birdwindupbird joined
|
|||
dalek | rl6-bench: ccf9079 | (Geoffrey Broadwell)++ | bench: Improve error handling and sanity checking in 'extract' command |
05:52 | |
moritz | \o | 06:14 | |
gist.github.com/4109216 # qast-sink-1 spectest summary | 06:15 | ||
06:18
kaleem joined
06:33
circlepuller left,
circlepuller joined
06:35
zby_home_ joined
06:58
FROGGS_ left
06:59
flightrecorder left
07:00
zby_home_ left
07:09
cognominal joined
07:14
cognominal left
07:15
drbean left
07:21
drbean joined
07:22
flightrecorder joined
07:27
Bzek joined
07:31
FROGGS joined
|
|||
FROGGS | morning | 07:31 | |
phenny: ask jnthn if these fails ( smolder.parrot.org/app/projects/rep...ails/32307 ) need to be fixed before release | 07:33 | ||
phenny | FROGGS: I'll pass that on when jnthn is around. | ||
07:34
rurban_ left
07:44
SamuraiJack joined
|
|||
moritz | FROGGS: yes, they need to be fixed (or in some cases the tests need to be fudged) | 07:47 | |
FROGGS: I might look at them tonight | |||
FROGGS | moritz: k, thanks | ||
07:50
domidumont joined
|
|||
moritz | S12-class/attributes is a new test | 07:51 | |
dalek | ast: ac70806 | moritz++ | S12-class/attributes.t: avoid a name conflict |
07:52 | |
moritz | same with S32-exception/misc | ||
dalek | ast: f631233 | moritz++ | S06-other/main-usage.t: fudge two new, failing tests |
07:55 | |
07:59
odoacre left,
odoacre joined
08:04
drbean left,
fgomez left
|
|||
jnthn | morning o/ | 08:04 | |
phenny | jnthn: 07:33Z <FROGGS> ask jnthn if these fails ( smolder.parrot.org/app/projects/rep...ails/32307 ) need to be fixed before release | ||
FROGGS | morning | 08:05 | |
jnthn | yes, and it looks like moritz++ is on with it | ||
FROGGS | ya, he is | ||
;o) | |||
08:05
sorenso joined
08:08
wamba joined
08:09
drbean joined
08:13
fgomez joined
08:23
domidumont left
08:24
domidumont joined,
Kharec joined
|
|||
tipdbmp | What's the difference between 'has $!attr;' and 'has $.attr;' and how does one redifine the accessor methods generated for 'has $.attr;'? | 08:31 | |
tadzik | you don't get an accessor method with has $!attr | 08:32 | |
tipdbmp | How do I use $!attr from outsdie the class? | 08:33 | |
tadzik | you don't :) | ||
you need an accessor method for that | 08:34 | ||
either use $.attr or write your own accessor method | |||
r: class A { has $!attr = 5; method attr { "I'ts {$!attr}" }; A.new.attr.say | |||
08:34
drbean left
|
|||
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Unable to parse expression in block; couldn't find final '}' at line 2, near ""» | 08:34 | |
tadzik | p6eval: pfffft! | ||
r: class A { has $!attr = 5; method attr { "I'ts {$!attr}" } }; A.new.attr.say | |||
p6eval | rakudo cecc9f: OUTPUT«I'ts 5» | ||
tipdbmp | That's a get method for $!attr, what about a set one?: method attr($value) { $!attr = $value; } # ? | 08:35 | |
tadzik | yeah, you can write one :) | 08:36 | |
FROGGS | tipdbmp: the ! makes is a private attribute, so IMO it makes not much sense to have another accessor that looks like a public attribute | 08:40 | |
08:40
drbean joined
|
|||
tipdbmp | Okay. | 08:40 | |
FROGGS | tipdbmp: but keep in mind that the ! is just needed for declaring a private attr, to use it within your class always use $.attr | ||
so the ! only appears once | 08:41 | ||
tadzik | s/within/outside/? | ||
tipdbmp | Yes. | ||
08:42
thou left
|
|||
FROGGS | tadzik: when assessing to $!attr within your class, you dont use the !, right? | 08:42 | |
mathw | externally accessible set methods for private attributes are useful when you need to do something more complex than just set the attribute. But maybe writing setter methods rather than assignment-ish syntax is considered more idiomatic Perl 6? | ||
FROGGS | mathw: dunno, I do like addignment-ish syntax, and I dont care what the class is doing with it | 08:44 | |
08:44
sqirrel joined
|
|||
tadzik | FROGGS: I do | 08:44 | |
well, depends on what I mean | |||
but it avoids a virtual method call | |||
(virtual in C++-speak) | 08:45 | ||
tipdbmp | So how do I write my own accessors for has $.attr is rw; that are used outside the class as: $obj.attr; # get accessor for $.attr and $ob.attr = 5; # set accessor for $.attr; | 08:51 | |
multi method attr { $!attr } and multi method attr($value) { $!attr = $value) work, but $obj.attr(5); # is the set accessor, while the autogenerated set accessor allows $.attr = 5; | 09:03 | ||
tadzik | r: class A { has $!attr; method attr($a) is lvalue { $!attr = $a } }; A.new.attr = 5 | 09:04 | |
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Cannot call 'trait_mod:<is>'; none of these signatures match::(Mu:U $child, Mu:U $parent):(Attribute:D $attr, :rw(:$rw)!):(Attribute:D $attr, :readonly(:$readonly)!):(Attribute:D $attr, :box_target(:$box_target)!):(Routine:D $r, :rw(:$rw)!):(Rout… | ||
tadzik | pffft! | ||
09:07
xinming_ joined
|
|||
moritz | is rw | 09:08 | |
tadzik | r: class A { has $!attr; method attr($a) is rw { $!attr = $a } }; A.new.attr = 5 | ||
p6eval | rakudo cecc9f: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method attr at /tmp/_IBD_rzp23:1 in block at /tmp/_IBD_rzp23:1» | 09:09 | |
tadzik | hrm | ||
ah, yeah | |||
it should return a Proxy probably | |||
moritz | r: class A { has $!attr; method attr() is rw { $!attr } }; my $x = A.new; $x.attr = 5; say $x.attr | 09:10 | |
p6eval | rakudo cecc9f: OUTPUT«5» | ||
tadzik | oh, cool :) | ||
moritz++ | 09:11 | ||
09:11
xinming left
|
|||
tipdbmp | Okay... I still don't get how I can "validated" what value the set accessor assigns to the $!attr; | 09:16 | |
using the $x.attr = <something>; syntax | 09:18 | ||
09:30
dakkar joined
09:39
kresike joined
|
|||
kresike | hello all you happy perl6 people | 09:39 | |
jnthn | tipdbmp: Well, using a subset type is a good way | 09:42 | |
Otherwise it'll have top be a proxy | 09:43 | ||
*to | |||
09:47
cognominal joined
|
|||
jnthn | moritz: spectest fail list for sink isn't terribly long | 09:49 | |
nwc10 | jnthn: I'm not hugely worried about memory ups or downs w.r.t. forcing a poor little ARM board to build Rakudo for the sake of building Rakudo | 09:57 | |
also, bad news - I failed to spot the factor of 1000 difference - the purloined charger is for *mini* USB, not *micro* USB. | |||
jnthn | nwc10: oh noes! | 09:58 | |
09:58
brrt joined
|
|||
nwc10 | yes. back to where we were 24 hours ago. :-/ | 09:59 | |
sorear | What's this in reference to? | ||
nwc10 | what am I burbling on about - stuff I can get at zero cost that powers hardware I already had. | 10:01 | |
note, "zero cost" seems to be the fun bit here - saving unloved things from landfill (or quietly sleeping in a box somewhere) | |||
sorear | nwc10: I just feel like I'm missing the context here. did I accidentally delete a p6c mailing related to the Pi compilation saga more recent than this summer? | 10:02 | |
10:02
hypolin left
10:08
fhelmberger joined
|
|||
nwc10 | sorear: no, a comment I made here on IRC about 2 or 3 days ago, saying it's slower again. About 24 hours. But does complete and pass tests | 10:09 | |
10:18
anuby left
|
|||
sorear | I see | 10:18 | |
10:23
bbkr_ left
10:31
brrt left
10:34
brrt joined
|
|||
arnsholt | masak: You familiar with a book called "Tecknens rike"? | 10:34 | |
10:37
bbkr joined,
bbkr left
|
|||
dalek | ecza: da13155 | sorear++ | / (6 files): Allow different compartments to have different load paths and compiler hooks |
10:40 | |
sorear | sleep& | 10:41 | |
10:51
masak left
10:53
masak joined
|
|||
masak | good antenoon, #perl6 | 10:54 | |
tadzik | hello hello | ||
masak | arnsholt: yes, I have that book here on my shelf. | 10:59 | |
arnsholt: I almost, but now quite, met the author. | |||
lue: re redeclarations in the REPL not giving an error: that's fairly consistent with redeclarations in Perl 6 in general not giving an error. | 11:01 | ||
arnsholt | Oh, that's a shame. I came across it accidentally recently. It's quite interesting | ||
11:02
mucker joined
|
|||
masak | lue: re "the appearance of working", I think you found a bug. lue++ | 11:02 | |
11:02
cognominal left
11:03
gootle left
|
|||
masak | gist.github.com/4110132 -- surely this doesn't look right? | 11:03 | |
when the corresponding statements are put in a file, Rakudo currently dies when parsing the third statement. | 11:04 | ||
11:05
gootle joined,
gootle left
|
|||
masak | rn: my $a = 42; $a = 43; my $a = 5; say $a | 11:05 | |
p6eval | niecza v22-33-gda13155: OUTPUT«Potential difficulties: Useless redeclaration of variable $a (see line 1) at /tmp/eZH4qY53Je line 1:------> my $a = 42; $a = 43; my $a ⏏= 5; say $a5» | ||
..rakudo cecc9f: OUTPUT«===SORRY!===Redeclaration of symbol $aat /tmp/2LWYeAWef0:1» | |||
masak | Niecza has it right, IMO. | ||
11:05
Su-Shee_ joined
11:09
Su-Shee left
11:11
cognominal joined
|
|||
jnthn | masak: We don't have any worry/panic distinction yet | 11:11 | |
masak: repl thing is fine | 11:12 | ||
every line is a new scope | 11:13 | ||
the utility of a repl is greatly reduced if you can't redeclare things. We allow it just through lexical scoping. | |||
so, working as designed | 11:14 | ||
11:16
brrt left
11:21
cognominal left
|
|||
jnthn | masak: oh, I see the issue...it somehwo gets the wrong value at the end | 11:22 | |
wtf | |||
11:30
cognominal joined
11:34
brrt joined
11:36
cognominal left
11:39
cognominal joined
11:41
Kharec left,
brrt left
|
|||
masak | jnthn: right. | 12:03 | |
masak submits rakudobug | |||
12:04
wamba left,
Su-Shee_ is now known as Su-Shee
|
|||
masak | jnthn: I know about the REPL and scopes. also, as I argued above in my response to lue, even if the REPL *didn't* create a new scope with every line, it still should allow redeclarations just fine, because Perl 6 in general does. | 12:07 | |
12:07
Kharec joined
|
|||
masak | in blogs.perl.org/users/shlomi_fish/20...ities.html -- I'm curious what resources rindolf's countdown prototype ended up consuming, and how the script looked. | 12:10 | |
12:14
mtk joined
12:23
tokuhiro_ left,
tokuhiro_ joined
12:28
mtk left,
mtk joined,
mtk left
12:29
mtk joined
12:36
Psyche^ joined
|
|||
jnthn | masak: yes, but the repl shouldn't warn | 12:37 | |
and normall things should | |||
12:37
cognominal left
12:39
Patterner left,
Psyche^ is now known as Patterner
12:41
cognominal joined
12:46
cognominal_ joined
12:48
cognominal left
|
|||
masak | jnthn: I agree. | 12:56 | |
jnthn | Getting @*WORRIES etc in place should not be too hard | 12:57 | |
masak | I'm reading research.microsoft.com/pubs/170528/...012-79.pdf with interest. about a quarter way through. | ||
from the text: "The heart of reference immutability is that a reference's permission applies transitively. Any new references acquired through a reference with a given permission cannot allow mofidications that the root reference disallows." | 12:58 | ||
that seems to me to be a component that Perl 6 has been missing, sometimes to its detriment. | |||
jnthn | Looks like another attempt to solve the has @.x; style issues | 13:00 | |
masak | for example, the spec says that arrays made immutable (by being passed as a readonly parameter, or by being returned from a readonly accessor) should have immutable elements. | ||
jnthn: right. | |||
there's a great p6l thread about that somewhere. | |||
jnthn | yeah, that's not been a problem anybody has really desired to attack. | ||
masak | sorear is saying that he hasn't seen a cure that wasn't worse than the problem, IIRC. | ||
so far in this paper, this cure looks quite sane and pleasant. | |||
jnthn | That's probably a big part of why :) | ||
masak | I say this as a total threads/concurrency layman, though. | 13:01 | |
jnthn | Scanning through, at least looks worth reading. | ||
13:07
wamba joined
13:08
cognominal_ left
13:12
cognominal_ joined
13:36
pmurias joined
|
|||
pmurias | hi | 13:36 | |
jnthn: can the gotos in rules jump to a label in a different rule? | |||
masak re-reads the bits about "lexotic" and realizes he now understands this concept fully | 13:45 | ||
jnthn | pmurias: never | ||
masak | pmurias: S04 says you cannot goto into a lexical scope if that scope has parameters that need special initialization. | 13:46 | |
so you cannot goto past a parameter-binding boundary. | |||
well, not into it. out of it is fine. | |||
pmurias | masak: the goto is in pir | 13:47 | |
masak | oh, then it's even simpler, I think. | ||
goto in PIR simply doesn't work across routine boundaries. | |||
13:48
Kharec left
|
|||
masak | if you wanted to do some of the exotic goto moves Perl 6 permits in PIR, you'd have to emulate it somehow with some other construct. | 13:48 | |
13:49
SamuraiJack left
|
|||
pmurias | jnthn: what does $!restart in Cursor contain? | 13:53 | |
13:59
cognominal_ left
|
|||
pmurias | should commits on rakudo-js be reported by dalek? | 14:00 | |
tadzik | I'd enjoy that :) | ||
14:04
atrodo joined
|
|||
masak too | 14:05 | ||
wow, precompilation really does make a huge difference in startup speed. | 14:10 | ||
tadzik | it does | 14:11 | |
14:11
flightrecorder left
14:13
flightrecorder joined
|
|||
masak | hm, I seem to have neglected to remove lib/Event.pm from crypt when adding it to Adventure::Engine. fixing. | 14:13 | |
14:13
FROGGS left,
PacoAir joined
|
|||
dalek | rlito: 131944d | (Flavio S. Glock)++ | TODO-perlito5: Perlito5 - TODO update; add more references to documentation and tests |
14:13 | |
masak | jnthn, moritz: good news, everyone: crypt and Adventure::Engine now work under precompilation. jnthn++! | 14:16 | |
14:17
am0c joined
|
|||
tadzik | did they not? | 14:18 | |
14:18
tokuhiro_ left
14:19
tokuhiro_ joined
14:20
Kharec joined
14:21
jlaire joined
14:22
kaleem left,
hash_table joined,
cognominal joined
|
|||
masak | tadzik: up until a few days ago, no. | 14:23 | |
tadzik | oh, recent fixes by jnthn++ | 14:24 | |
14:25
drbean left,
rurban_ joined
14:26
FROGGS joined
|
|||
pmurias | masak: how do I make dalek report commits for a repo? | 14:27 | |
14:27
hash_table left
14:28
drbean joined
|
|||
masak | good question. | 14:32 | |
tadzik | it's documented in perl6/mu somewhere, I thin | ||
colomon | how do you capture a Pair in a signature? | 14:33 | |
masak | r: sub foo(Pair $p) { say "captured!" }; foo( (bar => 42) ) | 14:36 | |
p6eval | rakudo cecc9f: OUTPUT«captured!» | ||
masak | colomon: was your question really "how do you pass a pair when calling a routine?" | 14:37 | |
14:37
rurban_ left
|
|||
colomon | no, I'm looking for | 14:37 | |
for @array-of-pairs -> $key => $value { blah } | 14:38 | ||
except I know that's not right. | |||
(At least, I don't think it is) | |||
ooo, crashed google chrome! | |||
I've worked around my question for the moment, but I'm still curious. | |||
masak | these is a way, using nested signatures. it's quite neat. | 14:39 | |
14:39
kaleem joined
|
|||
masak | rn: for foo => 1, bar => 2 -> $p (:$key, :$value) { say $key } | 14:40 | |
p6eval | niecza v22-33-gda13155: OUTPUT«Potential difficulties: $p is declared but not used at /tmp/McEYGRsG2V line 1:------> for foo => 1, bar => 2 -> ⏏$p (:$key, :$value) { say $key } $value is declared but not used at /tmp/McEYGRsG2V line 1:------> for foo => 1, … | ||
..rakudo cecc9f: OUTPUT«foobar» | |||
masak | rn: for foo => 1, bar => 2 -> $ (:$key) { say $key } | ||
p6eval | niecza v22-33-gda13155: OUTPUT«Any()Any()» | ||
..rakudo cecc9f: OUTPUT«Unexpected named parameter 'value' passed in sub-signature in block at /tmp/G4lUSkUKX5:1» | |||
masak | r: for foo => 1, bar => 2 -> (:$key, :$value) { say $key } | ||
p6eval | rakudo cecc9f: OUTPUT«foobar» | ||
colomon | masak++ | 14:41 | |
do the names have to be key and value? (I'm guessing yes.) | 14:42 | ||
14:42
cognominal left
|
|||
colomon looks again and is sure. | 14:42 | ||
masak | since they bind to attributes in the Pair, yes. | 14:44 | |
r: for foo => 1, bar => 2 -> (:key($k), :value($v)) { say $key } | |||
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Variable $key is not declaredat /tmp/3UbT5wIzW8:1» | ||
masak | r: for foo => 1, bar => 2 -> (:key($k), :value($v)) { say $k } | 14:45 | |
p6eval | rakudo cecc9f: OUTPUT«foobar» | ||
masak | however; as above. | ||
r: for foo => 1, bar => 2 -> (:key($k), :value($)) { say $k } | |||
p6eval | rakudo cecc9f: OUTPUT«foobar» | ||
masak | n: for foo => 1, bar => 2 -> (:key($k), :value($)) { say $k } | ||
p6eval | niecza v22-33-gda13155: OUTPUT«Any()Any()» | ||
masak | sorear: awww :) | ||
masak submits nieczaissue | |||
colomon | masak++ again | 14:46 | |
14:51
am0c left
14:57
stopbit joined
|
|||
colomon | rn: say "this is a test".trans(" " => "\\ ") | 14:57 | |
p6eval | rakudo cecc9f, niecza v22-33-gda13155: OUTPUT«this\is\a\test» | ||
colomon | ooo... it's character based rather than string based. | 14:58 | |
14:58
GlitchMr joined
|
|||
moritz | rn: say "this is a test".trans([' '] => ['\\ ']) | 14:58 | |
p6eval | rakudo cecc9f, niecza v22-33-gda13155: OUTPUT«this\ is\ a\ test» | ||
moritz | colomon: not in this form | 14:59 | |
colomon | moritz: | ||
moritz++ | |||
but .subst is easier for the "one change" case anyway. | |||
I was just all excited because I'd come up with a practical use for .trans minutes before. ;) | |||
err, needs global in the subst case. | 15:00 | ||
colomon appears to be having a lots of small stupid mistakes sort of morning. | |||
masak | .trans violates the Principle of Least Surprise. | 15:02 | |
moritz | .trans tries to do too many things at once | 15:04 | |
GlitchMr | This .trans function actually reminds me strtr() in PHP. | ||
php.net/strtr | |||
Not sure if copying bad PHP design is good idea. | 15:05 | ||
masak | as far as I know, Perl 6 hasn't copied anything from PHP's design. | 15:07 | |
GlitchMr | Yet, .trans looks similar to strtr() from PHP. | 15:08 | |
masak | they seem to have roughly the same function. | 15:09 | |
they are quite different in their signatures. | |||
which still doesn't make Perl 6's .trans intuitive. | 15:10 | ||
15:10
birdwindupbird left
|
|||
masak | I kinda liked pmichaud's suggestion to put the multi-char translation on .subst instead. | 15:10 | |
GlitchMr | In PHP, it looks like strtr("this is a test", [' ' => '\\ ']) | ||
Close enough | |||
masak | the only counterargument to that is that it may be too late to do so. | ||
GlitchMr: I couldn't see from that page what the PHP function does in the case of several keys matching at the same time. (i.e. I see no LTM going on) | 15:11 | ||
GlitchMr: also, there's no mention of regexes as keys. | 15:12 | ||
pmurias | masak: it doesn LTM | ||
* does | |||
masak: according to the example | |||
GlitchMr | masak: "The longest keys will be tried first." | 15:13 | |
From PHP documentantion. | |||
documentation* | |||
I guess this counts as LTM. | |||
masak | pmurias: oh, indeed. | ||
15:13
skids joined
|
|||
masak | it does. | 15:13 | |
jnthn | pmurias: $!restart contains the thing to call back into the restart the match and produce the next cursor | ||
masak | .trans is the only routine I know that expects an argument on the form [...] => [...] | 15:14 | |
that alone is a bit confusing, I guess. | |||
I've seen TimToady get this one wrong ;) | |||
jnthn | masak: If you had a ticket for the AE precomp bug, feel free to clsoe it...I thought you did but when I looked I didn't see it | 15:15 | |
masak | I didn't have a separate one. | 15:17 | |
the one referred to when I discovered my problem is the one you marked testneeded the other day. | 15:18 | ||
jnthn | ah, cool, we pre-empted duping :) | 15:20 | |
15:23
sorenso left
|
|||
masak | moritz++ did. :) | 15:24 | |
15:25
jlaire left
|
|||
jnthn | yeah. Now the operator one is fixed too, I think we may have fixed all the module precomp issues... | 15:26 | |
...which is pre-req for the automatically maintained pre-comp cache | 15:28 | ||
[Coke] | r: say "bar" ~~ /:i frb | BAR/; | 15:30 | |
p6eval | rakudo cecc9f: OUTPUT«「bar」» | ||
[Coke] | is the :i there supposed to impact BAR or just frb? | ||
jnthn | I'm not immediately sure | ||
[Coke] | ok. there's a ticket on that one. you fixed: | ||
jnthn | Would have to go read STD more closely | ||
[Coke] | r: say "bar" ~~ /:i [frb | BAR]/; | 15:31 | |
p6eval | rakudo cecc9f: OUTPUT«「bar」» | ||
[Coke] | where is more obviously the right thing. | ||
jnthn | right, but that wasn't a precedence issue, but an NFA one. | ||
15:31
prammer left
|
|||
masak | [Coke]: I read the :i in /:i frb | BAR/ as affecting both alternatives, and here's why: it affects the rest of the "scope", where a scope is either the whole rule, or the innermost enclosing [] or () group. | 15:32 | |
colomon is watching jnthn on his other computer.... | |||
masak | [Coke]: I don't know if that reasoning holds water, but that's my intuition about it. | ||
jnthn | colomon: oh my...what am I doing? :P | 15:34 | |
colomon | presentation on the perl 6 debugger | ||
jnthn | ah, the lightning talk :) | ||
colomon | ah, yes it is. I thought it was a full lecture | 15:35 | |
well, I guess it won't distract me from work for long! | |||
jnthn++ | 15:36 | ||
jnthn | but playing with the debugger might :P | ||
[Coke] | masak: if you can get someone to agree with you, that's a closable ticket. | ||
colomon | jnthn: indeed it might. but I must press on with $work! | ||
masak | well, hearing what pmichaud or TimToady has to say on the topic would be interesting. | ||
colomon | wait, you just debugged a macro!?! | 15:37 | |
masak | :D | ||
not sure what happens if the macro actually puts a big chunk of code there, though. | 15:38 | ||
[Coke] | r: say 659-86 | ||
p6eval | rakudo cecc9f: OUTPUT«573» | ||
jnthn | masak: hopefully, the right thing | 15:39 | |
dalek | kudo-js: 84d6d4e | (Paweł Murias)++ | run_tests: fix run_tests |
||
kudo-js: 7ef98d5 | (Paweł Murias)++ | / (3 files): [nqp] pass 33 |
|||
kudo-js: 1087377 | (Paweł Murias)++ | / (2 files): [nqp] pass 39 |
|||
jnthn | a mildly-distracted reading of STD seems to support Rakudo's :i scoping | 15:40 | |
15:40
hash_table joined
15:41
aindilis left
|
|||
masak | jnthn: "the right thing" being... what, exactly? the debugger stepping through scores of statements while highlighting the original macro call on each step? | 15:44 | |
the event types of Adventure::Engine: gist.github.com/4111373 | 15:47 | ||
jnthn | masak: I suspect it'll step into the quasi | 15:48 | |
Or let you single tep through it | |||
masak: try it ;) | 15:50 | ||
dalek | kudo-js: b0154c7 | (Paweł Murias)++ | / (3 files): [nqp] implement slurpy positionals, pass test 40 |
15:51 | |
masak | jnthn: ok :) | ||
15:54
kaleem left
16:01
brrt joined
16:03
bowtie joined,
cognominal joined
|
|||
jnthn | decommuten & | 16:04 | |
dalek | kudo-js: 15def0e | (Paweł Murias)++ | / (3 files): [nqp] pass 37,implement slurpy named arguments |
16:05 | |
kresike | bye folks | 16:07 | |
16:07
kresike left
|
|||
dalek | kudo-js: 86c9904 | (Paweł Murias)++ | run_tests: [nqp] add passing test 42 to run_tests |
16:07 | |
16:13
REPLeffect joined,
sisar joined
16:14
spider-mario joined
|
|||
masak | ===SORRY!=== | 16:21 | |
Missing or wrong version of dependency 'lib/Adventure/Engine.pm' | |||
so... if I *don't* precompile, but have an old .pir file sitting around, Rakudo dies? | |||
hm, no, that does not seem to be it. | 16:22 | ||
[Coke] wonders if we need a command line argument for rakudo to wipe any precompiled files. | |||
masak | oh! | ||
so this is what happens. | 16:23 | ||
B depends on A. | |||
precompile both. | |||
then change A and precompile it. | |||
now if you *don't* re-precompile B, you'll get the above error. | |||
16:24
domidumont left
|
|||
masak | or, put differently, precompiling a module will break all the modules dependencies unless you precompile them also. | 16:25 | |
module's* | |||
[Coke] | without keeping track of everything that was precompiled's dependencies, that seems thorny. | 16:26 | |
masak | well, a softer fallback would be to use the .pm version of the module. | 16:27 | |
16:35
xillver left
16:41
grondilu joined
|
|||
pmurias | shouldn't precompilation happend automatically? | 16:41 | |
moritz | eventuelly, yes | ||
masak | if it did, this problem would be nonexistent, yes. | 16:46 | |
so far I've been staying away from precompilation because it seemed to have many problems. | 16:47 | ||
I'd rather have slow startup and consistency than fast inconstencies. | |||
the "Missing or wrong version" error message isn't the end of the world. the cause is easily identifiable, and easily fixable. | 16:48 | ||
but it seems a bit harsh to throw such a message at a downstream module user who just happened to upgrade an upstream module on her system. | |||
especially since the .pir files are always secondary artifacts, and the .pm files are always available. | 16:49 | ||
16:52
mucker left
16:53
cognominal left
16:54
cognominal joined
|
|||
[Coke] | so which is preferably? fall back to .pm on conflict, or re-precompile on conflict? | 16:57 | |
*preferable | |||
I don't mind seeing the occasional warning from niecza about compiling the setting, as a data point. | 16:58 | ||
pmurias | is the precompilation always done in the same way or do people pass compilation flags | ||
? | |||
masak | I've never passed compilation flags to precompilation, or heard of anyone who did. | 16:59 | |
16:59
Kharec left
17:00
brrt left
|
|||
pmurias passes vmlibs in a cargo culted rakudo-js Makefile | 17:00 | ||
17:00
FROGGS left
|
|||
masak | [Coke]: falling back to .pm is "safe", in that it'll always work. but slow. | 17:00 | |
17:01
flightrecorder left
|
|||
masak | [Coke]: re-precompile is going above and beyond the call of duty... but what I'd expect from Perl 6, if there are no risks associated with it. | 17:01 | |
pmurias | but that's too nqp | ||
s/too/in | |||
jnthn back | 17:02 | ||
pmurias | if we re-precompile automatically wouldn't it make sense to move to a fully automatic soultion and get rid of the makefiles? | ||
17:02
cognominal left
|
|||
masak | gladly. | 17:03 | |
jnthn | Yes, but it's really hard to get it right | ||
People and OSes have all sorts of opinions on where the pre-compiled stuff should be stored. | 17:04 | ||
Probably it takes O(weeks) to make it work at all (probably enabled by an environment variable), then O(months) to make it so most people like it... | |||
pmurias | so you are waiting for volunteers? ;) | 17:06 | |
jnthn | pmurias: I'm very happy if somebody steps up to do it. | 17:07 | |
17:07
wamba left,
MayDaniel joined
|
|||
jnthn | Well, maybe best is what I take care of making it work at all and get the Windows side taken care of, and leave @other to sort out the Linux, OSX, BSD etc details of it. | 17:08 | |
Because there's lots of folks who use/know about those, and where stuff should be put. But I ain't one of them. :) | |||
pmurias | & | 17:09 | |
17:10
cognominal joined
|
|||
cognominal | rn: say :($a) ~~ \(1) | 17:12 | |
17:12
pmurias left
|
|||
p6eval | niecza v22-33-gda13155: OUTPUT«===SORRY!===Action method fakesignature not yet implemented at /tmp/RIlBvoteAa line 1:------> say :($a⏏) ~~ \(1)Action method sigterm not yet implemented at /tmp/RIlBvoteAa line 1:------> say :($a)⏏… | 17:12 | |
..rakudo cecc9f: OUTPUT«False» | |||
jnthn | cognominal: ur doin it backwards | ||
r: say \(1) ~~ :($a) | 17:13 | ||
p6eval | rakudo cecc9f: OUTPUT«True» | ||
cognominal | thx | ||
that makes sense | 17:14 | ||
17:22
thou joined
17:26
Kharec joined
17:28
raiph left
|
|||
TimToady ponders whether it would be more useful to make that bind only to a pre-existing $a variable, since you can always write :($) to mean the other | 17:33 | ||
cognominal | TimToady, is there way to unpack structures like signatures do outside function calls? | 17:40 | |
TimToady | what do you mean by "unpack"? | 17:42 | |
if you mean "introspect", there are ways to do that, but if you mean "get data out of them", then signatures never contain data | 17:43 | ||
they only say where to put data | |||
which has to be elsewhere in a lexpad or object | 17:44 | ||
jnthn | r: my ($a, *@rest) := \(1, 2, 3); say $a; say @rest; | ||
p6eval | rakudo cecc9f: OUTPUT«12 3» | ||
jnthn | cognominal: you mean ^ | ||
? | |||
17:44
Kharec_ joined
|
|||
TimToady | in that case the "my" is declaring the actual locations, yes | 17:45 | |
so the sig knows where to bind the data to | |||
17:45
Kharec left
|
|||
jnthn | Aye. | 17:45 | |
17:45
cognominal left
|
|||
TimToady | how hard would it be to make :($a, *@rest) := \(1,2,3) bind to existing variables in the current scope? | 17:47 | |
that is, when there's no declarator on the :() | 17:48 | ||
this is currently seeming like a saner set of semantics than just ignoring the names | 17:49 | ||
and potentially useful | |||
certainly fakesignature has its own rule in STD, so we can know when we're in that situation | 17:50 | ||
jnthn | TimToady: Just taken a look...I don't think it'd be hard ot make work. | ||
*to | |||
TimToady | we might need to relax the sig parsing rules a bit to allow variables that are not lexicals | 17:52 | |
17:52
cognominal joined
|
|||
TimToady | so in addition to $!foo we might be able to bind existing globals and such | 17:52 | |
cognominal | Nov 19 18:45:30 <cognominal>Also S06 uses the expression pattern matching both for this unpacking and for regex, Are they different operations, with regex there is not structure to be recognized but some pattern (sic) in a string while there are already a structure from which one extract information when unpacking using signatures. Or regex could be eventually applied to other things than strings? In that case, signature would be a specialization of | 17:53 | |
these extented regexen | |||
Nov 19 18:49:55 <cognominal>my :( $a ) := 1 # that would be a use of signature outside functions. Not interesting unless when doing unpacking | |||
Nov 19 18:50:21 <cognominal>:( my $a, $b ) := 1, 2 # that would be a use of signature outside functions. Not interesting unless when doing unpacking | |||
Nov 19 18:51:05 <cognominal>one could imagine using an existing variable, and declare a new one at once | |||
sorry about my bad connexion and the lame xchat | |||
I have to read the web irc log to figure out if what I say goes thru | 17:54 | ||
TimToady | okay, need to backlog, I guess... | ||
cognominal | TimToady: apparently my line of thougt was parallel to yours :) | 17:57 | |
17:58
Kharec_ left
|
|||
TimToady | we could perhaps also allow :() within a normal signature to bind the current argument to a fake signautre referencing existing variables | 18:00 | |
though that's a bit more problematical from a closure point of view | |||
18:00
wamba joined
|
|||
jnthn | TimToady: Hm, I don't think we need to complicate signatures any more | 18:02 | |
18:02
Kharec joined
|
|||
jnthn | TimToady: Normal signatures can already bind to attributes and rw accessors. | 18:03 | |
Binding to existing ours...well, that's just a lexical alias. | |||
Don't need to provide a way to bind into more complex package names. | |||
TimToady | nodnod | 18:04 | |
we can fiddle the fakesigs first, and then see if any sane use cases present themselves, then evaluate | 18:05 | ||
18:05
brrt joined
|
|||
TimToady | for now, one can always bind a fakesig as the first thing inside a function and get the same effect as if it were embedded in the function's signature, I expect | 18:06 | |
18:06
domidumont joined
|
|||
cognominal | what are fakesigs? I don't see that in S06. Is it the use of sigs outside fonctions? | 18:07 | |
TimToady | and it can be argued that, since () in a sig already is declarative, it would be confusing to introduce a non-declarative :() inside an existing sig | ||
:() without a declarator | |||
(counting function sigs as a kind of implicit 'my' declarator) | |||
jnthn | fwiw, Rakudo already has a very clean separation of the declaration/binding. | 18:08 | |
Typically, we look at a signature and declare all the things it mentions. | |||
That's a compile-time thing | |||
And the binding of those things is a separate step. | |||
TimToady | if we did do the :() inside sig, it would just be a lookup instead of a declaration, but I do think it might be confusing, and unnecessary | 18:09 | |
jnthn | back in a bit | ||
18:10
dakkar left
18:12
SamuraiJack joined,
brrt left
18:13
grondilu left
|
|||
cognominal | TimToady: about the word unpacking intead of introespecting : "unpack" is the word you use in S06. | 18:15 | |
is the context any different? :) | 18:16 | ||
18:17
sisar left
|
|||
Su-Shee | wow, there isn't much mussing anymore in rakudo.. :) | 18:23 | |
18:25
jaldhar left
18:26
FROGGS joined
18:28
flightrecorder joined
|
|||
jnthn | No, but there's still some things we mussed do... :) | 18:29 | |
Su-Shee | jnthn: still looks nice all the green in the feature matrix. :) | 18:30 | |
18:30
cognominal_ joined
|
|||
jnthn | Su-Shee: Yes, I'm happy with the progress there :) | 18:30 | |
18:32
jaldhar joined,
cognominal left
|
|||
Su-Shee | jnthn: it also looks like things are actually getting to some definition of finish line so many people insist on.. | 18:33 | |
18:37
Chillance joined
|
|||
jnthn | Aye, though people insist on faster too :) | 18:41 | |
Su-Shee | and they're going to want books and then modules and then applications.. :) | 18:42 | |
and then t-shirts.. and mugs.. and .. | |||
jnthn | Don't give them mugs! They'll throw them and then who knows what we get... :P | ||
dalek | rl6-roast-data: c55d7f9 | coke++ | / (4 files): today (automated commit) |
18:44 | |
rl6-roast-data: 707a004 | coke++ | / (3 files): today (automated commit) |
|||
rl6-roast-data: fe0db5a | coke++ | / (4 files): today (automated commit) |
|||
18:45
telex left
18:46
telex joined
|
|||
[Coke] arglebargles, as his primary (work) laptop has to be shipped to corporate for reimaging. | 18:49 | ||
18:50
rurban_ joined
|
|||
jnthn | TimToady: Got a potential patch here, but SIG_STOMACH... :) | 18:56 | |
bbiab | |||
19:03
rurban_ left
|
|||
sorear | good * #perl6 | 19:07 | |
19:08
zjmarlow joined
|
|||
moritz | \o | 19:15 | |
19:20
atrodo left
|
|||
moritz | r: say nqp::p6box_i(nqp::can(1|2, 'randommethod')) | 19:20 | |
p6eval | rakudo cecc9f: OUTPUT«1» | ||
19:20
MayDaniel_ joined,
atrodo joined
|
|||
moritz | jnthn: that's what cause the spectest failures of the qast-sink-1 branch | 19:20 | |
19:21
atrodo left
|
|||
moritz | r: say (1|2).?randommethod | 19:21 | |
p6eval | rakudo cecc9f: OUTPUT«No such method 'randommethod' for invocant of type 'Int' in sub AUTOTHREAD_METHOD at src/gen/CORE.setting:2119 in at src/gen/Metamodel.pm:2394 in block at /tmp/b210TB5OVy:1» | ||
19:21
atrodo joined
|
|||
moritz | it emits the equivalent for my \temp = 1|2; temp.sink if nqp::can(temp, 'sink') | 19:22 | |
19:23
MayDaniel left,
alester joined
|
|||
moritz | I guess I can work around that with a custom sink method in Junction | 19:26 | |
19:28
sisar joined
19:29
kaare_ joined
|
|||
moritz | no, I can't | 19:30 | |
it still autothreads :( | |||
ah no, I'm just silly | |||
TimToady: what should .sink on a Junction do? sink all eigenstates? or nothing at all? | 19:31 | ||
(I'm leaning towards the former) | |||
masak | what's the observable difference? | 19:33 | |
19:34
sisar left
19:35
sisar joined
|
|||
sisar | i'm really fed up with these errors on cygwin: "[main] perl6 8740 child_info_fork::abort: address space needed by 'io_ops.dll' (0x360000) is already occupied" | 19:36 | |
rebasing doen't work :( | |||
(www.cygwin.com/faq/faq-nochunks.htm...-failures) | |||
i'm unable to install panda because of this error | |||
moritz | masak: I guess the differences are pretty obscure | ||
sisar | any pointers to resolve this ? | 19:37 | |
moritz | masak: like, if you have a junction of file handles, and one of them is a Failure from a failed open() | ||
skids | <joke>Obviously perl6 should fork a process for each state and then die one of them</joke> | 19:39 | |
19:39
cognominal_ left
19:44
cognominal_ joined
|
|||
[Coke] | sisar: I don't think any of the core perl6 folks use cygwin - rurban on #parrot on irc.perl.org is probably the best parrot/rakudo/cygwin resource. | 19:44 | |
TimToady | moritz: "sink" means "force any lazy side effects to happen", so if it's possible to have lazy side effects in a junction, it should probably fire them off; it might or might not make sense to emit a "Useless use of junction" warning though | 19:46 | |
sisar | [Coke]: ok, thanks. | 19:47 | |
19:47
SamuraiJack left
|
|||
TimToady | or you can view it as a "pretend you're eager but don't go to any extra effort to actually return the results" | 19:47 | |
19:48
sisar left,
cognominal joined
19:49
cognominal_ left
|
|||
TimToady | arguably junctions in sink context could be used to express parallelism, but the analog with shell's & and | is imperfect | 19:49 | |
skids | Wouldn't a sink on a junction constitute testing any Failures therein for Bool, and thus marking them handled? | ||
TimToady | why would sink supply a Bool context? | 19:50 | |
generally sinking a Failure should throw an exception | |||
s/a/an unhandled/ | |||
skids | OK, well, the exact opposite of what I said, then :-) | 19:51 | |
skids sometimes has logical dyslexia | |||
19:52
cognominal_ joined
|
|||
TimToady | is that sonotlexia or notsolexia? | 19:52 | |
skids | I'm more often precisely wrong than "off to the side" | 19:53 | |
TimToady | well, physicists think that's better | ||
skids | This tends to lead to a lot of naval gazing. | ||
TimToady | "not even wrong" is a slam, coming from a physicist | ||
19:54
cognominal left
|
|||
skids | It actually is a benefit, because I'm usually sure that the answer is one of two things. | 19:54 | |
TimToady | well, not if the actual answer is on the continuum somewhere in the middle :) | 19:55 | |
maybe you should go into politics :) | 19:56 | ||
19:56
Kharec left
|
|||
skids | If it is, then I will precisely identify the point opposite where it is, and seize on it as the answer :-) | 19:56 | |
TimToady | that works if it's really a circle instead of a continuum | ||
like both fascism and communism wrap around to totalitarianism on the opposite side from freedom | 19:57 | ||
skids | No, on a continuum, it still works, you just take the answer equidistant from the midpoint, on the other side :-) | 19:58 | |
TimToady | perhaps you should find the midpoint, where you can be both right and wrong simultaneously | ||
skids | I have friends like that. | 19:59 | |
20:02
Kharec joined,
brrt joined
|
|||
skids | Anyway, since actually using a junction involves testing it for Bool, then the only way to actually throw a Failure that's in a Junction would be through a special construct, so if we want to be able to do that, sink should probably, or we'll need another construct. | 20:03 | |
20:04
fhelmberger left
|
|||
brrt | well, p6, i'm not sure if it counts, but ruby might have outdone you in the madness departement | 20:05 | |
blog.headius.com/2012/11/refining-ruby.html - dynamically scoped methods! | |||
20:06
cognominal joined,
cognominal_ left
20:11
cognominal_ joined
20:12
cognominal left,
sorenso joined
20:13
kurahaupo joined
20:16
domidumont left
|
|||
FROGGS | masak: this can be closed, right? rt.perl.org/rt3/Ticket/Display.html?id=114246 | 20:17 | |
dalek | kudo/qast-sink-1: 6cc0d6c | moritz++ | src/core/Junction.pm: work around nqp::can(Junction, $anything) always returning True |
||
kudo/qast-sink-1: 318e56c | moritz++ | src/ (3 files): Revert "only sink when --sink command line option is provided" This reverts commit 3f12074d13a51b2602039ece5f95454055e8abd0. |
|||
skids | r: "OHAI".say if 1&2&fail(3)&4 + 4 | 20:19 | |
p6eval | rakudo cecc9f: ( no output ) | ||
skids | r: say 1&2&fail(3)&4 + 4 | 20:20 | |
p6eval | rakudo cecc9f: ( no output ) | ||
moritz | skids: note that fail() returns from the current routine | ||
skids | That last eval throws in Oct star. | 20:21 | |
TimToady | brrt: yes, they'be been working on refinements for several years now; it makes me glad we decided to keep a strict separation between lexical dispatch and OO dispatch | 20:22 | |
masak | FROGGS: needstest, I guess. | 20:23 | |
20:23
cognominal__ joined
|
|||
FROGGS | ya | 20:23 | |
I'll have a look if there is something already | |||
[Coke] | FROGGS - if you find one, please add a comment pointing back to the ticket, and mention the test file when you close it out. Danke. | 20:24 | |
masak | skids: "naval gazing" is the one where you stare at ships, no? | ||
20:24
cognominal_ left
|
|||
FROGGS | [Coke]: thats the plan ;o) | 20:25 | |
[Coke] | FROGGS++ | ||
skids | masak: right you are! | 20:26 | |
sergot | hi o/ | ||
skids | r: "HIYA".say if 1&2&Failure.new(X::AdHoc.new())&4 + 4 | ||
p6eval | rakudo cecc9f: ( no output ) | ||
tadzik | hello hello | ||
skids | r: say 1&2&Failure.new(X::AdHoc.new())&4 + 4 | ||
p6eval | rakudo cecc9f: OUTPUT«use of uninitialized value of type Str in string context in block at /tmp/Wnus6mvrfh:1use of uninitialized variable of type Any in string context in block at /tmp/Wnus6mvrfh:1use of uninitialized value of type Str in string contextuse of uninitialized var… | 20:27 | |
masak | tadzik! \o/ | ||
tadzik | masak! \o/ | ||
tipdbmp | my $x, $y, $z = 1, 2, 3; # Is incorrect? | 20:29 | |
How come? | |||
moritz | tipdbmp: precedence | 20:30 | |
FROGGS | = is tighter than , | ||
20:30
cognominal__ left
|
|||
FROGGS | there was a reason, but I forgot :/ | 20:30 | |
moritz | well, there are two ='s | 20:31 | |
the item assignment one if the LHS has $ sigil | |||
it has tighter precedence than = | |||
and the list assignment one if the sigil on the left is @ or % | |||
which has looser precedence than = | |||
so both my @a = 1, 2, 3 and $a = 1, $b = 2, $c = 3 work | 20:32 | ||
but you can't make that *AND* $x, $y, $z = 1, 2, 3 work | |||
tipdbmp | What about: my $x, $y, $z; | ||
moritz | r: my $x, $y, $z | ||
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Variable $y is not declaredat /tmp/F1ezlTV6mz:1» | ||
[Coke] | r: my ($x, $y, $z); | 20:34 | |
p6eval | rakudo cecc9f: ( no output ) | ||
brrt | r: my ($x, $y, $z) = 1, 2, 3; say $x + $y +$z; | 20:37 | |
p6eval | rakudo cecc9f: OUTPUT«6» | ||
zjmarlow | hi. is there a way to get the current line number of an open file or does it have to be kept track of separately? | 20:38 | |
tipdbmp | One more place to get rid of the parens? =) | ||
brrt | r: say IO.^methods | 20:39 | |
p6eval | rakudo cecc9f: OUTPUT«» | ||
brrt | that is odd | ||
it works for me | |||
r: say IO.^methods.perl | |||
p6eval | rakudo cecc9f: OUTPUT«()» | ||
brrt | oh, wait, sandbox? | ||
geekosaur | likely | 20:40 | |
dalek | ast: 266acab | (Tobias Leich)++ | S11-modules/import.t: Note about corresponding RT ticket |
20:43 | |
TimToady | tipdbmp: no, we're trying to discourage use of my ($x, $y, $z) because it tends to encourage people to group unrelated declarations; I'd much rather see a separate 'my' for each declaration, with its own initializer. | 20:44 | |
jnthn back | |||
FROGGS | TimToady: ... and maybe its own comment describing what the var does | ||
skids | zjmarlow: basically not all file reads happen as lines, so the offered interface is in characters, not lines ($*IN.tell). But if you are using a single loop, $*IN.kv -> $linenum, $content works. | 20:45 | |
erm, $*IN.lines.kv that is | |||
lue | It seems the SCGI module isn't getting the entire netstring. Could this be an issue with IO::Socket::INET? | 20:46 | |
dalek | kudo/nom: bf472b0 | jonathan++ | src/Perl6/Actions.pm: Make :($a, $b) := \(1, 2) update $a and $b. Previously, the spec had such a construct doing nothing. We'll try it like this for a bit to see how it works out. Note, shortest patch that could possibly work; probably needs some tuning. |
||
jnthn | TimToady: Doesn't bust any spectests, so let's give it a go. :) | 20:47 | |
moritz | jnthn: in the qast-sink-1 branch, t/spec/S02-types/bool.t now segfaults violently | 20:50 | |
.. on one of my machines | |||
on the other, it's fine | |||
apart from that, the spectests look good | 20:52 | ||
jnthn | moritz: That test file has been known to do that occasionally with little pattern. | ||
moritz: It sometimes does in the daily roast runs | |||
moritz | jnthn: oh, ok | ||
jnthn | And not other days | ||
So I'd not hold merging off for it. | |||
20:52
dedis left
|
|||
moritz | I'm pretty sure I want to wait until after the release | 20:52 | |
jnthn | My last attempt to track that segfault down didn't go far. :( | 20:53 | |
OK, that works too :) | |||
Probably safer given that this can have quite some side-effects... | |||
Probably good to smoke the cheese too | |||
20:53
ifim joined
|
|||
moritz | my next experiment is to turn off the 'eager' that is now emitted for for-loops | 20:55 | |
jnthn | ah, yes | ||
One of us probably should look at getting MapIter to sink in a good way too | |||
moritz | so far I just forward it to .eager | ||
20:55
Bzek left
|
|||
jnthn | Yeah | 20:55 | |
That's enough for now | 20:56 | ||
moritz | oh, and another problem | ||
jnthn | But really it needs to throw away the results | ||
moritz | the last statement in the mainline isn't evaluated in sink context | ||
jnthn | Yeah, that's a bit tricky | ||
Because in an eval, or at the REPL, it shouldn't be. | 20:57 | ||
mj41 | rhr: gist.github.com/4113825 | ||
jnthn | Provided we can find a way to distinguish, though, it's easy to fix: just push an lookup of Nil onto the statement list :) | ||
20:58
Bzek joined
|
|||
mj41 | hi, File::Spec::Unix is broken (rakudo HEAD) ... gist.github.com/4113825 github.com/FROGGS/p6-File-Spec/blo...nix.pm#L23 | 20:59 | |
FROGGS | mj41: whats wrong with it? | 21:00 | |
moritz | r: eval 'sub MAIN() { say 42 }' | ||
p6eval | rakudo cecc9f: OUTPUT«42» | ||
moritz | :( | ||
FROGGS | r: gist.github.com/4113825 | ||
p6eval | rakudo cecc9f: OUTPUT«===SORRY!===Couldn't find terminator $stop at line 4, near "]+[\\/|$]] "» | ||
moritz | jnthn: and we have to worry about stuff like putting traits into sink context (or not, dunno) | 21:01 | |
ie where we cross the nqp <-> rakudo boundary | |||
skids | .oO(multi sub a ( --> Int) {...}; multi sub a ( --> Str) {...}; :(Int $a) := a(); # the return of wantarray?) |
21:03 | |
moritz | there's a reason we abolished want() :-) | 21:05 | |
moritz -> sleep | |||
arnsholt | skids: Polymorphism on return values aren't possible | 21:06 | |
masak perks up | |||
arnsholt: why not? | |||
arnsholt: I mean, not even if you *specify* the return type in the signatures, as here? | 21:07 | ||
arnsholt | The problem is selecting the right candidate when the multi is called | ||
skids | Well, I notice they aren't in .signature as of now. | ||
arnsholt | (Modulo my memory) | ||
masak | arnsholt: indeed. | ||
21:08
kaare_ left
|
|||
masak | but right now I can't construct an example that feels really problematic :) | 21:08 | |
arnsholt | Getting it right in the general case requires a sufficiently intelligent optimizer I think (heck, I wouldn't be surprised if it were undecidable) | ||
Well, "my $foo = return-value-polymorphic()" can be a problem, 'cause now you have to trace through the program to find clues as to the possible types of $foo | 21:09 | ||
21:09
GlitchMr left
|
|||
arnsholt | Suddenly it's very, very non-local to the invocation | 21:09 | |
jnthn | If you want such things, make a return value that contextualizes appropriately. | 21:10 | |
skids | But then we're essentially back to wantarray on the inside of subs, just using lots of buts. | ||
FROGGS | cool, only one fail in current spectest! | ||
jnthn | skids: It's not wantarray 'cus you're not deciding anything in the sub. | 21:11 | |
mj41 | FROGGS: Does it make sense to fix it or should we wait for rakudo fix? | ||
FROGGS | mj41: I still dont know whats broken | 21:12 | |
colomon thinks building rakudo just shut down his linux box... | |||
skids | Well, you're doing a lot of extra work then, unless the contextualization happens lazily. | ||
mj41 | FROGGS: see updated gist.github.com/4113825 | ||
FROGGS | ohh | ||
let me test | |||
jnthn | skids: Still less work than solving an undecidable problem :P | 21:13 | |
skids | .oO(if it were only allowed explicitly...) |
21:14 | |
jnthn | Module. :) | ||
skids | :-) | ||
colomon is now pretty sure that must be it, because it just happened again. | |||
jnthn | colomon: Um. | ||
colomon | jnthn: no worries, it's something wrong with my linux box. | ||
jnthn | How can compiling something shut down a machine? | ||
skids | overheat? | ||
jnthn | Oh, maybe that :) | ||
Well, with all those hot new features... | 21:15 | ||
FROGGS | ;o) | ||
21:15
brrt left
|
|||
colomon | I don't think it's overheat... at least, the box doesn't seem hot and the one time I monitored the temp it was stable. | 21:15 | |
somehow the box is borked and when processes use too much memory it just turns off. as far as I can tell, anyway. | 21:16 | ||
lue | for the record, rakudo compilation could easily shutdown my old laptop :) | ||
colomon | I mean, turns off for sure. | ||
mj41 | FROGGS: patch here gist.github.com/4113825 ... or I can fork and send pull request or I can ask for commit bit :-) | ||
colomon | the memory thing is conjecture but seems to match what I'm seeing. I guess it might be too much processing in general, hard to separate the two. | ||
the machine is five or six years old now, I think I'm just going to have to break down and replace it. | 21:17 | ||
lue | colomon: I've experienced seemingly-random shutdowns before, I would agree that it's your computer. | ||
FROGGS | mj41: I just pushed a patch, all tests are fine on my box | ||
mj41 | FROGGS: thx | ||
lue | s/computer/computer's memory/ | ||
colomon | I'm sure it's not a rakudo issue, other than rakudo being a bit of a pig. ;) | ||
FROGGS | mj41: whats your github id? | ||
mj41 | FROGGS: github.com/mj41/ | 21:18 | |
FROGGS | mj41: you have commit bit | ||
mj41 | FROGGS: thanks | 21:19 | |
skids | colomon: don't feel bad. My BIOS menus overheat my laptop to the point that linux will turn itself off on boot. BIOS coders are savages. | ||
lue | colomon: Even though this new comp has 1GiB RAM (which compiles rakudo well enough), I still wish we didn't have The CORE.setting Step™ | 21:21 | |
skids guesses that ™ has a tight precedence | 21:22 | ||
FROGGS | I'm pretty happy with my box, stage parse takes 78s | ||
colomon | lue: the box in question has 8 GB ram. | 21:23 | |
lue | For me it's now about 1500s (IIRC). Which is a big improvement over my old laptop, which had a time on the last rakudos I tried of ∞s :) | ||
colomon: that's.. interesting. I always blamed my RAM/computer age, in any case. (My last best guess is some issue with the kernel, but that's as specific an idea as I can get.) | 21:25 | ||
21:36
hash_table left
21:37
xilo joined
|
|||
lue | would I be correct in assuming nqp/src/QAST is where the nqp->pir step occurs? | 21:44 | |
jnthn | lue: Yes, specifically in Compiler.pm and Operations.pm | 21:47 | |
masak | two of my favorite files of all time. | 21:50 | |
jnthn | masak: Weirdo :P | ||
They do the ugly stuff :) | |||
masak | much nicer than previous iterations. :) | 21:51 | |
it's HOP! it's OO! | |||
jnthn | .oO( just wait until you see the JVM versions :P ) |
||
lue | Ah, that's why you like them. | ||
21:51
sirrobert left
|
|||
jnthn | masak: Well, yeah, I wrote it so of course it's a paradigm mashup :P | 21:51 | |
lue is again considering porting NQP to LLVM | 21:52 | ||
jnthn | lue: The trouble is how LL it is... | 21:53 | |
masak .oO( jnthn, paradigm DJ ) | 21:54 | ||
lue | well, if the effort fails miserably, there's always NQP to C/++ (and therefore to Clang) :) | ||
masak | lue: whatever happened to your plans to use Adventure::Engine for something? | ||
I was looking forward to that... :) | |||
lue | I got distracted by a new computer in the first days of August, and I have yet to be reinterested in IF games (I haven't even installed gargoyle yet!) | 21:55 | |
masak | ;) | 21:56 | |
well, I'm diving back into all those modules, so now would be a good time to ask me stuff. | 21:57 | ||
21:58
MayDaniel_ left
|
|||
lue | The past week or so I've gotten into Perl 6 For The Web (hence the SCGI question earlier), and am currently pondering that NQP->LLVM thing again :) | 21:58 | |
diakopter | lue: you'd need to write a GC (or use a packaged one) | 21:59 | |
lue | bright side of life: I get to learn what a GC does, in thrilling high definition^W^W detail! :) | 22:01 | |
masak advises taking smaller bites of life :) | 22:02 | ||
diakopter | the original acronym of LLVM meant VM in the "instruction set that sits above the hardware" sense, not the "language runtime/environment" sense | 22:04 | |
lue | (What is likely helping my optimism is how oddly fun I've found assembler the one or two times I've used it (for simple,small things, but still)) | ||
22:07
cognominal joined
22:10
skids left
|
|||
arnsholt | lue: An alternative approach to Perl 6 for the Web would be wrapping ZMQ with NativeCall and doing HTTP with Mongrel2 | 22:12 | |
There're some holes in Zavolaj that need workarounds ATM, but I think it's feasible | 22:13 | ||
lue | arnsholt: ye olde CGI works fine, it just the P6 FastCGI and SCGI modules that I haven't yet gotten to work (right now I think I prefer SCGI of the two) | ||
22:14
sorenso left
22:19
erkan left
22:21
snearch joined
|
|||
tadzik | good knight | 22:27 | |
22:28
Exodist joined
|
|||
lue | jnthn: did you mean .nqp instead of .pm ? | 22:30 | |
22:30
spider-mario left
22:31
hash_table joined
|
|||
jnthn | lue: yes | 22:33 | |
22:35
pmurias joined
|
|||
pmurias | lue: the problem with targeting LLVM is that you would have to write loads of runtime stuff (basically a whole VM on top of it) | 22:37 | |
lue: targeting C and LLVM is basically the same level of abstraction | 22:38 | ||
diakopter | (except llvm can compile and run bitcode at runtime in the same process) | ||
pmurias | you could compile and dynamically load C | 22:39 | |
lue | Well, my main goal with the port is to have Perl 6 compiled to native machine code. It's not as much of an issue now, but I still think it'll be (a) fun (learning experience). | ||
(At least I didn't pick GCC. That never looked like a lot of fun) | 22:40 | ||
diakopter | lue: perhaps easier would be to think about a JIT for an interpreter | ||
pmurias | the javascript backend compiles Perl 6 to native code (through V8) | ||
22:40
erkan joined,
erkan left,
erkan joined
|
|||
lue is not aware of other nqp backends | 22:42 | ||
pmurias | lue: and there's a lot of things I could use help with that (a lot of them moderately easy like write extra tests for nqp) | ||
github.com/pmurias/rakudo-js | |||
22:44
zjmarlow left,
zjmarlow joined
|
|||
lue | (I also have a small, dismal no-supporting-evidence hope that LLVM instead of PIR makes the CORE.setting step faster) | 22:44 | |
pmurias | that depends how good the LLVM backend is | 22:48 | |
lue | of course. Like I said: small, dismal, no-supporting-evidence :) | 22:49 | |
Hm. I'm thinking that instead of trying to learn two things at once, I should start by implementing a joke language in LLVM, and then moving to nqp. | 22:51 | ||
masak | (small steps)++ | 22:52 | |
lue feels a package manager metaphor floating around somewhere... | 22:54 | ||
jnthn | 'night | ||
TimToady | o/ | ||
22:55
xilo left,
Kharec left
22:56
PacoAir left
22:57
snearch left
|
|||
masak | 'night, #perl6 | 23:03 | |
lue | good knight, masak o/ | ||
TimToady | now where did I put my round table... | 23:04 | |
std: 1 !~~~ 2 | |||
p6eval | std d38bbd0: OUTPUT«Potential difficulties: ~~~ is not an infix operator (to suppress warning put space between infix ~~ and prefix ~) at /tmp/_gNDMDsqp_ line 1:------> 1 !~~⏏~ 2ok 00:00 42m» | ||
23:06
zjmarlow left
23:08
zjmarlow joined
23:10
tokuhiro_ left,
wamba left,
tokuhiro_ joined
23:13
xilo joined
23:17
zjmarlow left
23:23
whiteknight joined
23:24
bapa left
23:40
stopbit left,
skids joined
|