»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:00
denisboyun left
00:05
berekuk left
00:07
sftp_ joined
|
|||
psch goes to sleep | 00:08 | ||
00:08
psch left,
spider-mario left
00:09
sftp left
00:36
jeffreykegler joined
00:52
jeffreykegler left
01:00
berekuk joined
01:13
BenGoldberg joined
01:23
clsn joined
01:28
araujo joined
|
|||
timotimo | what to do now? | 01:37 | |
colomon | 1. steal underwear | 01:48 | |
02:13
thou left
|
|||
colomon | preflex: tell rindolf gist.github.com/colomon/8379810 runs in 6.5 minutes under Niecza. Haven't gotten it to work under Rakudo yet. | 02:24 | |
preflex | Consider it noted. | ||
02:31
berekuk left
02:36
pecastro left
02:48
c1sung left
02:54
c1sung joined
03:49
atroxaper joined
|
|||
[Coke] | colomon: is fudging or fixing niecza on your radar? | 04:06 | |
colomon | [Coke]: not today, certainly | 04:07 | |
in the next couple days, maybe | |||
[Coke] | just wondering. no pressures. | 04:08 | |
04:09
skids joined
04:18
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex left,
preflex_ is now known as preflex
04:23
thou joined
05:26
eternaleye is now known as eternaleye_
05:27
ssutch joined
05:37
wooden left
05:41
wooden joined
05:42
wooden left,
wooden joined
06:09
xinming_ joined
06:11
xinming left
06:23
ssutch left
06:24
ssutch joined
06:33
BenGoldberg left
06:56
xinming joined
06:58
xinming_ left
06:59
hummeleBop joined
07:01
xinming_ joined,
xinming left
07:14
xenoterracide left
07:51
grondilu joined
08:14
darutoko joined
08:15
thou left
08:16
SamuraiJack joined
08:22
thou joined
|
|||
hoelzro | morning #perl6! | 08:41 | |
raydiak | \o morning | 08:42 | |
FROGGS | morning | ||
08:44
daniel-s joined
|
|||
hoelzro | so my spectest succeeded | 08:44 | |
\o\ | |||
/o/ | |||
FROGGS | \o/ | 08:45 | |
hoelzro | PR pending for both roast and rakudo | ||
dalek | kudo/nom: 2312829 | (Rob Hoelz)++ | src/core/Hash.pm: Make :delete work with typed hashes |
08:48 | |
kudo/nom: 58307f7 | (Tobias Leich)++ | src/core/Hash.pm: Merge pull request #234 from hoelzro/nom Make :delete work with typed hashes |
|||
ast: 649a552 | (Rob Hoelz)++ | S09-typed-arrays/hashes.t: Add test for :delete + typed hashes |
|||
ast: ce1f2e7 | (Tobias Leich)++ | S09-typed-arrays/hashes.t: Merge pull request #34 from hoelzro/master Add test for :delete + typed hashes |
|||
FROGGS | hoelzro: can you check if the roast tests work on niecza/pugs? | ||
(and fudge them otherwise?) | |||
hoelzro | FROGGS: sure, I can try | 08:49 | |
also, how do I leave a message for lizmat? | |||
I figured she should have a look at my impl in case I did something wrong | 08:50 | ||
FROGGS | preflex: tell hoelzro This way | 08:51 | |
preflex | Consider it noted. | ||
hoelzro | FROGGS: thanks! | 08:52 | |
preflex | hoelzro: you have 1 new message. '/msg preflex messages' to read it. | ||
hoelzro | preflex: tell lizmat I fixed a bug with your typed hashes feature; would you mind looking it over? | ||
preflex | Consider it noted. | ||
08:53
nebuchadnezzar left
08:55
nebuchadnezzar joined
|
|||
hoelzro | damn, building NQP-m is segfaulting =/ | 08:55 | |
08:56
skids left
|
|||
hoelzro | actually, FROGGS, I don't think I need to actually run niecza on it, since typed hashes aren't impl'd there | 09:01 | |
I just need to adjust the fudge number on line 62, right? | |||
09:01
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
hoelzro | k, new PR for roast | 09:06 | |
hmm | 09:16 | ||
sv->value ends up being NULL in compiler.c, line 400 | 09:17 | ||
dalek | ast: c79bc98 | (Rob Hoelz)++ | S09-typed-arrays/hashes.t: Update fudge number for typed hashes test |
09:24 | |
ast: 4c530a3 | (Tobias Leich)++ | S09-typed-arrays/hashes.t: Merge pull request #35 from hoelzro/master Update fudge number for typed hashes test |
|||
09:29
thou left
09:34
geekosaur left,
geekosaur joined
|
|||
masak | antenoon, #perl6 | 09:44 | |
FROGGS | o/ | ||
hoelzro | ahoy masak | 09:49 | |
09:54
dmol joined
09:56
rindolf joined
|
|||
rindolf | Hi all. | 09:58 | |
colomon: here? | |||
hoelzro | ahoy rindolf | 10:01 | |
rindolf | hoelzro: meow. | ||
10:04
SamuraiJack left
10:33
kivutar joined
10:50
SamuraiJack joined
10:51
Rotwang joined
10:53
Piers left,
kivutar left,
Piers joined
10:56
berekuk joined
10:57
denisboyun joined
11:02
atroxaper left
11:06
mberends joined
11:07
xinming joined
11:08
ingy left,
wsri left,
avuserow left,
cibs left,
mtj_- left,
[Coke] left,
mathw left,
pmichaud left,
Util left,
masak left,
breinbaas left,
daniel-s left,
preflex left,
c1sung left,
REPLeffect left,
colomon left,
yogan left,
torbjorn left,
simcop2387 left,
dbrock left,
go|dfish left,
xfix left,
bakedb left,
Ulti left,
rom1504 left,
kivutar joined
11:09
xinming_ left
11:12
xinming_ joined
11:13
xinming left,
ingy joined
11:14
wsri joined
11:17
xinming_ left,
berekuk left
11:18
cianuro joined
|
|||
cianuro | buongiorno a tutti | 11:19 | |
11:23
xinming joined
11:33
cianuro left
11:47
daniel-s joined,
preflex joined,
c1sung joined,
REPLeffect joined,
colomon joined,
yogan joined,
torbjorn joined,
simcop2387 joined,
dbrock joined,
go|dfish joined,
xfix joined,
bakedb joined,
Ulti joined,
rom1504 joined,
dickson.freenode.net sets mode: +v preflex
11:51
avuserow joined,
mtj_- joined,
[Coke] joined,
mathw joined,
pmichaud joined,
Util joined,
masak joined,
breinbaas joined
|
|||
FROGGS[mobile] | hi cianuro | 11:57 | |
11:59
spider-mario joined
12:00
spider-mario left
12:01
mohij joined
12:02
spider-mario joined
12:27
mtk left
12:30
mtk joined
12:33
mohij left
12:36
pecastro joined
12:41
araujo left
12:42
araujo joined,
araujo left,
araujo joined
12:54
psch joined
|
|||
psch | hi #perl6 | 12:54 | |
timotimo | o/ | 12:55 | |
12:56
kaare_ left
12:58
denisboyun left
|
|||
timotimo | what's on the menu for perl6 today? :3 | 13:06 | |
rjbs | Popcorn. | ||
timotimo | maybe i'll implement div to round towards -inf on parrot | ||
13:16
mohij joined
|
|||
psch | how can i get locprepost from the optimizer? World has a method which takes a cursor, but afaict the optimizer doesn't have a cursor | 13:20 | |
timotimo | that's the line of your code? | 13:23 | |
psch | yeah, it should be | ||
timotimo | stuff from the cursor is mostly attached to the .node of the QAST nodes, but i'm not sure how exactly to get the line from that | ||
psch | for the eject symbol and all in X::Comp.gist | ||
timotimo | ah | 13:24 | |
moritz | the match should be enough for that, no? | 13:27 | |
13:28
mohij left
13:29
mtk left
|
|||
psch | moritz: the match is attached to the past the optimizer gets? | 13:29 | |
moritz | psch: yes | ||
as $past.node | 13:30 | ||
psch | right, that's where i get .from and .orig for the line numbers | 13:31 | |
or rather, from the $op | |||
as in, $op.node.orig etc | |||
13:40
zakharyas joined
13:42
atroxaper joined
|
|||
psch | it works, thanks moritz | 13:45 | |
TimToady sitting at gate at sjc | |||
psch | i was wary of trying it like this because the cursor has .from instead of .pos, but seeing as it's used interchangeable in another spot and i adopted it from there, i probably should have just tried it | 13:46 | |
13:46
daniel-s left
|
|||
TimToady | lots of powered seats in the terminal, all without power :/ | 13:46 | |
boarding & | 13:48 | ||
hoelzro | does anyone have a good guide for P6 contexts for P5 programmers? | 13:50 | |
I'm having a rough time with this. | |||
moritz | hoelzro: with lists vs. items, or other kind of contexts? | 13:53 | |
hoelzro | just list vs item atm | ||
by other contexts, do you mean boolean vs numeric vs string? | |||
13:53
FROGGS[mobile] left
13:54
FROGGS[mobile] joined
|
|||
moritz | yes | 13:54 | |
doc.perl6.org/language/containers is a start, but I realize know that it stops before getting to the really interesting bits | |||
faq.perl6.org/#ref | 13:55 | ||
13:56
mtk joined
|
|||
hoelzro | oh, I did not know about faq.perl6.org | 13:57 | |
moritz++ | |||
psch | gist.github.com/peschwa/8377306 # still a few thinks amiss... | 14:10 | |
can it actually happen that the optimizer has to throw "undeclared routine"? seeing as the grammar does as well | |||
similarly for "undeclared private method" | |||
(also, the tests probably aren't exhaustive enough, and there's *still* a nominal type check failure...) | |||
14:11
denis_boyun joined
|
|||
moritz | psch: the grammar can't catch all cases, because you can post-declare both subs and private methods in Perl 6 | 14:11 | |
in fact, I don't even know which cases Grammar.pm could reasonably catch | 14:12 | ||
psch | oh, okay | ||
r: class A { method doit() { self!really() } }; my A $a .= new; | 14:16 | ||
camelia | ( no output ) | ||
psch | r: class A { method doit() { self!really() } }; my A $a .= new; $a.doit; | ||
camelia | rakudo-jvm 58307f: OUTPUT«No such private method '!really' for invocant of type 'A'» | ||
..rakudo-parrot 58307f: OUTPUT«No such private method '!really' for invocant of type 'A' in method doit at /tmp/xyFcu1Yzij:1 in block at /tmp/xyFcu1Yzij:1» | |||
psch | r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;' $!.perl | ||
camelia | rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/y4cvvj_L5TTwo terms in a rowat /tmp/y4cvvj_L5T:1------> really() } }; my A $a .= new; $a.doit;' ⏏$!.perl expecting any of: postfix infix stoppe…» | ||
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/7I8AikkWAYTwo terms in a rowat /tmp/7I8AikkWAY:1------> really() } }; my A $a .= new; $a.doit;' ⏏$!.perl expecting any of: postfix infix sto…» | |||
psch | r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;'; $!.perl | ||
camelia | ( no output ) | 14:17 | |
FROGGS | r: try EVAL 'class A { method doit() { self!really() } }; my A $a .= new; $a.doit;'; say $!.perl | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«X::Method::NotFound.new(method => "!really", typename => "A", private => Bool::True)» | ||
psch | ... right | 14:18 | |
FROGGS++ moritz++ timotimo++ jnthn++ masak++ # catching up | 14:19 | ||
FROGGS | :o) | ||
diakopter | rjbs++ # absurd but not that absurd | ||
hoelzro | hmm | 14:21 | |
I've got this code: for @cells -> $cell { $cell.value = Int } | |||
is there a way to work a hyper operator in here? | |||
like @cells<<.value = Int? | |||
maybe @cells<<.value = map({ Int }, 1 ... Inf) | 14:22 | ||
timotimo | @cells>>.value will give you a list of lvalues | 14:23 | |
so @cells>>.value X= Int should work | 14:24 | ||
r: my @cells = Pair.new xx 5; say @cells; @cells>>.value X= Int; say @cells; | 14:26 | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => MuAny => Mu Any => Mu Any => Mu Any => Mu Any => Mu» | ||
timotimo | hm. | ||
14:29
raiph2 joined,
raiph joined
|
|||
timotimo | hm, maybe a dbus binding for perl6 would be interesting | 14:29 | |
14:41
hummeleBop left
|
|||
masak | hoelzro: I'd just do `@cells = Int xx @cells;` | 14:42 | |
timotimo | that doesn't seem like a translation of what rob had before to me | 14:43 | |
14:43
xinming left
14:44
xinming joined
|
|||
hoelzro | oh, that works too =) | 14:44 | |
14:44
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
Rotwang | will File::Temp be included in R* release in the future? | 14:44 | |
hoelzro | oh, wait | 14:45 | |
I need to preserve the existing cell objects | |||
FROGGS | @cells>>.value.map({ $_ //= Int }) ? | ||
hoelzro | wouldn't that result in just getting the values? | 14:46 | |
14:47
johnmilton joined
|
|||
FROGGS | it assigns to it in the map | 14:47 | |
timotimo | that is, if the value method is rw | ||
hoelzro | oh, because map aliases it? | 14:48 | |
FROGGS | r: my @cells = Pair.new xx 5; say @cells; @cells>>.value.map({ $_ //= Int }); say @cells | 14:49 | |
camelia | rakudo-jvm 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => MuNominal type check failed for parameter 'lhs' in block at /tmp/metoJiY_Dd:1 in block at gen/jvm/CORE.setting:7346 in block at gen/jvm/CORE.setting:7210 in method gimme at gen/jvm/CORE.se…» | ||
..rakudo-parrot 58307f: OUTPUT«Any => Mu Any => Mu Any => Mu Any => Mu Any => MuNominal type check failed for parameter 'lhs'; expected Any but got Mu instead in sub METAOP_TEST_ASSIGN:<//> at gen/parrot/CORE.setting:16608 in block at /tmp/_2uZWfWe32:1» | |||
14:56
beastd joined
14:58
atroxaper left
15:16
xenoterracide joined
15:17
cognominal left,
cognominal joined
15:21
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
jnthn | Good UGT morning, #perl6 | 15:23 | |
preflex | jnthn: you have 1 new message. '/msg preflex messages' to read it. | ||
moritz | \o jnthn | ||
clsn | r: sub f(:a($b)) { say $b }; f(:a(1), :a(2)) | 15:24 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«2» | ||
clsn | r: sub f(:a(:b($b))) { say $b }; f(:a(1), :b(2)) | ||
camelia | rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed in sub f at /tmp/MYIMfeMTcW:1 in block at /tmp/MYIMfeMTcW:1» | ||
..rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed» | |||
clsn | hm. A little inconsistent. going to make truly matching Signatures near impossible. | 15:25 | |
moritz | r: sub f(:$a) { say $a }; f :a(1), :a(2) | 15:26 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«2» | ||
moritz | r: sub f(:a(:$b)) { say $b }; f :a(1), :b(2) | ||
camelia | rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed» | ||
..rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed in sub f at /tmp/HwmHrgIW4G:1 in block at /tmp/HwmHrgIW4G:1» | |||
moritz | r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0].perl | 15:27 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«:a(:b(:$b))» | ||
arnsholt | Should be f :a(:b(1)) no? | ||
moritz | r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0] | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«:a(:b(:$b))» | ||
moritz | r: sub f(:a(:$b)) { say $b }; say &f.signature.params[0].named_names | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«b a» | ||
jnthn | Note that a Parameter object has a list of all names it can be matched by | ||
ah, like moritz++ just shoved | 15:28 | ||
moritz | arnsholt: no, the sub f(:a(:$b)) { } syntax installs a and b as aliases | ||
arnsholt | Ah, right | ||
moritz | IMHO it's a bug that it complains about :a as unexpected named parameters | ||
clsn | yeah... but it can be matched multiple times by one of those names, but not by two of them. | ||
arnsholt | I thought it'd be destructuring | ||
moritz | r: sub f(:a(:$b)) { say $b }; f :a(1) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«1» | ||
15:28
SamuraiJack left
|
|||
moritz | r: sub f(:a(:$b)) { say $b }; f :a(1), :b(1) | 15:28 | |
camelia | rakudo-jvm 58307f: OUTPUT«Unexpected named parameter 'a' passed» | ||
..rakudo-parrot 58307f: OUTPUT«Unexpected named parameter 'a' passed in sub f at /tmp/MIqs0Ev188:1 in block at /tmp/MIqs0Ev188:1» | |||
jnthn | arnsholt: No, you need subsignatures for that | ||
arnsholt | Right, right | 15:29 | |
In that case I guess it's a bug =) | |||
moritz | and the bug only occurs when both are present | ||
jnthn | moritz: So...which of the two values should it take? | ||
moritz | clsn++ # good find | ||
clsn | Same as when there's only one: the last one, I guess | ||
Thanks. | |||
moritz | jnthn: it should be consistent with f :a<1>, :<2> | ||
jnthn | It current takes the first avialable name. I don't fancy making parameter binding slower... | ||
moritz | erm | ||
jnthn: it should be consistent with f :a<1>, :a<2> | |||
jnthn | moritz: That makes things n**2, no? | 15:30 | |
moritz: Since parameter order != argument order, so we have to go through all the possible names and see which was passed first... | |||
I'm not sure we actually preserve enough info to know which of the two nmaes came first on all backends. | 15:31 | ||
moritz | jnthn: I don't know enough about the binder to answer that | ||
jnthn: but I'd expect there to be a hash from (alias) name to actual variable | |||
jnthn | Moar and probably do it. I dunno if JVM can. Parrot sure can't. | ||
moritz | so that when it sees :b in the argument list, it finds the parameter $a in O(1) | ||
but again, that might be way too simplistic :-) | |||
15:31
FROGGS[mobile] left
15:32
FROGGS[mobile] joined
|
|||
clsn | I need to send in some of these bugs I keep finding. | 15:32 | |
jnthn | Well, trouble is | 15:33 | |
sub f(:a(:$b)) { } | |||
f(:a(1), :b(2)) | |||
f(:b(1), :a(2)) | |||
oops | |||
f(:b(21), :a(1)) | |||
gah, but anyway, I assume from the first calls you'd expect 2, and hte final one you'd expect 1 | 15:34 | ||
Which menas it's not just finding an a or a b | |||
We bind parameters left to right | |||
Not arguments left to right. | |||
Has to be based on parameters or defaults don't work out. | |||
clsn | I mean, you kind of have yourself to blame if you pass both :a() and :b() if they're aliases to each other. It's sort of gigo. If you pass two and they're the same one, it's anyone's guess which you'll get. | 15:35 | |
jnthn | Anyway, I think I'm happy with it being an error. | ||
Because it's the conservative thing | |||
15:35
daxim joined
|
|||
jnthn | If we decide to relax it in the future, we'll make something that didn't work before start working, not break something... | 15:35 | |
clsn | going to make truly matching signatures nearly impossible. Have to compare all the lists of names to see which are subsets or overlaps with each other, etc. | 15:36 | |
Probably going to just have to do our best and fake it. | |||
15:36
ajr joined
|
|||
jnthn | clsn: Yes, you might now be understanding why nobody seriously tackled signature smartmatch yet. :D There's lots of "fun" hiding... | 15:36 | |
masak | jnthn! \o/ | 15:37 | |
15:37
ajr is now known as Guest41006
|
|||
jnthn | clsn++ # digging into the fun :) | 15:37 | |
o/ masak | |||
15:37
Guest41006 is now known as ajr_
|
|||
clsn | Heh. Still, there's a lot to be improved without getting too bogged down. | 15:37 | |
jnthn | aye | ||
15:43
spider-mario left
|
|||
Rotwang | is there a destructor method in p6? | 15:48 | |
I need to clean up temporary dir when the class is garbage collected | 15:49 | ||
object* | |||
jnthn | Rotwang: In theory, DESTROY. In practice, it's (a) not implemented, and (b) even if it was, makes very weak promises about when it'll be called | 15:50 | |
Rotwang: More typical Perl 6 way to handle such things is block exit handlers... | |||
masak | yeah, LEAVE is your friend. | 15:52 | |
sometimes in the guises of KEEP or UNDO. | |||
how'd you respond to the jet lag? | |||
15:53
gcole left
|
|||
dalek | kudo-star-daily: 65270bd | coke++ | log/ (5 files): today (automated commit) |
15:53 | |
kudo-star-daily: 762a8a0 | coke++ | log/ (5 files): today (automated commit) |
|||
rl6-roast-data: a0b8512 | coke++ | / (4 files): today (automated commit) |
|||
15:54
gcole joined
|
|||
jnthn | masak: Just fine :) | 15:54 | |
Rotwang | where can I read on those "block exit handlers"? | 15:55 | |
15:56
araujo left
|
|||
masak | Rotwang: S04 | 15:58 | |
"Phasers" | |||
perlcabal.org/syn/S04.html#Phasers | 15:59 | ||
16:00
araujo joined
|
|||
Rotwang | thanks | 16:00 | |
dalek | kudo/moar-support: aeda1bd | jonathan++ | src/vm/moar/ (2 files): Implement p6getouterctx. |
16:03 | |
jnthn | That starts unbusting the macro tests on Moar a bit | ||
masak | nice. | 16:04 | |
clsn | r: <a b>.map({$_}) X, <c d>.map({$_}) | 16:06 | |
camelia | ( no output ) | ||
clsn | r: say <a b>.map({$_}) X, <c d>.map({$_}) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«» | ||
clsn | What am I missing here? Shouldn't that be the same as <a b> X, <c d>? | ||
masak | r: say (<a b>.map({$_}) X <c d>.map({$_})) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«» | 16:07 | |
masak | hm. | ||
r: say (<a b> X <c d>) | |||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d» | ||
jnthn | r: say <a b>.map({$_}) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a b» | ||
clsn | I was going to try to use stuff like that to check for subsetness among param names, but this cropped up. | ||
r: say <a b>.perl; say <a b>.map({$_}).perl | 16:08 | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«("a", "b")("a", "b").list» | ||
masak | r: sub id { $^x }; say (<a b>.map(&id) X <c d>.map(&id)) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«» | ||
masak submits rakudobug | |||
r: say (<a b>.map({$_}) X <c d>) | 16:09 | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d» | ||
Rotwang | r: 'class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new' | ||
camelia | ( no output ) | ||
masak | interesting. so it takes two maps. | ||
clsn | r: say (<a b> X <c d>.map({$_})) | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«» | ||
clsn | No, only the second one it looks like. | ||
masak | oh! | 16:10 | |
yes. | |||
clsn++ | |||
r: say (<a b> X <c d>.map({$_})).perl | |||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«().list» | ||
clsn | r: my @a=<a b>; my @b=<c d>.map({$_}); say $a X $b | 16:11 | |
camelia | rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/zX45SymcaBVariable '$a' is not declared. Did you mean '@a'?at /tmp/zX45SymcaB:1------> @a=<a b>; my @b=<c d>.map({$_}); say $a⏏ X $b expecting any of: …» | ||
..rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/eB2V1Wz0_TVariable '$a' is not declared. Did you mean '@a'?at /tmp/eB2V1Wz0_T:1------> @a=<a b>; my @b=<c d>.map({$_}); say $a⏏ X $b expecting any of: p…» | |||
clsn | r: my @a=<a b>; my @b=<c d>.map({$_}); say @a X @b | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«a c a d b c b d» | ||
clsn | Hrm. Not sure that proves anything. | 16:12 | |
16:12
cibs joined
|
|||
masak | no, it doesn't, really. | 16:13 | |
maps have their own iterators, IIRC. | |||
probably acting up when interacting with cross products for some reason. | 16:14 | ||
jnthn | Well, note that = is eager | ||
uh, mostly eager | |||
colomon | r: say Num.WHAT | 16:15 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«(Num)» | ||
colomon | r: say "{ Num.WHAT }" | 16:16 | |
camelia | rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context» | ||
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/3_dm5APrNM:1» | |||
clsn | Assigning to variables (probably items, though) seems to be a workaround. | ||
jnthn | colomon: string vs gist | ||
moritz | or .item | 16:17 | |
colomon | jnthn: yes, but strikes me as weird here? | ||
jnthn | colomon: Not really | ||
colomon: Interpolation is just .Str on anything and then concatenate | |||
clsn | No, it makes sense. Num.WHAT === Num, so you're essentially doing "{ Num }" | ||
jnthn | r: say Num.WHAT.gist | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«(Num)» | ||
jnthn | r: say Num.WHAT.Str | ||
camelia | rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context» | ||
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/ZoeGbQcBD4:1» | |||
colomon | jnthn: I think the gist of my complaint is that variable interpolation uses .gist, but { } interpolation uses .Str. why is it different? | 16:19 | |
16:19
Rotwang left
|
|||
jnthn | colomon: Variable interpolation does, though? | 16:21 | |
r: my Num $x; say "$x" | |||
camelia | rakudo-jvm 58307f: OUTPUT«use of uninitialized value of type Num in string context» | ||
..rakudo-parrot 58307f: OUTPUT«use of uninitialized value of type Num in string context in block at /tmp/WLXTHiFt8v:1» | |||
colomon | ah. well in that case, carry on. ;) | 16:22 | |
colomon was working on gist.github.com/colomon/8386731 which is his p6 version of news.ycombinator.com/item?id=7043943 | |||
16:25
wooden left
|
|||
colomon | jnthn: any hints on handling stack overflows in rakudo-jvm? I've tried -Xss2m and I'm still getting them. (different mini project) | 16:26 | |
16:27
Rotwang joined,
ajr_ left
|
|||
jnthn | colomon: Well, I know there is some gather/take issue that can lead to such things | 16:28 | |
colomon | I think the problem is in a giant X+ operation | ||
colomon does not have a copy of the rakudo source open on his machine at the moment to check. | 16:29 | ||
16:29
ajr_ joined
|
|||
jnthn | r: try { die 'x'; CATCH { default { gather { take 1 } } } }; say 'lived' | 16:29 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«lived» | ||
jnthn | aha... | ||
16:30
jeffreykegler joined
16:38
wooden joined
16:39
thou joined
16:47
atroxaper joined
16:52
rindolf left
|
|||
Rotwang | r: 'class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new' | 16:57 | |
camelia | ( no output ) | ||
Rotwang | on rakudo I get "leave" | 16:58 | |
what am I missing? | |||
colomon | r: class A { submethod BUILD() { say "build"; }; LEAVE { say "leave"; } }; A.new | 16:59 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave» | 17:00 | |
Rotwang | yeah, I've forgotern to remove the ' | ||
shouldn't it be: buildleave ? | 17:01 | ||
colomon | r: class A { submethod BUILD() { say "build"; }; }; A.new | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«build» | ||
FROGGS | r: sub foo($bar is copy $baz is copy) { } # LTA | ||
camelia | rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/kuU45cIgSnMissing blockat /tmp/kuU45cIgSn:1------> sub foo($bar is copy ⏏$baz is copy) { } # LTA expecting any of: statement list prefix or …» | ||
..rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/XqqbMsaILtMissing blockat /tmp/XqqbMsaILt:1------> sub foo($bar is copy ⏏$baz is copy) { } # LTA expecting any of: statement list prefix or ter…» | |||
FROGGS | hmmm | ||
r: sub foo(:$bar is copy :$baz is copy) { } # LTA | |||
camelia | rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/eUnkt33L5dVariable '$baz' is not declaredat /tmp/eUnkt33L5d:1------> sub foo(:$bar is copy :$baz⏏ is copy) { } # LTA» | ||
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/2tkYRwtCtUVariable '$baz' is not declaredat /tmp/2tkYRwtCtU:1------> sub foo(:$bar is copy :$baz⏏ is copy) { } # LTA» | |||
FROGGS | right, this one | ||
17:02
dayangkun left
|
|||
Rotwang | colomon: so am I using LEAVE wrong? | 17:03 | |
colomon | Rotwang I don't know | ||
Rotwang | ok, any other ideas how to run code during the object deconstruction? | 17:05 | |
except for writing custom method "cleanup" and then calling it in the END block? | 17:06 | ||
17:07
rindolf joined
|
|||
araujo looks around | 17:15 | ||
bit of an off topic question, but.... anyway knows a nice text editor , lightweight and with a gui tailored for writing essays ? | |||
moritz | Rotwang: not really; sadly DESTROY methods aren't implemented yet | 17:16 | |
17:16
dayangkun joined
|
|||
Rotwang | ok | 17:17 | |
17:18
_ilbot left,
_ilbot joined,
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
clsn | FROGGS: aren't you missing a comma in the above? | 17:21 | |
FROGGS | clsn: correct, and the error message is not ideal | ||
clsn | Ah I see. | ||
17:22
_ilbot left
|
|||
rindolf | Hi all. | 17:24 | |
17:26
_ilbot joined,
SamuraiJack joined
17:28
gcole_ joined,
_ilbot left
17:29
_ilbot joined
17:32
gcole left
|
|||
grondilu | Too bad rosetcode is down right now, there was an interesting algorithm task for computing pi that showed up today. Here's my translation of the ruby code: gist.github.com/grondilu/8387779 | 17:32 | |
I couldn't figure how to make it more accurate in Perl 6. | 17:33 | ||
The problem is that to get arbitrary precision we need to use FatRat, but then how do you compute the square root? I tried with a custom implementation but without much success. | 17:34 | ||
17:36
BenGoldberg joined
17:38
LlamaRider joined,
LlamaRider left
17:39
LlamaRider joined
|
|||
masak | Rotwang: I've never seen LEAVE used inside of 'class' like that. that's not what jnthn and I meant. | 17:39 | |
Rotwang: rather, LEAVE is for the scope where you declare the variable holding the thing you want to destruct. | |||
17:40
LlamaRider left
|
|||
Rotwang | masak: aha, now I understand, but anyway, I think the example I gave shows some undesirable begaviuour? | 17:40 | |
17:41
mohij joined
17:42
colomon left
17:44
deyan_ joined,
deyan_ left
|
|||
masak | not sure. not focused enough to think about it. | 17:46 | |
I didn't understand why the BUILD submethod didn't fire. | |||
17:47
LLamaRider1 joined
|
|||
moritz neither | 17:47 | ||
17:50
locsmif joined,
deyan_ joined,
deyan_ left
17:53
foodoo joined
|
|||
masak | r: class C { submethod BUILD(:$f) { say "OH HAI" } }; C.new(:f(42)); say "bye!" | 17:53 | |
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAIbye!» | ||
masak | r: class C { submethod BUILD() { say "OH HAI" } }; C.new(:f(42)); say "bye!" | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAIbye!» | ||
masak | r: class C { submethod BUILD() { say "OH HAI" } }; C.new(); say "bye!" | ||
17:53
skids joined
|
|||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«OH HAIbye!» | 17:53 | |
masak | in this immortal words of GlitchMr: | ||
the* | 17:54 | ||
'...' | |||
r: class C { submethod BUILD() { say "OH HAI" }; LEAVE { say "leave" } }; C.new(); say "bye!" | |||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave» | ||
masak | ok, so the LEAVE phaser incapacitates the BUILD submethod. | ||
17:54
jeffreykegler left
|
|||
masak | now *that's* interesting. | 17:54 | |
r: class C { submethod BUILD(:$f) { say "OH HAI" }; LEAVE { say "leave" } }; C.new(:f(42)); say "bye!" | 17:55 | ||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave» | ||
masak | in fact, it seems to make the mainline never run. | ||
r: class C { LEAVE { say "leave" } }; say "mainline" | |||
camelia | rakudo-parrot 58307f, rakudo-jvm 58307f: OUTPUT«leave» | ||
masak | which is still wrong, but makes a bit more sense, maybe. | ||
17:55
jeffreykegler1 joined
|
|||
masak | Rotwang++ # doing something no-one had thought of trying before | 17:56 | |
17:56
atroxaper left
|
|||
Rotwang | no one had any need for a destructor? [; | 17:56 | |
moritz | it's not the lack of need | 17:57 | |
17:57
LLamaRider1 left
|
|||
moritz | it needs some GC hooks, and you must be able to allocate new objects in such a hook | 17:58 | |
and at least parrot doesn't allow that | |||
17:58
LLamalessRider joined
|
|||
arnsholt | And most GC algorithms don't guarantee order | 17:59 | |
moritz | that wouldn't be so bad if we had a two-phase cleanup | 18:00 | |
call the DESTROY method of all objects being collected in one run | |||
18:00
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
moritz | and only deallocate after all the methods in that batch have been called | 18:00 | |
masak | sounds like a lovely idea. | ||
18:02
Rotwang left
18:04
Rotwang joined
|
|||
arnsholt | Might be problematic if the destructors have to create objects though | 18:04 | |
masak | ...accidentally? :) | 18:06 | |
oh, sorry, I read it as "have to concrete objects" | |||
arnsholt: problematic because there might not be enough memory? | |||
arnsholt | Yeah | ||
Or things being in this weird in-between state | 18:07 | ||
jnthn | Well, the typical approach is to have a finalizer queue | ||
Any object thta has a DESTROY is additionally rooted in another array somewhere | |||
And if the GC discovers that is the only way to reach it, then it makes it as live, but removes it from that array | 18:08 | ||
Then the finalizer runs | |||
Once and only once | |||
18:12
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
clsn | Rakudo doesn't support typed positional slurpys, but it also doesn't really support typed named slurpys. Typing the named slurpy declares it to be Associative[Type], but the binder always just gives it a plain hash, which is Associative, so it never matches. | 18:15 | |
r: sub foo(Int *%_) { }; f(:b(7)) | 18:16 | ||
camelia | rakudo-jvm 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/hIQytmdBP8Undeclared routine: f used at line 1» | ||
..rakudo-parrot 58307f: OUTPUT«===SORRY!=== Error while compiling /tmp/oUxi2CI8DzUndeclared routine: f used at line 1» | |||
clsn | r: sub foo(Int *%_) { }; foo(:b(7)) | ||
camelia | rakudo-parrot 58307f: OUTPUT«Nominal type check failed for parameter '%_'; expected Associative[Int] but got Hash instead in sub foo at /tmp/ymYKerXxFg:1 in block at /tmp/ymYKerXxFg:1» | ||
..rakudo-jvm 58307f: OUTPUT«Nominal type check failed for parameter '%_'» | |||
18:26
kivutar left
18:27
LLamalessRider left
18:28
jeffreykegler1 is now known as jeffreykegler
18:32
LLamalessRider joined
18:33
LLamalessRider is now known as LLamaRider,
FROGGS[mobile] left,
FROGGS[mobile] joined
|
|||
dalek | ast: ed446b2 | coke++ | S06-signature/errors.t: Add test for RT#76368 |
18:36 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76368 | ||
18:44
FROGGS[mobile] left
18:45
jeffreykegler left
18:48
jeffreykegler joined
|
|||
dalek | ast: 951c516 | coke++ | S12-introspection/methods.t: add test for RT # 76648 |
18:52 | |
18:54
pecastro_ joined
18:56
pecastro left
18:57
darutoko left
19:00
sftp_ left
19:03
sftp joined
19:04
Piers left,
Piers joined
19:05
araujo left,
araujo joined
19:06
araujo left
19:07
araujo joined,
araujo left,
araujo joined,
berekuk joined
19:11
spider-mario joined
19:12
pecastro joined
19:14
pecastro_ left
19:16
SamuraiJack left
19:18
raiph2 left
19:19
raiph left
19:37
mohij left
19:38
ilbot3 joined
19:40
ilbot3 left
19:43
foodoo left,
ajr_ left
19:48
denis_boyun left,
ilbot3 joined
19:50
kaare_ joined
19:56
ilbot3 left,
ilbot3 joined
20:31
denisboyun joined
20:46
rindolf left
20:48
jeffreykegler left
20:55
ssutch left
21:02
dayangkun left
21:07
ilbot3 left
21:17
dayangkun joined
21:33
kivutar joined
21:34
raiph2 joined,
raiph joined
21:35
Vlavv__ left
21:36
berekuk left
21:37
berekuk joined
21:40
zakharyas left,
araujo left
21:51
Vlavv__ joined
21:59
pecastro left
22:06
pecastro joined
22:10
araujo joined
22:13
araujo left
22:25
Rotwang left
22:26
johnmilton left
22:28
nnunley joined
22:31
xinming_ joined,
araujo joined
22:33
xinming left
22:36
xinming_ left,
xinming joined
22:40
berekuk left
22:41
jeffreykegler joined,
berekuk joined
|
|||
dalek | rl6-roast-data: 3e72f27 | coke++ | / (6 files): today (automated commit) |
22:43 | |
FROGGS | 96.66% | 22:45 | |
timotimo | very good :) | ||
FROGGS | yeah | ||
feels good | |||
jnthn | Getting there :) | ||
FROGGS | still much todo | ||
diakopter | FROGGS: only 3.34% todo | 22:46 | |
jnthn | That was run before my 150 tests from exceptions/misc.t :) | ||
I get we can do 97% tomorrow :) | |||
diakopter | jnthn: today is only just begun | ||
timotimo | awesome! :) | 22:47 | |
jnthn | diakopter: Somewhere in the world... :) | ||
s/get/bet/ | |||
timotimo will make parrot catch up a tiny bit, too | |||
TODO passed: 16-19 | |||
TODO passed: 66-67, 70-71 | |||
jnthn | :) | ||
FROGGS | cool! | ||
timotimo | hardly measurable, but people shall notice! :) | ||
jnthn | Did we regress some Parrot tests in MoarVM branch? | ||
Would be good ot see how Parrot nad JVM work in moar-support compared to nom... | 22:48 | ||
dalek | p: 08d6968 | (Timo Paulssen)++ | src/vm/parrot/ (3 files): implement floordiv for int and bigint on parrot |
||
jnthn | .oO( Now it's implemented floorlessly... ) |
||
22:49
berekuk left
|
|||
dalek | kudo/nom: 828a8be | (Timo Paulssen)++ | / (2 files): remove hacks for parrot's C-like div and bump NQP_REVISION |
22:49 | |
kudo/nom: eb1aa54 | (Timo Paulssen)++ | docs/ChangeLog: mention div change in ChanegLog |
|||
timotimo | jnthn: when you run parrot tests in moar-support, you get a bunch of aborted tests due to Hash.defined being used there | ||
jnthn | wtf... | 22:50 | |
timotimo | MTE | ||
22:52
jeffreykegler is now known as idiosyncrat
22:57
idiosyncrat left,
jeffreykegler joined
23:00
berekuk joined
|
|||
timotimo | r: 5 % 0 | 23:01 | |
camelia | rakudo-jvm 58307f: OUTPUT«Divide by zero using infix:<%> in block at gen/jvm/CORE.setting:901 in method bless at gen/jvm/CORE.setting:817» | ||
..rakudo-parrot 58307f: OUTPUT«Divide by zero using infix:<%> in method sink at gen/parrot/CORE.setting:12142 in method BUILDALL at gen/parrot/CORE.setting:904 in method bless at gen/parrot/CORE.setting:824 in method new at gen/parrot/CORE.setting:809 in method new…» | |||
timotimo | nqp: nqp::mod_i(5, 0) | 23:02 | |
camelia | ( no output ) | ||
..nqp-moarvm: OUTPUT«(signal FPE)» | |||
..nqp-jvm: OUTPUT«java.lang.ArithmeticException: / by zero in (/tmp/KSoCVZcdtv:1) in (gen/jvm/stage2/NQPHLL.nqp:1100) in eval (gen/jvm/stage2/NQPHLL.nqp:1086) in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292) in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196) in co…» | |||
timotimo | er, parrot? | ||
nqp: say(nqp::mod_i(5, 0)) | |||
camelia | nqp-moarvm: OUTPUT«(signal FPE)» | ||
..nqp-parrot: OUTPUT«5» | |||
..nqp-jvm: OUTPUT«java.lang.ArithmeticException: / by zero in (/tmp/hFPQymjNta:1) in (gen/jvm/stage2/NQPHLL.nqp:1100) in eval (gen/jvm/stage2/NQPHLL.nqp:1086) in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292) in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196) in co…» | |||
timotimo | is ... is that right? | ||
23:03
colomon joined
|
|||
timotimo | "a modulo 0 is undefined in the majority of systems, although some do define it to be a." sayeth wikipedia | 23:04 | |
psch | S03 looks like it should be undefined in perl6 | 23:06 | |
seeing as it's defined via division | |||
colomon | grondilu: by coincidence, I posted a sqrt algorithm earlier today. It's trivial to convert to give you FatRats. gist.github.com/colomon/8386731 | ||
timotimo | right. so it should throw an exception. | ||
TimToady | reminds me of the person who gave the lightning talk about how 'undef' was not sufficiently undefined in Perl 5, so he made a program poke random numbers into that location | 23:07 | |
grondilu | colomon: it's not a coincidence. I did not bother mentioning this rosetta task, until I saw your post. | ||
I'm not sure I understand how that would work with FatRat, though. | |||
TimToady | .oO(slowly) |
23:08 | |
23:09
kaare_ left
|
|||
lue wonders if my int8 $a = 0xFF; $a++; would result in $a == 0x00 or if it would blow up. | 23:10 | ||
timotimo | i think it should result in 0x00, personally | ||
but that's the bit-banger in me speaking :P | 23:11 | ||
FROGGS .oO( my int8 $a is overflowing; my int8 $b is blowing-up ) | 23:12 | ||
grondilu finally understood how colomon's program work. Neat stuff. | |||
lue | timotimo: That's what I'd like too. I also don't think native types should be so closely managed by Perl 6, it's low-level after all :) | ||
(which is another point against excepting) | 23:13 | ||
timotimo | in my mind, if you're using low-level "native" types, you're asking for low-level semantics in most cases | ||
TimToady | which are basically non-portable semantics, but that's | 23:14 | |
C-land | |||
jnthn | Well, there's also the "it's a pragma" option :) | ||
TimToady | a pragma might have no effect on one architecture, and cause it to run 10 times slower on a different architecture | ||
not arguing against pragmas, but that's the kind of tradeoff | 23:15 | ||
FROGGS .oO( use tradeoff ) | |||
TimToady | the specs currently use pragmas to control what intermediate results are acceptable anyway | ||
FROGGS | and tradeon, obviously | ||
TimToady | afk & | 23:16 | |
FROGGS | gnight & | ||
lue | use MONKEY_ANTICS for non-blowing-up native types, clearly | ||
♞ FROGGS o/ | |||
23:17
araujo left
|
|||
lue would really appreciate it if rakudo's file path handlers could understand the magic of things like *, ~, or .. | 23:18 | ||
23:19
beastd left
|
|||
dalek | ast: 812ff94 | (Timo Paulssen)++ | S03-operators/arith.t: unfudge parrot negative div and mod tests |
23:20 | |
ast: 4c65527 | (Timo Paulssen)++ | S03-operators/adverbial-modifiers.t: unfudge some rakudo multi colonpair syntax tests |
|||
23:26
logie_ left
23:30
araujo joined
|
|||
colomon | grondilu: sorry, you just need to change the my @approximations = 1, | 23:31 | |
to my @approximations = 1.FatRat, | |||
and the number in converged to as tight as you'd like. | 23:32 | ||
has-converged | |||
23:33
locsmif left
23:35
araujo left
|
|||
grondilu | colomon: indeed. it's terribly slow, though. I guess the FatRat values quicly become very fat. | 23:37 | |
23:38
dmol left
|
|||
grondilu | (and much before convergence happens) | 23:38 | |
psch | gnight #perl6 | 23:47 | |
23:48
psch left
23:49
denisboyun left
23:55
spider-mario left
|
|||
grondilu found a way not to use rationals | 23:59 | ||
r: sub my-sqrt($n) { my $target = 10**16 * $n; .[*-1]/10**16 given 1, { ($_ + $target/$_)/2 } ... * == * }; say my-sqrt(2) | |||
camelia | rakudo-parrot eb1aa5: OUTPUT«1.4142135623731e-08» | ||
..rakudo-jvm eb1aa5: OUTPUT«1.4142135623730952E-8» |