»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
00:04
laouji joined
00:08
laouji left
00:12
skids joined
00:30
mr-foobar left,
Rounin left
|
|||
TimToady | well, I already implemented tests, but only for exchange on Pair, which, er, was the only one specced... | 00:31 | |
and I asked for use cases for anything else... | |||
er...speculated... | 00:33 | ||
00:33
spider-mario left
|
|||
TimToady | it is not, in particular, clear whether .exchange is the opposite of .pairs, or the opposite of .invert | 00:35 | |
if people expect the latter on a list of pairs, they'll be very surprised to get extra keys | 00:36 | ||
in particular, I was thinking about it as the opposite of invert, not the opposite of pairs, or I'd've named it something different | 00:37 | ||
00:44
skids left
|
|||
dalek | ast: c349a13 | TimToady++ | S02-types/pair.t: unfudge .exchange tests |
00:50 | |
TimToady | maybe .antipairs is what lizmat++ implemented | 00:52 | |
then .exchange would only work on a Pair or list of Pair | 00:55 | ||
01:10
fernando_ joined
01:11
Hor|zon joined
01:14
jack_rabbit left
01:16
Hor|zon left
01:19
davido__ left
01:20
davido__ joined
01:25
dayangkun joined,
dayangkun left
01:28
gfldex left
01:42
aborazmeh joined,
davido__ left,
aborazmeh left,
aborazmeh joined
01:43
davido__ joined
01:52
skids joined
01:55
raiph joined
01:59
grondilu left
02:01
Hor|zon joined
02:06
Hor|zon left
02:12
echowuhao left
|
|||
dalek | ecs: db834e7 | TimToady++ | S32-setting-library/Containers.pod: distinguish antipairs from antipair/invert |
02:21 | |
02:22
aborazmeh left
02:23
xinming left
02:29
grettir left
02:37
xinming joined
02:38
dolmen joined
02:41
aborazmeh joined,
aborazmeh left,
aborazmeh joined
02:43
skids left
02:46
ilbot3 left
02:48
ilbot3 joined
02:50
skids joined
02:54
chenryn joined,
laouji joined
02:59
laouji left
|
|||
dalek | ecs: 1968457 | skids++ | S03-operators.pod: Negative binary shifts are indeed tested in roast, so whirl them useful on infix:«<+», so mention that. (The :signed and :unsigned adverbs are currently only in spec not in roast/implementation) |
03:04 | |
TimToady | alternately, we should make that decision based on the left-hand type | 03:05 | |
skids | Yes it makes no sense for Int. | 03:08 | |
But maybe better as a runtime error, rather than requiring tight typing? | 03:09 | ||
TimToady | actually, shifts are fine for Int | 03:10 | |
skids | Yes, but :unsigned isn't | 03:11 | |
erm :!signed | |||
dalek | ok: 5a4285b | (Christopher Bottoms)++ | src/operators.pod: Minor grammar fix |
03:14 | |
03:14
Houndcat left
|
|||
TimToady | with Int we just assume an infinite number of 0's or 1's to the left | 03:15 | |
m: say -1 +< 30 | |||
camelia | rakudo-moar 3eb446: OUTPUT«-1073741824» | ||
TimToady | m: say 1 +< 30 | 03:16 | |
camelia | rakudo-moar 3eb446: OUTPUT«1073741824» | ||
skids | Right so :!signed would either be mute, or should be an error. | ||
*moot | |||
TimToady | would like to avoid adverbs entirely if we can make it type based | ||
likewise if we ever get rotate instructions | 03:17 | ||
skids | The point of the adverb is kind of to override signedness of the type, I thought. | ||
TimToady | see rosettacode.org/wiki/Bitwise_operations#Perl_6 | 03:18 | |
03:18
Patterner joined
|
|||
TimToady | notice how we cheat on the unsigned rightshfit | 03:18 | |
and the rotates | |||
that could easily be determined by the native size of the left though | |||
well, called to dinner & | 03:19 | ||
skids | I think that's the intent of the language in specs -- the left hand type determines which adverb would be needed to break the rules. | 03:20 | |
03:22
Psyche^ left
|
|||
skids | FWIW if anyone ever wants to rewrite asm in perl6 they would probably also want a "with carry" option on shifts and rotates. | 03:22 | |
03:24
dolmen left
03:35
fernando_ left
03:36
noganex joined
03:37
dolmen joined
03:40
noganex_ left
03:51
Hor|zon joined
|
|||
skids | .oO(Texas ⥀ ... ^< Texas ⥁ ... ^>) |
03:51 | |
03:54
raiph left,
aborazmeh left
03:55
Hor|zon left
|
|||
TimToady | well, probably rol and ror are fine Texas versions | 03:57 | |
b2gills | m: subset Test of Str where 0 < *.chars < 256; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | 03:58 | |
camelia | rakudo-moar 3eb446: OUTPUT«FalseTrueCannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/EdXKXiyxUm:1» | ||
skids modernizes gist.github.com/skids/4998260 | 03:59 | ||
b2gills | m: subset Test of Str where {0 < $_.chars < 256}; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | ||
camelia | rakudo-moar 3eb446: OUTPUT«TrueTrueTrue» | ||
b2gills | star-m: subset Test of Str where 0 < *.chars < 256; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | 04:00 | |
camelia | star-m 2015.01: OUTPUT«FalseTrueCannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4236 in sub infix:<<> at src/gen/m-CORE.setting:4746 in block <unit> at /tmp/mxH8DNt_Ga:1» | ||
TimToady | looks kinda like a bug | ||
m: say 0 < 'a'.chars < 256 | 04:01 | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | actually, looks like it's ignoring the .chars | ||
04:01
FROGGS_ joined
|
|||
TimToady | since they should all be True | 04:02 | |
oh, the real closure works | |||
so it's just not handling * with chained ops | |||
b2gills | I think that it is seeing that the *.chars is in Real context and is trying to convert it too soon | 04:03 | |
TimToady | m: say (0 < *.chars < 256).WHAT | ||
camelia | rakudo-moar 3eb446: OUTPUT«(WhateverCode)» | ||
TimToady | m: say (0 < *.chars < 256)('a') | 04:04 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/aYgm5iSKst:1» | ||
04:04
FROGGS left,
Sqirrel left
04:05
leont left
|
|||
b2gills | ignore what I just wrote, it doesn't explain the `0` case | 04:06 | |
04:06
seaker joined,
seaker left
|
|||
dalek | ast: 9c69eb1 | TimToady++ | S (2 files): antipairs and inversions |
04:08 | |
kudo/nom: 06f9b89 | TimToady++ | src/core/ (12 files): untangle antipairs vs invert |
04:09 | ||
TimToady | m: say (0 < (*.chars) < 256)('a') | 04:10 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/0GxAW99xbc:1» | ||
TimToady | m: say (0 < *.chars)('a') | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | m: say (*.chars < 256)('a') | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | yeah, it's just the chaining fouling it up | 04:11 | |
04:16
jack_rabbit joined
|
|||
TimToady | something tells me it's probably even reported already | 04:17 | |
skids | m: (0 < (*,).chars < 256)("a").say | 04:18 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block <unit> at /tmp/_WL6_uLKcS:1» | ||
TimToady | that'll never work | 04:19 | |
04:19
ash_gti joined
|
|||
TimToady | a list with a Whatever in it is just a list with a Whatever in it | 04:19 | |
skids | Yeah. Can't blame a guy for trying :-) | 04:20 | |
TimToady | the autopriming is really only defined on unary and binary ops | ||
b2gills | rakudobrew really doesn't work right when called as a symbolic ref | 04:24 | |
skids | RT#123144 maybe, hit internally? | 04:25 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123144 | ||
04:27
echowuhao joined
04:37
chenryn left
04:38
ash_gti left
04:43
laouji joined
|
|||
colomon | \o/ | 04:46 | |
04:47
laouji left
|
|||
colomon was o/ the 15 minutes on Raspberry Pi 2 note. backlogging is confusing. | 04:50 | ||
04:50
echowuhao left
|
|||
TimToady | let's do math | 04:50 | |
04:50
echowuhao joined
05:00
jack_rabbit left
05:03
Sqirrel joined
05:04
chenryn joined
05:40
Hor|zon joined
|
|||
raydiak | m: sub foo (|args) { args[*] }; foo :bar # known? | 05:40 | |
camelia | rakudo-moar 06f9b8: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏bar' (indicated by ⏏) in method Int at src/gen/m-CORE.setting:15021 in method Int at src/gen/m-CORE.setting:6832 in sub postcircumfix:<[ ]> at src/gen/…» | ||
05:44
Hor|zon left
|
|||
raydiak wonders if replacing all the SELF.keys in src/core/array_slice.pm with ^SELF.elems or so might fix it | 05:45 | ||
06:01
BenGoldberg_ left
06:02
dj_goku left
06:05
dj_goku joined
|
|||
moritz | \o | 06:25 | |
raydiak | o/ | 06:26 | |
TimToady | o— | ||
TimToady is testing a fix for local overriding of quote keywords so that my m = 42; say m / 100; prints 0.42 | 06:27 | ||
m: say { a => [1,2] }.invert.perl | 06:32 | ||
camelia | rakudo-moar 06f9b8: OUTPUT«(1 => "a", 2 => "a").list» | ||
TimToady | m: say { a => [1,2] }.antipairs.perl | 06:33 | |
camelia | rakudo-moar 06f9b8: OUTPUT«([1, 2] => "a",).list» | ||
TimToady | 'antipairs' being somewhat dehuffmanized on purpose | ||
m: say <a b c>.invert | 06:37 | ||
camelia | rakudo-moar 06f9b8: OUTPUT«Memory allocation failed; could not allocate 57696 bytes» | ||
TimToady | yowser | ||
m: say <a b c>.pairs.invert | |||
camelia | rakudo-moar 06f9b8: OUTPUT«Memory allocation failed; could not allocate 640 bytes» | 06:38 | |
TimToady | hmm | ||
m: say <a b c>.pairs | |||
camelia | rakudo-moar 06f9b8: OUTPUT«0 => a 1 => b 2 => c» | ||
TimToady | m: say <a b c>.pairs>>.antipair | ||
camelia | rakudo-moar 06f9b8: OUTPUT«a => 0 b => 1 c => 2» | ||
TimToady | well, something screwy on List.invert still | 06:39 | |
japhb | Does Rakudo have any way to take a path containing .. and properly resolve it? For example, given ('../foo/bar' relative to '/a/b/c/d/e'), which absolutifies to '/a/b/c/d/e/../foo/bar', where any segments of that path could be links (symbolic or otherwise), allows you to do .parent.parent.parent and get a sane result? | ||
TimToady | probably | ||
but I dunno what it is | |||
06:40
laouji joined
|
|||
TimToady | m: say <a b c>.pairs>>.invert | 06:40 | |
camelia | rakudo-moar 06f9b8: OUTPUT«a => 0 b => 1 c => 2» | ||
moritz | japhb: IO::Path.absolute or something like that | 06:41 | |
lizmat only implemented .exchange last night | 06:42 | ||
off for some swimming& | 06:43 | ||
japhb | moritz: .absolute oddly gets you a Str of the relative base and relative path concatenated by the directory separator. So it gets you that thing I said "absolutifies to" above. | ||
raydiak | m: ".".IO.absolute.perl.say | 06:52 | |
camelia | rakudo-moar 06f9b8: OUTPUT«"/home/camelia"» | ||
raydiak | m: ".".IO.abspath.perl.say | ||
camelia | rakudo-moar 06f9b8: OUTPUT«"/home/camelia"» | ||
raydiak | m: ".".IO.canonpath.perl.say | 06:56 | |
camelia | rakudo-moar 06f9b8: OUTPUT«No such method 'canonpath' for invocant of type 'IO::Path' in block <unit> at /tmp/ibumoZm_J8:1» | ||
raydiak | m: $*SPEC.canonpath(".").perl.say | 06:57 | |
camelia | rakudo-moar 06f9b8: OUTPUT«"."» | ||
raydiak | m: ".".IO.resolve.perl.say | ||
camelia | rakudo-moar 06f9b8: OUTPUT«Failure.new(exception => X::NYI.new(feature => "IO::Path.resolve"))» | ||
japhb | Sigh, NYI | 06:59 | |
dalek | kudo/nom: f786d89 | TimToady++ | src/Perl6/Grammar.nqp: quoters now lexically overridable by terms/subs |
07:00 | |
ast: 6d85d5a | TimToady++ | S0 (2 files): quoters now lexically overridable by terms/subs |
07:01 | ||
07:03
perl6_newbee joined
|
|||
dalek | c: d12c47b | moritz++ | t/pod-convenience.t: Fix a test |
07:05 | |
moritz | [ptc]: github.com/perl6/doc/issues/56 | 07:09 | |
dalek | kudo/nom: 6f9016e | TimToady++ | src/core/ (2 files): fix infinite regress on List.invert |
07:13 | |
TimToady | m: my \s = 'sigma'; say s; | ||
camelia | rakudo-moar f786d8: OUTPUT«sigma» | ||
moritz | TimToady++ | ||
TimToady | can override by using any option to get back to the qouter | 07:14 | |
*uo | |||
m: my \m = 'millipede'; say m ~~ m:s/\w*/ | 07:15 | ||
camelia | rakudo-moar f786d8: OUTPUT«「millipede」» | ||
TimToady | m: my \m = 'millipede'; say m ~~ ms/\w*/ | ||
camelia | rakudo-moar f786d8: OUTPUT«「millipede」» | ||
TimToady | m: my \m = 'millipede'; say m ~~ m/\w*/ | 07:16 | |
camelia | rakudo-moar f786d8: OUTPUT«5===SORRY!5===Regex not terminated.at /tmp/y9RJoxQNZw:1------> 3my \m = 'millipede'; say m ~~ m/\w*/7⏏5<EOL>Regex not terminated.at /tmp/y9RJoxQNZw:1------> 3my \m = 'millipede'; say m ~~ m/\w*/7⏏5<EOL>Unable to parse r…» | ||
07:16
gfldex joined
|
|||
TimToady | m: my \m = 'millipede'; say m ~~ m /\w*/ | 07:16 | |
camelia | rakudo-moar f786d8: OUTPUT«5===SORRY!5===Regex not terminated.at /tmp/JK9sCZV9qB:1------> 3my \m = 'millipede'; say m ~~ m /\w*/7⏏5<EOL>Regex not terminated.at /tmp/JK9sCZV9qB:1------> 3my \m = 'millipede'; say m ~~ m /\w*/7⏏5<EOL>Unable to parse…» | ||
moritz | colomon: something's off with the smoker. smoke.perl6.org/project/Questhub says Questhub failed its test, but it doesn't even have a t/ directory | ||
colomon: and in the second-to-last report, it succeeded, so it can't be general failure of counting absense of t/ as test failure | 07:17 | ||
raydiak | bugfix PR github.com/rakudo/rakudo/pull/375 | 07:18 | |
moritz | I'd like to leave that for lizmat++ to evaluate, since she wrote the code and is probably aware of performance tradeoffs | 07:20 | |
raydiak | sounds good, I'd not be surprised if that is a slower-than-necessary way to write it | 07:21 | |
07:28
Hor|zon joined
07:33
Hor|zon left
|
|||
moritz | maybe we should have positional-keys and associative-keys methods | 07:34 | |
(and still have .keys, but [] could use .positional-keys) | 07:35 | ||
raydiak | kv, pairs, elems, etc too? | ||
moritz | hmmm | 07:37 | |
there's a bite more to it than I initially thought :/ | |||
raydiak | yeah the overlap is actually pretty sizable | 07:38 | |
my patch relies on the fact that things which do both seem to delegate .elems to the array part | 07:39 | ||
FROGGS[mobile] | TimToady++ # overridable quoters | 07:41 | |
07:41
wicope joined,
echowuhao left
07:42
rindolf joined
|
|||
dalek | ast: 08174d6 | TimToady++ | S02-types/pair.t: test invert on list of pairs |
07:46 | |
07:48
diana_olhovik_ joined
07:49
maettu left
|
|||
TimToady | m: say <a b c>.pairs.invert | 08:01 | |
camelia | rakudo-moar 6f9016: OUTPUT«a => 0 b => 1 c => 2» | ||
TimToady | m: say <a b c>.invert | ||
camelia | rakudo-moar 6f9016: OUTPUT«Cannot call 'invert'; none of these signatures match: in block <unit> at /tmp/emLQR3RLBd:1» | ||
TimToady | m: say <a b c>.list.invert | ||
camelia | rakudo-moar 6f9016: OUTPUT«No such method 'value' for invocant of type 'Str' in block at src/gen/m-CORE.setting:10239 in method reify at src/gen/m-CORE.setting:9438 in block at src/gen/m-CORE.setting:9270 in method reify at src/gen/m-CORE.setting:9244 in block …» | ||
TimToady | maybe that failure mode is a bit LTA | 08:02 | |
it *should* fail though | |||
since invert is now only defined on lists of pairs and on hashes | |||
08:04
tinyblak joined,
prime- joined
08:05
prime left
|
|||
dalek | kudo-star-daily: e3ff6cd | coke++ | log/ (9 files): today (automated commit) |
08:10 | |
08:13
diana_olhovik_ left,
colomon left
|
|||
timotimo | moritz: would you like to walk me through how to update star-m: on camelia? or just do it yourself (or check what went wrong with the automatic update - if it exists) | 08:15 | |
08:15
darutoko joined
08:19
rindolf left
|
|||
moritz | timotimo: there is no automatic upgrade | 08:21 | |
timotimo: and camelia run on nine_++'s box, so you need to ask him for an account first | 08:22 | ||
08:22
xfix joined
08:23
rindolf joined
|
|||
raydiak | I think we should have a few range constructor methods in Int or Cool, or even just a single coercion, such that 5.Range eqv ^5 | 08:26 | |
08:26
colomon joined
08:29
Hor|zon joined
|
|||
raydiak | m: say 5.&prefix:<^> # this works, though it feels clumsy | 08:29 | |
camelia | rakudo-moar 6f9016: OUTPUT«0..^5» | ||
08:34
Hor|zon left
|
|||
raydiak | 5.Range.map looks and feels better in some ways than (^5).map...or maybe something more like .from-zero for ^5, .from-zero-to for 0..5, and s/zero/one/ variants for 0^.. | 08:36 | |
08:38
yeahnoob joined
08:42
gfldex left,
dolmen left
|
|||
timotimo | oh, right, it's nine's box | 08:43 | |
i knew that, but i forgot about it briefly | 08:44 | ||
moritz | I guess I should just document it | 08:46 | |
dalek | kudo/nom: 4f854b3 | raydiak++ | src/core/array_slice.pm: Attempt to fix array slicing of Capture |
08:47 | |
kudo/nom: e35414b | lizmat++ | src/core/array_slice.pm: Merge pull request #375 from raydiak/arrayhashslicefix Fix array slicing of Capture, Match, etc. Brings about a ~5% performance gain on [*] slices |
|||
timotimo has a look at the whatever currying problem | 08:50 | ||
raydiak | thank you lizmat :) | ||
lizmat | raydiak: thank you! | ||
timotimo | thank you, raydiak and lizmat :) | ||
raydiak | timotimo: what I had before for the currying is on the assumingwhatevs branch of my rakudo fork if it's any use | 08:51 | |
timotimo | oh | 08:52 | |
no, not that | |||
i mean this: | |||
m: say (0 < *.chars < 255)("a") | |||
camelia | rakudo-moar 6f9016: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4683 in sub infix:<<> at src/gen/m-CORE.setting:5191 in block <unit> at /tmp/6dZ75MJkVg:1» | ||
timotimo | the .chars gets dropped somewhere in the inlining process | ||
raydiak | ah I see | 08:53 | |
08:53
geekosaur left
|
|||
timotimo | a couple of months ago i built some code that would generate a single code object from this rather than three nested ones that were sort-of recursively called | 08:53 | |
08:53
geekosaur joined
|
|||
timotimo | i'm a tiny bit annoyed that there was no test that caught this problem back then | 08:54 | |
but also apparently no code in the ecosystem stumbled upon this | |||
masak | good morning, #perl6 | ||
raydiak | good morning masak | 08:55 | |
timotimo | i think i have a clue what's happened, but not 100% sure | ||
nine_ | sjn: a little example of what actions can do: github.com/niner/Grammar-Highlighter | 08:56 | |
masak | m: say prefix:<^> 5 | ||
08:56
camelia left
|
|||
masak | come back, camelia! :/ | 08:56 | |
anyway, locally I get `0..^5` | |||
I like it. | |||
it seems we already have a listop for this :) | 08:57 | ||
raydiak | I was looking for a way to get it as an easier-to-type postfix, b/c e.g. (^5).map feels awkward | 08:58 | |
if you have method(s), you don't have to type any circumfix at all | |||
dalek | kudo/nom: 35de750 | lizmat++ | src/core/Any.pm: Fix copy-pasto |
08:59 | |
raydiak | but 5.&prefix:<^> is no better | ||
masak | m: sub up($n) { ^$n }; say 5.&up | ||
raydiak: that works, too. | |||
timotimo | raydiak: do you know about map ^5:; ? | ||
m: say map ^5: *.say; | |||
er | |||
map ^5: *.say works, anyway. | 09:00 | ||
i'm beginning to like indirect method call syntax | |||
raydiak | masak: yes that's not a terrible way to do it, but I probably won't bother if it's not in core | ||
timotimo: neat, I hadn't thought of that | |||
masak | raydiak: that's my point. you can define something locally to make it easier for you. | 09:02 | |
timotimo | nine_: some time ago i wrote this fun piece of code: github.com/timo/text_to_cell/blob/...r.h#L21-23 | 09:03 | |
masak | raydiak: why do people get so hung up on "if it's [not] in core"? I don't understand. | ||
timotimo | nine_: it's kind of sort of similar to the grammar highlighter | ||
masak | you have this wonderfully extensible language where, at the snap of your fingers, you can turn it into what you want. | ||
and then people want to stuff their favorite DSL into core, or they refuse to play. | |||
>:-( | |||
09:06
rurban joined
|
|||
raydiak | mostly out of a desire to not write code which is difficult for people who are not me to follow. if I came up with an idea with a more tangible benefit, I'd likely use it, but for .&up, which is hard for me to type in the dark anyway which was my original problem? no, the ratio does not meet my own personal threshhold. sorry if that makes anyone frown. | 09:07 | |
masak | sorry for the rant. it's not just you. | 09:08 | |
of course "it doesn't cross my personal threshold for ease/readability" *is* a respectable argument. | |||
raydiak | no biggie. I know it's a common thing, and I'm sure more than none of it is still the same stuck-in-the-past thinking which you're rightly opposed to | 09:09 | |
masak | but I do recommend freely creating ops and functions in small scopes when you need them. it becomes addictive, and it changes the way you think about the code :) | ||
09:09
_mg_ joined
|
|||
masak | like, if you really wanted a postfix:<upto>, there's nothing to stop you from defining one. | 09:10 | |
09:11
virtualsue joined
|
|||
raydiak | yeah the syntactic mutability is something I am really attracted to, though I sometimes make a mess quickly when I start down those paths, so I often go to the opposite extreme; still looking for a good balance, as with all things | 09:12 | |
09:16
yeahnoob left
09:17
telex left
09:18
telex joined
09:24
FROGGS_ left
09:28
Kristien joined
|
|||
raydiak | good night #perl6 | 09:33 | |
timotimo is micro-optimizing whatever_curry, as it seems to be called quite often in stage parse | |||
vendethiel | TimToady: smalltalk doesn't have "leave", but return ("^") from a lambda returns from the outerlying function, that's what I was referring to | 09:41 | |
timotimo | why must my stage parse measurements be so noisy? | 09:43 | |
09:45
_mg_ left
|
|||
vendethiel | psch: yes, that was *basically* the use-case | 09:47 | |
timotimo | huh. my "optimizations" seem to have made it worse | ||
09:48
molaf left,
laouji left
|
|||
Kristien | I don't like functions that return from their definer. | 09:51 | |
timotimo | .o( that's me in a nutshell: starts looking at correctness, tries performance tweaks instead ) | 09:55 | |
09:56
jack_rabbit joined
|
|||
psch | vendethiel: the «public String evalP6(…) { }» bit, right? not the bit about nesting p6 with interop i hope :) | 09:57 | |
also hi #perl6 \o | 09:58 | ||
10:04
Rounin joined
10:05
diana_olhovik_ joined
|
|||
masak | hi psch | 10:10 | |
10:17
_mg_ joined
10:18
Hor|zon joined
10:20
smls joined
|
|||
smls | o/ | 10:20 | |
10:21
jack_rabbit left,
_mg_ left
10:23
Hor|zon left
|
|||
smls backlogs (had very little computer time these last 4 days due to health issue) | 10:24 | ||
10:27
wicope left,
spider-mario joined
|
|||
smls | "* vendethiel would really, really like to have :D as the default" -- same here, though I agree with TimToady that the :_ syntax is not great. | 10:30 | |
Especially since the concept of "whatever / I don't care / all of the above" is usually encoded using an asterisk in Perl 6, not an underscore. | |||
Although :* won't win any beauty contests either. | |||
masak | I always thought it was a bit of a nod to p5 that the thing passed in can be either a type object or a concrete object. | 10:31 | |
smls | Maybe call it :UD or :DU instead? | ||
timotimo | :DUI? | ||
smls | ;) | ||
or :U:D to make it look like stacking adverbs | 10:33 | ||
masak | doesn't feel quite right, though. | 10:34 | |
timotimo | i dislike how that collides with the final : for invocant | ||
then you could have Dog:, Dog:D:, Dog:U:, Dog:D:U and Dog:D:U: | |||
masak | I think the consequences of making :D the default should be seriously thought through. regardless of what syntax ends up replacing :_ , if any. | 10:35 | |
smls | if the invocant : requires a space after it, it might not be so bad | ||
masak | feels to me that making :D the default "hides" type objects quite a bit further back in the language. | ||
smls: that feels weird, especially for invocant-only methods. | |||
smls | one disadvantage of making :D the default in function signatures, is that it doesn't make sense to also make it the default for my declarations | 10:36 | |
which, in the general case, are also signatures | 10:37 | ||
so either it's inconsistent, or one of them is suboptimal | |||
my ($x, $y); # a "type check failed" error here would be rather WAT | 10:38 | ||
timotimo lacs | |||
er | |||
timotimo lacks permission to restart cameli | 10:39 | ||
camelia | |||
10:48
laouji joined
10:52
Maddingu1 left,
Maddingue joined
10:53
laouji left
|
|||
dalek | c: ab78bc1 | paultcochrane++ | t/pod-htmlify.t: Don't run pod-htmlify if URI::Escape isn't installed |
10:56 | |
smls | Being able to say "my-method(:U: $foo)" insead of "my-method(Current::Class::Name:U: $foo)" is nice. moritz++ | 10:57 | |
timotimo | did moritz already implement that, or only suggest? | 10:58 | |
smls | he spec'd it | ||
timotimo | OK | 10:59 | |
10:59
Kristien left
|
|||
smls | timotimo: Once good Perl 6 syntax highlighting proliferates, the different kinds of : will hopefully be less confusing. | 11:01 | |
e.g. "Dog:U:" --> "<typespec>Dog:U</typespec><interpunctuation>:</interpunctuation>" | 11:02 | ||
timotimo | i disagree with requiring to have syntax highlighting to make code understandable | ||
smls | Well there are different levels of understanding | 11:03 | |
If newbies can recognize a construct and even use it without understanding the more general rule of how it is contructed from its parts, that's ok imo | |||
vendethiel | psch: the problem is -- "evalp6code" will be a real performance problem :) | 11:04 | |
psch | vendethiel: to the extend that 'perl6-j' is a performance problem, yes | 11:08 | |
vendethiel | *g* | 11:09 | |
no, to the extend that the jvm can't optimize it | |||
(in the long run, that is) | |||
psch | why not? | ||
vendethiel | because it's re-eval'd everytime | ||
dalek | albot/timo-require-config-file-exists: 067570b | timo++ | evalbot.pl: exit the program if the config file wasn't found also writes the cwd to the console. |
||
timotimo | can has review, please? i don't has perl5 skills | 11:10 | |
psch | i don't know if that's true. caching CompUnits (e.g. CORE.setting) might be possible? | ||
timotimo: curlies don't interpolate in qq in p5, afair | 11:11 | ||
11:12
chenryn left
|
|||
timotimo | OK. how do i do it instead? | 11:12 | |
psch | i'd do «"...not found in " . getcwd();» | ||
although those parens might be superstitious | 11:13 | ||
smls | "wasn't found in @{[ getcwd ]}." would also work, though it's a hack. | 11:14 | |
jnthn | afternoon, #perl6 | 11:15 | |
timotimo | test test | ||
psch | o/ jnthn | ||
dalek | albot/timo-require-config-file-exists: 56af077 | timo++ | evalbot.pl: qq doesn't interpolate curlies in perl5 by default psch++ |
11:16 | |
timotimo | looks mergable? | 11:18 | |
11:19
Hor|zon joined
11:21
tinyblak left
11:22
tinyblak joined
11:23
Hor|zon left
11:24
tinyblak left
11:25
tinyblak joined
|
|||
[ptc] | is there a "panda uninstall [package-name]"? | 11:26 | |
11:27
virtualsue left
|
|||
dalek | c: b0c06de | timotimo++ | t/pod-htmlify.t: simplify URI::Escape requirement in pod-htmlify.t |
11:27 | |
timotimo | there is not | ||
[ptc] | pity | 11:28 | |
is there a simple way to uninstall a package? | |||
timotimo | only rm'ing the files in the install directory | 11:29 | |
[ptc] | ok. been there, done that. However wondered if I was missing something | 11:30 | |
timotimo | Mouq: are you attentive? | 11:31 | |
jnthn | TimToady++ # fixing the s and m term thing | 11:32 | |
jnthn is gonna have to update the native-ref branch with nom before his next test run, after all these patches :) | 11:33 | ||
But first, get the JVM porting done... :) | |||
itz | is native-ref to be used for NSA? | 11:35 | |
timotimo | itz: indeed | ||
Mouq: you're wrapping $past with &HYPERWHATEVER near the bottom of whatever_curry after the annotations have been set that are used for inlining curries into each other; do you know if that has negative effects? | 11:36 | ||
itz | [ptc]: I was wondering whether panda should record installed files with SHA256 sums maybe in a JSON structure | ||
jnthn | itz: Yeah, it's one of the main building blocks I needed for native arrays, but it also takes care of many language usability issues with native types | 11:37 | |
Like the infamous "wtf I can't $native-int++" | |||
timotimo | yes! | 11:38 | |
psch | coercing to string here github.com/rakudo/rakudo/blob/nom/....nqp#L6733 fixes this todo github.com/perl6/roast/blob/master...ders.t#L66 | ||
timotimo | and "cannot use 'is rw' on a native attribute" | ||
11:38
tinyblak left
|
|||
psch | i'm unsure if moar is doing the right thing (i.e. not getting hung up on Mu vs Any) or jvm (i.e. getting hung up on *) | 11:38 | |
11:38
tinyblak joined
|
|||
psch | 'cause $*IN_DECL, which is what gets annotated into .ann('IN_DECL') on nqp level should be Mu on both backends, right? | 11:39 | |
(coercing to string seems a bit like fixing the symptoinstead of the system | 11:40 | ||
s/oin/om in/ | |||
smls | jnthn: If @a is a compact array of native int's, what will @a[0] return? Some kind of Proxy container? | 11:43 | |
timotimo | a native reference to the int in the array | 11:44 | |
it is "a kind of container", but not really | |||
smls | Is that specunspecified on a language level and users are told to think of @[0] = 4 as magic syntax and not introspect it? | ||
jnthn | Well, it is a container in the same sense Scalar is | ||
itz | m: my int $i=2; $i++ | ||
jnthn | Just doing a rather different thing when you store into it | ||
timotimo | itz: camelia needs a restart right now, nine isn't at the computer to do it right now, though | 11:45 | |
jnthn | The key thing is that for common cases, the compiler can elide a lot of the reference takes. | ||
itz | ah | ||
11:45
Kristien joined
|
|||
jnthn | And Moar will be able to eliminate a bunch more, especially in combination with inlining. | 11:45 | |
11:46
lizmat left
|
|||
jnthn | smls: Well, you can expect some kind of "first class" l-value thing | 11:46 | |
smls | ok | ||
jnthn | smls: But the spec doesn't nail down details beyond that. | ||
smls | Currently @a[$i] already returns a proxy for out-of-bounds elements, right? | ||
to make autovivification work | |||
jnthn | Yes | 11:47 | |
> my int $a = 42; my $b := $a; $b++; say $a; | |||
43 | |||
That's one example of the "first class" nature of the refs | |||
smls | nice | 11:48 | |
timotimo | that's supposed to work for compact arrays, too, right? | ||
jnthn | Not quite sure how horribly that will fall out of the optimizer, but in combination with lowering to locals and the stuff spesh does, the answer may well be "just fine" | ||
timotimo: Yeah, and already does in native-ref if you count Buf as a kind of native array | 11:49 | ||
timotimo | neato! | ||
jnthn | > my $b = Buf.new(1, 2, 3); my $x := $b[1]; $x++; say $b; | ||
Buf:0x<01 03 03> | |||
colomon | moritz: I think the problem is emmentaler / panda cannot tell the difference between a module failing tests and one of its dependencies failing tests. Questhub depends on HTTP::UserAgent, which also failed... | 11:50 | |
vendethiel | nine_++ # highlighter | 11:54 | |
timotimo | vendethiel: take a screenshot please! | ||
vendethiel doesn't have one :P | |||
timotimo | OK | 11:55 | |
i'd like a parallel version of that that outputs pretty html | 11:57 | ||
11:58
virtualsue joined
|
|||
timotimo | jnthn: can we have a way to throw out blocks that have been added into the $*W at some point? | 11:59 | |
i'm a bit too distracted to figure the whatever currying stuff out right now | 12:02 | ||
12:03
_mg_ joined
|
|||
jnthn | timotimo: Umm...at some point maybe | 12:03 | |
timotimo: Do we need to do it often? | 12:04 | ||
timotimo | i should measure before i make more "demands" | ||
whatever_curry "inlining" creates many, many throw-away blocks | |||
well, one for each operator that's involved | |||
jnthn | Ah, I see | 12:05 | |
dalek | p/native-ref: ceb047a | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files): HLL entries for native ref types. |
12:06 | |
12:17
virtualsue left
12:21
spider-mario left
12:25
leont joined
12:26
Kristien left
12:33
Kristien joined
12:37
grondilu joined
12:38
laouji joined
12:42
laouji left
12:43
kjs_ joined
12:46
laouji joined
12:48
vendethiel left
|
|||
moritz | star-m: say "version?" | 12:54 | |
ENOCAMELIA | |||
12:55
tinyblak left
12:56
tinyblak joined
|
|||
timotimo | moritz: do you have permission to systemctl restart [email@hidden.address] ? | 12:59 | |
moritz | timotimo yes, but it doesn't help :( | 13:00 | |
timotimo | oh? | ||
moritz | missing module, it seems | ||
timotimo | did you see the log? |
|