»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
gfldex m: role DefinedAndNotEmpty { multi method defined(Str:D:){ self eq '' ?? False !! True } }; my $s = '' but DefinedAndNotEmpty; say $s.defined; sub foo(\p1 -->DefinedAndNotEmpty){ p1 }; foo 'abc'; 00:21
camelia rakudo-moar 234aa4: OUTPUT«False␤Type check failed for return value; expected DefinedAndNotEmpty but got Str ("abc")␤ in sub foo at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
ShimmerFairy gfldex: I don't know what the solution to that is, but might I suggest self ne '' ? :) Or even $_ ne '' with self (so you don't compare a normally-undefined string) 00:28
gfldex m: subset NonEmpty of Str where * !== ''; sub foo(\s -->NonEmpty){ s }; say foo 'abc'; 00:29
camelia rakudo-moar 234aa4: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5abc' (indicated by ⏏)␤ in any accepts_type at gen/moar/m-Metamodel.nqp line 3431␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in any ac…»
gfldex m: subset NonEmpty of Str where * ne ''; sub foo(\s -->NonEmpty){ s }; say foo 'abc';
camelia rakudo-moar 234aa4: OUTPUT«abc␤»
gfldex that's the solution (nearly)
m: subset NonEmpty of Str where * ne ''; sub foo(\s -->NonEmpty){ Nil }; say foo 'abc';
camelia rakudo-moar 234aa4: OUTPUT«Nil␤»
gfldex nearly, because of the dreaded Nil 00:30
ShimmerFairy ...but didn't you just force Nil there?
gfldex m: subset NonEmpty of Str where { fail('Nil!') if $_ == Nil; $_ ne '' }; sub foo(\s -->NonEmpty){ Nil }; say foo 'abc'; 00:31
camelia rakudo-moar 234aa4: OUTPUT«Nil␤»
gfldex I did force Nil but I want it to blow up properly on Nil
Nil is worse then a non-empty string in a sub that is supposed to return a non-empty string 00:32
ShimmerFairy m: say Nil eq ''
camelia rakudo-moar 234aa4: OUTPUT«Use of Nil in string context in block <unit> at <tmp> line 1␤True␤»
gfldex as soon as return spots a Nil it will skip the return type constraint entirely 00:33
the whole idea of runtime return value checks is that it fails early and the error message/exception is local to the sub that is causing the problem 00:34
Nil makes that very difficult 00:35
gfldex m: my &return = sub (|c){ fail('Nil') if c ~~ Nil }; # i'm that mad at Nil 00:41
camelia ( no output )
gfldex m: my &return.wrap(sub (|c){ fail('Nil') if c ~~ Nil; callsame }); 00:42
camelia rakudo-moar 234aa4: OUTPUT«Method 'wrap' not found for invocant of class 'Callable'␤ in block <unit> at <tmp> line 1␤␤»
dalek c: f2a741a | (Wenzel P. P. Peppmeyer)++ | doc/Language/functions.pod6:
MAIN needs to call exit to provide an exitcode != 0
01:11
gfldex m: sub MAIN(){ return 1 }; MAIN() # that should warn IMHO 01:25
camelia ( no output )
gfldex m: sub MAIN(){ my &return = { warn 'bad!' }; return 1 }; MAIN() # that should warn IMHO 01:27
camelia rakudo-moar 234aa4: OUTPUT«bad! in block at <tmp> line 1␤bad! in block at <tmp> line 1␤»
gfldex :)
ugexe nine: when trying to use a custom CUR I can get `require <tar#lib/Root.pm6>` to load Root.pm6, but `require <tar#lib/Root/UsesRoot.pm6>` fails to load Root.pm6. The problem is that my CUR::Tar.load only gets called for `lib/Root/UsesRoot.pm6` which never calls CUR::Tar.load again period (I expected it would but with a short-name). Any idea what I'm forgetting to do? 01:43
as an example of the failure see the last line of github.com/ugexe/Perl6-CompUnit--R...01-basic.t
nicq20 Sorry to barge in here with questions, but I'm having trouble understanding how Perl6 is compiled with rakudo on the MoarVM. Is that like C compilation, or more like JIT compilation? 01:52
MasterDuke i'm not a core dev, so take what i say with a grain of salt, but it's more like JIT (there is in fact a JIT) 02:00
nicq20 Huh. Ok, some people will talk about it like it does a C-like compilation, so I was not sure. I mostly hear that with modules. 02:02
MasterDuke it will pre-compile code, most usefully modules, into a bytecode format 02:05
but not a native binary like a C compiler does 02:06
nicq20 Oh, ok. That makes sense. 02:08
sammers good morning from Japan 02:39
MasterDuke .tell timotimo github.com/MoarVM/MoarVM/pull/380 is a partial fix (i believe) 02:48
yoleaux MasterDuke: I'll pass your message to timotimo.
sammers is there a way to set a base collection of paramaters that all multi subs will use? 04:02
sammers for example, I want all multi sub foo() to use Str :$bar, Str $:baz, plus their custom params 04:04
so their signature will always include :$bar, :$baz, plus their unique params. 04:05
rindolf sammers: hi. 04:08
sammers rindolf: hello 04:10
parabolize sammers: would this work? gist.github.com/parabolize/ada0e42...93c940bab1 04:36
sammers parabolize, thanks, I am actually looking to use this for MAIN 04:39
parabolize you could probably do something with a Capture 04:40
my $defaults = \(Str :$bar, Str :$baz)
sammers I want to create a few base params that are applicable to all multi MAINs
ok, I will take a look 04:41
parabolize sammers: nevermind my non-sense about Captures, proto is what you want 04:44
docs.perl6.org/language/functions#proto
Captures are the calling side not the receiving. XD 04:45
sammers ok, I am messing around with proto now. Is there a way to predefine a set of paramaters to be passed around? 04:46
I guess something like a code object...
Xliff .seen FROGGS 05:52
yoleaux I saw FROGGS 2 Jul 2016 10:32Z in #perl6: <FROGGS> o/
Xliff .tell FROGGS The latest PR for p6-XML::LibXML finishes the porting of 06elements and 08findnodes. Please let me know what you think. 05:53
yoleaux Xliff: I'll pass your message to FROGGS.
sammers is there a way to detect when a value is passed to a sub that doesn't match a where {} test? 05:56
I am using this with MAIN and trying to detect if one of the values passed matched, but all it does is print usage when no match. 05:57
ShimmerFairy sammers: you would need a multi sub, where the other sub catches a failed 'where' test. 05:58
sammers ah, ok 05:59
ShimmerFairy m: multi sub foo($a where 4) { say $a }; multi sub foo($a) { say "OOPS" }; foo(4); foo(3) # an example
camelia rakudo-moar 234aa4: OUTPUT«4␤OOPS␤»
sammers hmm 06:02
sammers is there anyway to have the generated usage print out valid values for each signature paramater? without having to manually define usage. 06:07
ShimmerFairy sammers: I'm not sure, I think you'd have to define your own USAGE to do that. 06:15
sammers ShimmerFairy, thanks. Do you know if there is a scoped variable that stores parameters and their values? something I could loop on for example. 06:19
ShimmerFairy I don't think there is, unless (I *think*) you define a sub with no signature and then can use @_. Or, if you're talking about command-line inputs, there might be some kind of @*ARGS variable. 06:20
sammers like sub foo($name, $age) { for %params.kv -> $param, $value { ... } } 06:21
yeah, there is @ARGS... hmm
nine ugexe: there is no mechanism yet for registering new short-ids for repo implementations. Try a method path-spec that returns self.^name ~ '#'. Like github.com/rakudo/rakudo/blob/nom/...ing.pm#L12 06:25
ugexe: oh, the Staging repo also demonstrates how to pass arbitrary parameters to the constructor through path-spec :) 06:26
nine ugexe: in case you wonder about the syntax: that mechanism has already existed (even before CompUnit::Repository). I merely discovered it. 06:27
moritz \o 06:42
Xliff o/ 06:47
psch .tell gfldex defined and not empty for Str is the definition of .Bool 06:59
yoleaux psch: I'll pass your message to gfldex.
lizmat clickbaits p6weekly.wordpress.com/2016/07/04/...er-starts/ 07:06
moritz lizmat++ 07:15
ssqq hello, every one. 大家好! 07:45
gfldex . 08:00
yoleaux 06:59Z <psch> gfldex: defined and not empty for Str is the definition of .Bool
timotimo . 08:11
yoleaux 02:48Z <MasterDuke> timotimo: github.com/MoarVM/MoarVM/pull/380 is a partial fix (i believe)
timotimo thanks MasterDuke, it seems to have worked. here's the results: hack.p6c.org/~timo/coverage/ 08:27
mrplastic ZoffixMobile: thanks i'll stick with it a little bit 08:34
rindolf . 08:37
rindolf No messages for me. :-( 08:37
gfldex .tell rindolf how are you doing mate? 08:45
yoleaux gfldex: I'll pass your message to rindolf.
gfldex there you go
rindolf .
yoleaux 08:45Z <gfldex> rindolf: how are you doing mate?
rindolf gfldex: I am currently doing Plasma 5 - not the Mate desktop. 08:46
rindolf gfldex: thanks for the message, though. 08:46
gfldex :)
gfldex .tell lizmat i blogged about 1h to late, you may want to include it in the next weekly gfldex.wordpress.com/2016/07/05/2-2-3/ 08:50
yoleaux gfldex: I'll pass your message to lizmat.
RabidGravy boing 08:51
moritz wow, the Icinga2 api is... creative. They kinda duplicate HTTP status codes in the payloads, but there they are floating points 09:10
ever got a 404.0? :-)
timotimo you mean a 4.04e2?
gfldex does 404.1 + 404.2 == 404.3 ?
moritz 2e0 * 202 :-) 09:11
RabidGravy Doesn't some MS IIS version do that too? 09:12
or didn't, so long since I've actually used it 09:13
ShimmerFairy moritz: but have they implemented ASTs like the latest version of PHP? :P 09:18
moritz ShimmerFairy: tell me more about the PHP's ASTs :-) 09:19
moritz a fan of software gore
timotimo it could be not-that-bad 09:20
moritz you mean after they chose the backslash as package separator?
ShimmerFairy moritz: I can't find the release notes I remember coming across, but here's an RFC on it: wiki.php.net/rfc/abstract_syntax_tree 09:21
timotimo moritz: it was the only thing that was still free, and it was familiar to windows users, because it's the path separator there 09:24
ShimmerFairy Ah, here it is! secure.php.net/releases/7_0_0.php
timotimo secure.php.net %)
that's the host they set up to handle https? 09:25
ShimmerFairy "PHP 7.0.0 comes with a new version of the Zend Engine, numerous improvements and new features such as ... * Abstract Syntax Tree"
ShimmerFairy I hope Bobby Tables lent an inspection to that subdomain. 09:25
moritz timotimo: and of course, there's no possible ambiguity with backslash for escaping in string interpolation... 09:26
timotimo yeah, because you can't put namespaced things into strings
moritz of course not 09:27
composability? nope
timotimo i'd advise making namespaces traversable with an API instead of string literals 09:28
ShimmerFairy timotimo: how about the Str class API? :V
timotimo Str doesn't have anything to do with packages/namespaces :)
ShimmerFairy timotimo: it could if you want it to :P 09:29
timotimo i'm the language designer, of course
ShimmerFairy And of course, now infix:<::> is a synonym for infix:<~>, so people's package-manipulating code isn't confusing: $scope = "Foo::"; $pkgbar = $scope :: "Bar"; 09:33
timotimo hehe 09:36
"happy 2016th birthday america! this is the year we leave the european union!" 09:37
pmurias ShimmerFairy: v8 doesn't use an AST in it's least optimizing compiler too 09:49
timotimo right, it works pretty much directly on the source, doesn't it?
pmurias it has a bunch of compilers, the least optimizing one just emits machine code from the parser 09:51
timotimo OK
pmurias just like PHP seems to be emitting bytecode from the parser and they now plan to add an AST in between
ShimmerFairy It probably says something that the _least_ optimizing compiler foregoes ASTs, though :) 09:53
pmurias ShimmerFairy: they do it to emit code as fast as possible 09:54
moritz it really depends on the language whether you need ASTs or not 09:56
ShimmerFairy I guess I'm so used to ASTs being the way to go that seeing PHP take decades(?) to get around to it seems funny :) .
nine FWIw Perl 5 doesn't have a real AST either. Though its op tree is at least accessible to user space code and allows for pretty cool manipulations. 10:02
iH2O grrr 10:18
gfldex m: sub s(){ CONTROL { dd $_ }; return }; s; 10:22
camelia rakudo-moar 418810: OUTPUT«chars requires a concrete string, but got null␤ in sub s at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
gfldex m: sub s(){ CONTROL { say $_.^name }; return }; s; 10:23
camelia rakudo-moar 418810: OUTPUT«X::AdHoc␤»
gfldex m: sub s(){ CONTROL { put $_.Str }; return }; s;
camelia rakudo-moar 418810: OUTPUT«concatenate requires a concrete string, but got null␤ in sub s at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
psch m: sub s { CONTROL { .perl.say }; last }; s 10:24
camelia rakudo-moar 418810: OUTPUT«CX::Last.new␤last without loop construct␤ in sub s at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
gfldex m: sub s(){ CONTROL { put $_.message }; return }; s;
camelia rakudo-moar 418810: OUTPUT«concatenate requires a concrete string, but got null␤ in sub s at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
psch we probably need an equivalent for return there
gfldex m: sub s(){ CONTROL { put 'control' }; }; s; 10:25
camelia ( no output )
gfldex m: sub s(){ CONTROL { put 'control' }; return }; s;
camelia rakudo-moar 418810: OUTPUT«control␤»
gfldex m: sub s(){ CONTROL { put 'control' }; fail 'bye' }; s;
camelia rakudo-moar 418810: OUTPUT«control␤bye␤ in sub s at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
bpmedley Greetings, I'm not getting any output by running this code with the given nc command: gist.github.com/brianmed/b70a1b3fb...446e6fbd0e ... What am I doing wrong? 10:29
dalek c: f1f94c7 | (Wenzel P. P. Peppmeyer)++ | doc/Language/phasers.pod6:
tell what causes control exceptions
10:30
psch m: sub f { CONTROL { .perl.say }; redo if $++ == 0 }; f 10:36
camelia rakudo-moar 418810: OUTPUT«CX::Redo.new␤redo without loop construct␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
psch gfldex: redo, next, last, take, warn, proceed, succeed are all caught by CONTROL as well
psch m: say CX::.keys 10:37
camelia rakudo-moar 418810: OUTPUT«(Last Warn Succeed Proceed Redo Next Take)␤»
gfldex i will add that too
psch gfldex++
cognominal lizmat++ # weekly 10:42
dalek c: eed0fd1 | (Wenzel P. P. Peppmeyer)++ | doc/Language/control.pod6:
doc return statement
10:45
Zoffix bpmedley, because you can't thread sockets like that. If you await that start, you'll see your Promise is being broken: gist.github.com/zoffixznet/c2f24df...ceb9ce05b9 10:46
bpmedley, maybe try out IO::Socket::Async? docs.perl6.org/type/IO::Socket::Async
bpmedley Zoffix: Thanks; is this page wrong? rosettacode.org/wiki/Echo_server#Perl
dalek c: 5eb3a51 | (Wenzel P. P. Peppmeyer)++ | doc/Language/phasers.pod6:
control exceptions are raised by many more things (psch++)
10:48
gfldex m: sub s(){ my $a = 41; return $a }; say ++s(); # that's message is a bit LTA 10:50
camelia rakudo-moar 418810: OUTPUT«Cannot resolve caller prefix:<++>(Int); none of these signatures match:␤ (Mu:D $a is rw)␤ (Mu:U $a is rw)␤ (Int:D $a is rw)␤ (int $a is rw)␤ (Bool $a is rw)␤ (Num:D $a is rw)␤ (Num:U $a is rw)␤ (num $a is rw)␤ in …»
Zoffix bpmedley, ¯\_(ツ)_/¯ It may be.
bpmedley Zoffix: Thanks for your help!
psch m: sub s { CONTROL { default { .perl.say } }; return }; s 10:51
camelia rakudo-moar 774e2d: OUTPUT«CX::Return.new␤»
Zoffix .ask jnthn is this Rosetta code outdated? It does a start {} on a connected socket and bleed Rakudo breaks the promise with "Tried to read() on a socket from outside its originating thread". I think this may be due to the async fixes we lately had. rosettacode.org/wiki/Echo_server#Perl_6
yoleaux Zoffix: I'll pass your message to jnthn.
psch star-m: sub f { A: CONTROL { default { .perl.say } }; last A }; f 10:52
camelia star-m 2016.04: OUTPUT«chars requires a concrete string, but got null␤ in block at <tmp> line 1␤ in sub f at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
psch m: sub f { A: CONTROL { default { .perl.say } }; last A }; f
camelia rakudo-moar 774e2d: OUTPUT«CX::Last.new␤»
jkramer Ahoy once again! 10:52
Zoffix \o
psch o/
jkramer I have a general question about parameters. They seem to be read-only by default (ie I can't modify them inside the sub). "is rw" doesn't work on optional parameters. Why is this and what can I do about it (except creating a new var)? 10:54
Zoffix huh 10:55
jkramer Is there some keyword like "local" in P5 maybe?
psch m: sub f($a? is copy) { $a //= 10; say $a }; f 2
camelia rakudo-moar 774e2d: OUTPUT«2␤»
Zoffix jkramer, temp
Zoffix jkramer, but is rw is different. It lets you modify the caller's var 10:56
psch jkramer: you can't 'is rw' an optional Parameter because you might not have an argument, but you can 'is copy' them
Zoffix you want is copy
psch worst case you copy nothing vOv
jkramer Ah, "is copy" does the trick. So by default it's a reference and modifying it would change it in the callers context too?
Zoffix m: perl6.party/post/Perl-6-There-Are-T...t-1#iscopy
camelia rakudo-moar 774e2d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Confused␤at <tmp>:1␤------> 3http:7⏏5//perl6.party/post/Perl-6-There-Are-Trai␤ expecting any of:␤ colon pair␤»
Zoffix err
jkramer, ^
psch jkramer: by default its a containerless copy of the value of the argument
Zoffix m: my $meow = 72; sub (:$foo is rw) { $foo = 42 }($meow); say $meow
camelia rakudo-moar 774e2d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot use 'is rw' on an optional parameter␤at <tmp>:1␤»
jkramer Ha, that's probably the best domain ever :D
Zoffix orly
jkramer, see the About page :P 10:57
hahainternet yeah it's pretty classy
Zoffix m: my $meow = 72; sub (:$foo is required is rw) { $foo = 42 }($meow); say $meow
camelia rakudo-moar 774e2d: OUTPUT«Too many positionals passed; expected 0 arguments but got 1␤ in sub at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
hahainternet Zoffix: show-off :)
Zoffix m: my $meow = 72; sub (:$foo is required is rw) { $foo = 42 }(:$meow); say $meow
camelia rakudo-moar 774e2d: OUTPUT«Required named parameter 'foo' not passed␤ in sub at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
jkramer Zoffix: Awesome :D
Zoffix m: my $meow = 72; sub (:$foo is required is rw) { $foo = 42 }(:foo($meow)); say $meow
camelia rakudo-moar 774e2d: OUTPUT«42␤»
Zoffix Seems to work
jkramer, BTW, things inside arrays and hashes are still mutable by default
m: my %hash = foo => 'bar'; sub (%h) { %h<foo> = 'meow' }(%hash); dd %hash 10:58
camelia rakudo-moar 774e2d: OUTPUT«Hash %hash = {:foo("meow")}␤»
hahainternet do you need the 'sub' syntax if you're immediately calling? are there no bare blocks in perl6?
oh, no that works 10:59
jkramer Alright, thanks for explaining!
Zoffix m: my %hash = foo => 'bar'; -> %h { %h<foo> = 'meow' }(%hash); dd %hash # there are
camelia rakudo-moar 774e2d: OUTPUT«Hash %hash = {:foo("meow")}␤»
Zoffix Just a habit
And you can't `return` from a block
dalek c: 7151835 | (Wenzel P. P. Peppmeyer)++ | doc/Language/control.pod6:
doc return-rw
11:04
c: b7ade36 | (Wenzel P. P. Peppmeyer)++ | doc/Language/control.pod6:
link from fail to phasers
dalek doc: 30f81a5 | (Aleks-Daniel Jakimenko-Aleksejev)++ | WANTED: 12:10
doc: WANTED file is not needed anymore (#657)
doc:
doc: Here is the summary of all items in WANTED list (and reasons why we do not
doc: need to list them anymore):
AlexDaniel whoops… 12:10
dalek line-Perl5: c58cbe6 | (Zoffix Znet)++ | README.md:
Use latest-stable perl in perlbrew instructions
13:10
line-Perl5: fb19e06 | lizmat++ | README.md:
Merge pull request #68 from zoffixznet/patch-1

Use latest-stable perl in perlbrew instructions
gfldex can i provide a URL on X<>? 13:20
BrokenRobot Not at the momemnt, but it's a direly needed feature. 13:21
BrokenRobot Probably something added in Pod::To::HTML 13:21
moritz what would that do?
gfldex X<> would need to create a uniq id in <a/>
BrokenRobot moritz: ability to link to a reference in the document. 13:22
gfldex right now using the search field on anything created by X<> lands on the page where the X<> was in a .pod
you can't jump down to the actual <a name="your-index-entry"> because there is no <a/>
moritz BrokenRobot: you mean something like latex's \ref? 13:23
gfldex yes
BrokenRobot I don't know anything about latex.
moritz but wouldn't that be a feature of L<...> instead?
I mean, X<...> are the anchors, not the links to the anchors
BrokenRobot Not really. There's nothing in the generated markup to indicate where there was an X<> 13:24
MafProd_ Has anyone recently tried to install JSON::RPC recently on Linux? Panda fails on a test with a MAST::Frame error.
BrokenRobot So you can't contruct a link to that portion of the HTML document
gfldex that is not true, there is a <span name="not-so-uniq"/>
MafProd_ I tried on different distro's and keep getting the same error.
BrokenRobot MafProd_: someone else had that error too
nine gfldex: you don't need an <a/> for jumping within a document. Any element with an id is enough.
moritz BrokenRobot: right. But that means X<> must construct the anchor
BrokenRobot: and L<> the link to that anchor
gfldex <a> can have a name= that doesn't need to be uniq
MafProd_ Could not find anything usefeull in google. 13:25
BrokenRobot MafProd_: do you actually need that module or are you just trying to install Task::Star?
gfldex and we need uniq ids because they can collide with <a/>s provided by =head
nine gfldex: but a non-unique name is not as usefull for navigation, isn't it?
gfldex it's better then nothing
MafProd_ BrokenRobot, I was trying to install Task::star
BrokenRobot MafProd_: it's just a collection of modules. You don't need it for functional Perl 6. You can install any individual modules from it. There're in this list: github.com/tadzik/Task-Star/blob/m...TA.info#L5 13:26
MafProd_ BrokenRobot : I'll give that a try. Thnx. 13:27
gfldex the problem is that forcing uniq ids/name attributes would require the build to fail on non-uniq values. LaTeX is solving that problem by not being parallelable. 13:28
BrokenRobot Are we actually paralleling a build of a single pod? 13:29
moritz one could always return a set of anchors, and fail at thread/promise joining time when there's a conflict 13:29
gfldex BrokenRobot: not right now because of thread-knots 13:30
moritz though that's more complicated for sure
gfldex i will create a list of all X<> anchors to see how many dupes we actually got
we could also prefix the ids with your-file.pod-- to create uniqness 13:31
BrokenRobot gfldex: but they only need to be unique per file. 13:31
gfldex they may have to be uniq in the search.js . Not sure how that is actually created. 13:32
BrokenRobot If that's the case, that'd be search.js's problem, not Pod::To::HTML's 13:33
nine FWIW I can reproduce JSON::RPC's test failure: Expected MAST::Frame, but didn't get one 13:36
BrokenRobot ditto
I'll file a ticket 13:37
MafProd_ BrokenRobot: I am able to build the other modules from Task::Star without issues. Only the JSON::RPC fails during testing. 13:44
BrokenRobot How come the Issues tab is disabled for LWP::Simple? github.com/perl6/perl6-lwp-simple 13:45
It needs IO::Socket::SSL in the prereqs, since the tests fail without it
OR better, make those tests optional
timotimo i just turned it back on 13:47
BrokenRobot Filed: github.com/perl6/perl6-lwp-simple/issues/2 13:50
.tell stmuk This potentially blocks R*, as JSON::PRC is part of Task::Star: github.com/bbkr/jsonrpc/issues/28 13:52
yoleaux BrokenRobot: I'll pass your message to stmuk.
BrokenRobot
.oO( Why is JSON::RPC in Task::Star .... )
13:54
tadzik is it not in regular-star? 13:55
BrokenRobot What's regular-star?
tadzik rakudo star
the actual release, unlike the module that mimicss it
nine It is. But why?
Doesn't sound like a module that most or even many users will need. 13:56
tadzik it was probably considered usable and useful :)
I don't think Star ever really had a guideline of what's worthy and what's not
iH2O seems youre investing lots of efforts in this new usable/useful cult version folks B-) 13:57
nine Well to me Task::Star seems like just a list of the modules that at one point worked.
BrokenRobot I was under the impression the actual release just ran panda install Task::Star :)
timotimo no, it ships the modules in a specific version
tadzik no, that's why they're out of sync :)
ugexe nine: it has a path-spec. the problem is because after it is successful in loading the byte code for tar#lib/Foo/Bar.pm6, the code inside tar#lib/Foo/Bar.pm6 will have just `use Foo::Bar` which doesn't match the path spec anymore but it is inside the same tar archive. so it feels like im simply missing one step somewhere
BrokenRobot I see.
ugexe er s/use Foo::Bar/use Foo/ 13:58
tadzik I created Task::Star because I wanted the same set installed but didn't use Rakudo Star
BrokenRobot Sure. I guess my question should've been
tadzik since then I mostly rely on pull request and manual reports about things that change about Star modules
BrokenRobot
.oO( Why is JSON::RPC in R* .... )
tadzik :) 13:59
BrokenRobot :D
moritz because there isn't a real vision for *
ugexe like maybe `use lib "/x/y/x.tar.gz"`
nine ugexe: I know it has a path-spec. But that currently creates a spec that starts with the repo's short-id. The perl6 process that precompiles won't find your repo class with that short-id. You need the full class name instead.
moritz and in the beginning, we had so few modules that we just included whatever seemed working and somewhat usable 14:00
nine ugexe: Also why is that require "tar#lib/Zef.pm6" in the first place and not just require Zef;? 14:01
timotimo that's a reason we might soon want to have Rakudo Sparkles
BrokenRobot RakudoFAT: includes every ecosystem module that managed to successfully install when the release was cut :P 14:03
timotimo Rallkudo? 14:04
BrokenRobot Includes LiveCD! :D
ugexe nine: only because the former worked first, so i kept prodding that
BrokenRobot Rakudall
nine ugexe: seems to me like it should look like this: use CompUnit::Repository::Tar; BEGIN CompUnit::RepositoryRegistry.use-repo(CompUnit::Repository::Tar.new(:prefix<zef.tgz>)); use Zef; 14:04
ugexe: or alternatively: use lib 'CompUnit::Repository::Tar#zef.tgz'; use Zef; 14:05
I'm just not sure if use lib already handles all the magic needed. Will have to check that.
timotimo Everykudo 14:06
gfldex BrokenRobot: there are 8 duplicated index entries and I can find them real quick. I will have a look at Pod::To:HTML to get something linkable in.
ugexe nine: i think those are what i really wanted 14:07
dalek osystem: 3416c74 | Altai-man++ | META.list:
Test::NoTabs module
14:10
rl6-most-wanted: 20ab382 | Altai-man++ | most-wanted/modules.md:
Test::NoTabs was implemented
14:13
Ven_ m: my %h; for %h<foo>.list { .say; } # WAT? 14:15
camelia rakudo-moar d4ac15: OUTPUT«(Any)␤»
moritz Ven_: what did you expect? 14:16
Ven_ moritz: I'd expect an empty list. and thus no loop iteration. 14:16
timotimo that's not how that works
m: my %h; for %h<foo bar>.list { .say
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Missing block␤at <tmp>:1␤------> 3my %h; for %h<foo bar>.list { .say7⏏5<EOL>␤ expecting any of:␤ statement end␤ statement modifier␤ statement modifier loop␤»
timotimo m: my %h; for %h<foo bar>.list { .say }
camelia rakudo-moar d4ac15: OUTPUT«(Any)␤(Any)␤»
Ven_ because the non-nice thing is thing:
timotimo you'll always get a container that you can bind into 14:17
you want :exists
Ven_ nope
moritz the default value for accessing a non-existing hash element is Any, and Any.list is a one-element list containing Any
timotimo m: my %h; for %h<foo bar>.list { $_ = 5 }; say %h
camelia rakudo-moar d4ac15: OUTPUT«{bar => 5, foo => 5}␤»
Ven_ that part makes sense. however...
m: my %h; %h<a>.push: 1; %h<a>.push: 2; %h<a>.push: 2; say %h<a>.perl;
camelia rakudo-moar d4ac15: OUTPUT«$[1, 2, 2]␤»
Ven_ it's a scalar container. $[]. so, after that, I need to .list to remove the $
moritz m: my %h is default(Nil); .say for %h<foo>
camelia rakudo-moar d4ac15: OUTPUT«Nil␤»
moritz m: my %h is default(Empty); .say for %h<foo>
camelia ( no output )
Ven_ m: my %h; %h<a>.push: 1; %h<a>.push: 2; %h<a>.push: 2; say %h<a>.perl; for %h<a> { .say } # only one element, wut? 14:18
camelia rakudo-moar d4ac15: OUTPUT«$[1, 2, 2]␤[1 2 2]␤»
Ven_ m: my %h; %h<a>.push: 1; %h<a>.push: 2; %h<a>.push: 2; for %h<a> { .say } # only one element, wut?
camelia rakudo-moar d4ac15: OUTPUT«[1 2 2]␤»
Ven_ m: my %h; %h<a>.push: 1; %h<a>.push: 2; %h<a>.push: 2; for %h<a>.list { .say } # guess I'll try to .list
camelia rakudo-moar d4ac15: OUTPUT«1␤2␤2␤»
Ven_ ^ that works. But if 'a' doesn't exist as a key, you'll get a loop iteration.. "for nothing" 14:18
(which, in my recursive case, means an infinite loop...) 14:19
moritz Ven_: use "is default(Empty)" or "is default(())" on the hash declaration 14:20
we do have to the tools to bend the language to your will.
Ven_ oh, we have the tools. I'd rather not have to use them for such a simple thing, though..
iH2O i thought i was stable 14:21
it was stable
Ven_ my expectations of lists are still a bit wonky, maybe? I don't understand why %h<foo>.push: 3; creates a $[] still..
moritz: I can't even do that, it's read from another thing and passed with %()
if $tree<children> { for $tree<children> {} } it is ... :[
moritz for $tree<children> // () 14:22
Ven_ that won't work. $tree<children> is a $[]. I can't "for" it.
[16:18] <Ven_> m: my %h; %h<a>.push: 1; %h<a>.push: 2; %h<a>.push: 2; say %h<a>.perl; for %h<a> { .say } # only one element, wut?
^ confusing to me
moritz for @($tree<children> // []) 14:23
yes, ugyl
Ven_ sorry for beating a how-so-dead horse at this point. but the solution feels a bit icky 14:25
moritz I do wonder if the scalar container can be avoided for .push autovivification 14:27
timotimo is default Slip? :P
moritz but then I guess you can't override the array anymore by assignment
timotimo mhm 14:28
Ven_ moritz: why not? 14:29
Ven_ my @h; my %h; %h<a> = @h; @h<a>.push: 3; say @h<a>; # works? 14:30
m: my @h; my %h; %h<a> = @h; @h<a>.push: 3; say @h<a>; # works?
camelia rakudo-moar d4ac15: OUTPUT«Type Array does not support associative indexing.␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
Ven_ m: my @h; my %h; %h<a> = @h; %h<a>.push: 3; say %h<a>; # works?
camelia rakudo-moar d4ac15: OUTPUT«[3]␤»
Ven_ m: my @h; my %h; %h<a> = @h; %h<a>.push: 3; say %h.perl; 14:30
camelia rakudo-moar d4ac15: OUTPUT«{:a($[3])}␤»
Ven_ :<
moritz Ven_: because hash and array elements remain assignable by them being a Scalar container holding the actual value 14:33
Ven_ ya, I understand. but the implications displease me :P
moritz m: my %h; %h<a> := [42]; say %h<a>
camelia rakudo-moar d4ac15: OUTPUT«[42]␤»
moritz m: my %h; %h<a> := [42]; %h<a> = 'blerg' 14:34
camelia ( no output )
moritz m: my %h; %h<a> := [42]; %h<a> = 'blerg'; say %h
camelia rakudo-moar d4ac15: OUTPUT«{a => [blerg]}␤»
moritz this seems to call the array's STORE method
Ven_ m: my %h; %h<a> := [42]; %h<a> = 'blerg'; say %h.perl
camelia rakudo-moar d4ac15: OUTPUT«{:a(["blerg"])}␤»
Ven_ I see..
it makes sense. we tell it "i have a container already, lemme do my things". 14:35
iH2O how do u represent the Ven diagram in perl6? 14:39
*oops Venn
Ven_ iH2O: I'm usually defined by Failure.new :) 14:46
iH2O how many containers can a Venn diagram have? is that related to the 4-color theorem for coloring a map? 14:48
God know...
knows...
gregf_ is a container a symbol table or some kind of a resource pool? 14:49
Ven_ Ven knows.
Ven_ gregf_: a symbol table? 14:49
DrForr There's a really good visualization of a N-way venn diagram that looks like a mess of lobes, past about 5 it's utter chaos. 14:50
iH2O srry to hear that, doc
i thought one could squeeze at least a dozen.. 14:52
moritz gregf_: a container is just an object that passes on most of its method calls to its content
not a symbol table, not a resource pool, just an plain old object 14:53
gregf_ moritz: sure, but how does it map 2 sigils to the same datatype/struct 14:56
like so,
moritz gregf_: a container doesn't map any sigils to anything
gregf_ class Foo { has Array $.arr is rw; has @.brr is rw; }; my $f = Foo.new(:arr([1,2]), :brr([3,4]));say $f.arr.^name, $f.brr.^name 14:57
oh
gregf_ so a container is an object, so what does it contain or why is it called a container 14:57
nine gregf_: a container may contain a value. 14:59
perlpilot wonders if this is part of the "references" confusion he noticed at TPC this year. 15:00
DrForr Could very well be, I remember having to defer to Liz at one point about this after a talk I gave. 15:01
Ven_ DrForr++ liz++
gregf_ nine: sure. and whats the life cycle of a container?
gregf_ would i be right in saying, the Garbage Collector cleans up containers? 15:02
im sorry for being so vague, *coming from a java/spring background and containers mean something quite different*
if a container is just an object then that would just be it ;) 15:03
nine gregf_: nope. At a level as low as the GC, containers are just plain objects
Ven_ gregf_: a container contains a value. The value can be "42". 42 is an integer, and is not assignable by itself -- it's only a number! The container is the part that does the storing, and provides = (as well as ++, etc). 15:04
nine gregf_: you can think of it this way: a variable is just a name for a container. The container may store a value and you may replace that value.
Ven_ you can't write "42++" – because it's a value, without a container. but "my $a = 42; $a++;" makes sense, because the container's value can be changed (to 43)
gregf_ oh - ok. thats quite helpful 15:05
perlpilot gregf_: great! Now you write the docs to explain it to other people coming from java/spring ;-) 15:06
Ven_ :P
gregf_ i was like. there is a container based on datatypes and each of them have some sort of a pooling mechanism
heh
Ven_ no, it's very far from DI.
gregf_ moritz: Ven_ nine perlpilot: ta 15:09
Ven_: symbol table is Perl5 land
Ven_ oh, you mean *x-like stuff?
I'm a Perl 5 noob :).
gregf_ well, Perl6 is a hybrid of Perl5 and Ruby *runs* 15:12
perlpilot gregf_: no need to run. Perl 6 *is* a hybrid of many good ideas for several languages, including Ruby :) 15:14
iH2O O_O wat? no more than alien abduction makes alien-human hybrids
perlpilot (maybe I should say "Perl 6 is a hybrid of many good ideas from several languages including Perl 5" ;-) 15:15
iH2O you mean an "outgrowth of" given that perl6 refines those ideas 15:16
Ven_ It's probably a hybrid of many bad ideas as well. Let's find out :) 15:17
I wonder what kind of mistake I'll do next.
timotimo i don't think we pull in many bad ideas, but there could be a few bad ideas in the way things are composed? 15:18
perlpilot Good ideas are designed, bad ideas are discovered.
iH2O perlpilot, u just said that genius is 95% effort and 5% inspiration 15:19
i disagree
i think thats the other way around
perlpilot I'm pretty sure I didn't just say that :)
timotimo :D 15:20
perlpilot bad ideas aren't know a priori, otherwise they wouldn't exist. (unless that was the goal--to make something "bad")
iH2O war's goal is to make things bad for the other side 15:21
Ven_ timotimo: we'll find out in time :P 15:24
timotimo yup 15:26
TimToady m: my %h; for %h<foo> :v { .say; } 15:52
camelia ( no output )
TimToady why didn't anyone suggest that to Ven_? 15:53
BrokenRobot didn't know that one 16:02
TimToady admits it's not the most obvious feature of Perl 6... 16:03
m: my %h; for %h<foo> :k { .say; }
camelia ( no output )
TimToady works for keys too
TimToady also admits he has no idea which of Ven's aliases to .tell :) 16:05
TimToady wonders if the bot should be smart enough to ignore tails... 16:06
timotimo TimToady: d'oh, i suggested :exists, but that's very obviously wrong 16:08
llfourn didn't know that one either 16:11
TimToady m: my %h; for %h<foo> :v { .say; } 16:20
camelia ( no output )
TimToady vendethiel: ^^^
TimToady assumes Ven_ and vendethiel are still the same person :)
dj_goku The keynote from damian conway was pretty sweet walk through of why perl6 is awesome. :D is damian in here? 16:23
lizmat dj_goku: not very often, but TimToady *is* :-)
yoleaux 08:50Z <gfldex> lizmat: i blogged about 1h to late, you may want to include it in the next weekly gfldex.wordpress.com/2016/07/05/2-2-3/
dj_goku who is TimToady jk :D 16:24
lizmat dj_goku: aka Larry Wall 16:25
dj_goku hehe yeah! 16:25
BrokenRobot The real TimToady: s-media-cache-ak0.pinimg.com/236x/...b9f740.jpg 16:28
dj_goku I have been trying to hack my way through building a few things with NativeCall to get my feet wet there.
perlpilot Damian doesn't do IRC, does he? 16:30
lizmat m: my @a; { temp @a[10] = "foo" }; dd @a # BrokenRobot: more of the same 16:32
camelia rakudo-moar d4ac15: OUTPUT«Array @a = [Any, Any, Any, Any, Any, Any, Any, Any, Any, Any, Any]␤»
BrokenRobot notes that in ticket 16:35
ilmari m: say ²² 16:47
camelia rakudo-moar d4ac15: OUTPUT«4␤»
ilmari uh... 16:48
m: say ²²²
camelia rakudo-moar d4ac15: OUTPUT«4194304␤»
ilmari m: say 2²² == ²²² 16:49
camelia rakudo-moar d4ac15: OUTPUT«True␤»
BrokenRobot There's a ticket for that already I believe
lizmat yeah
BrokenRobot The first superscript digit becomes the base, basically
m: say ²
camelia rakudo-moar d4ac15: OUTPUT«2␤»
ilmari BrokenRobot: yeah
timotimo yeah, because superscripts can only go after you already have a number 16:50
ilmari surely a lone superscript should be a syntax error
m: /5 16:51
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5===␤Regex not terminated.␤at <tmp>:1␤------> 3/57⏏5<EOL>␤Unable to parse regex; couldn't find final '/'␤at <tmp>:1␤------> 3/57⏏5<EOL>␤ expecting any of:␤ infix stopper␤ term␤␤»
ilmari m: * 3
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3*7⏏5 3␤ expecting any of:␤ infix␤ infix stopper␤ statement end␤ statement modifier␤ statement modifier loop␤»
lizmat ilmari: there *is* agreement about that :-)
ilmari BrokenRobot: got a link?
BrokenRobot ilmari: rt.perl.org/Ticket/Display.html?id=126732 16:52
timotimo the thing is, lone unicode characters hanging around in your code just get their number attribute taken and interpreted as the number
BrokenRobot m: "²".uniprop.say
camelia rakudo-moar d4ac15: OUTPUT«No␤»
BrokenRobot Aye
ilmari but why doesn't the whole string of superscript numbers become the number?
why isn't ²² == 22?
BrokenRobot ilmari: because it's a No, not an Nd 16:53
m: say ⑤
camelia rakudo-moar d4ac15: OUTPUT«5␤»
BrokenRobot m: say ⑤⑤
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Bogus postfix␤at <tmp>:1␤------> 3say ⑤7⏏5⑤␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ stat…»
BrokenRobot And superscripts numbers are handled differently.
timotimo aye, they aren't decimal
BrokenRobot So to me this now looks like not a bug. Just a curious artefact of the fact that we can use things like ⑤ that become a number 16:54
m: say ⑤²²
camelia rakudo-moar d4ac15: OUTPUT«2384185791015625␤»
ilmari smells like overgeneralisation to me
BrokenRobot Basically ^ that, except with ² instead of ⑤
ilmari m: "⑤".uniprop.say
camelia rakudo-moar d4ac15: OUTPUT«No␤»
ilmari m: say ⑤⑤
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Bogus postfix␤at <tmp>:1␤------> 3say ⑤7⏏5⑤␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ stat…»
TimToady to me it's just a DIHWIDT 16:55
BrokenRobot And this bugs out because there is no handlings for postfix ⑤ nums
timotimo yup
we can certainly make the parser a bit smarter about this situation 16:56
and give a more helpful error message
like "⑤ cannot be used as if it were decimals"
TimToady but why would anyone write that in the first place, other than fiddling around?
BrokenRobot Indeed.
TimToady I suppose one could get out of sync with term/infix
BrokenRobot "Doctor, It Hurts When I Do This" ? 16:57
TimToady S99: DIHWIDT
BrokenRobot Oh, "stop doing that"? D
ilmari the problem is that it doesn't hurt when you do ³², it's just silently wrong
TimToady which hurts :) 16:58
BrokenRobot Maybe worth putting in docs.perl6.org/language/glossary#DIHWIDT 'cause I went 'huh'?
ilmari: but what would be the "right"?
ilmari BrokenRobot: syntax error
BrokenRobot Alright. 16:59
timotimo mhh, force the user to add parens?
BrokenRobot m: say ³(²)
camelia rakudo-moar d4ac15: OUTPUT«No such method 'CALL-ME' for invocant of type 'Int'␤ in block <unit> at <tmp> line 1␤␤»
BrokenRobot How?
m: say (³)² 17:00
camelia rakudo-moar d4ac15: OUTPUT«9␤»
TimToady notes that you can't get this by accidentally calling something expecting args without args and then powering it up, since listops always require a space 17:01
TimToady m: sub foo ($a) { $a }; foo²² 17:01
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Calling foo() will never work with declared signature ($a)␤at <tmp>:1␤------> 3sub foo ($a) { $a }; 7⏏5foo²²␤»
TimToady m: sub foo (*@a) { @a }; foo²² 17:02
camelia ( no output )
TimToady m: sub foo (*@a) { @a }; say foo²²
camelia rakudo-moar d4ac15: OUTPUT«0␤»
TimToady even there, it's always going to be taken as a ** 22
m: sub foo (*@a) { @a }; say foo ²² 17:03
camelia rakudo-moar d4ac15: OUTPUT«[4]␤»
TimToady I guess if someone writes that...
just not sure it's worth the bloat to catch the corner case of two useful features 17:04
TimToady otoh that's never stopped us before :) 17:07
TimToady especially if we can make a pun on "raw power" or some such in the error message :) 17:10
TimToady Absolute power corrupts at line 42 17:11
Power outrage at line 42 17:12
timotimo "this expression is only big enough for one power" 17:13
"put the other power behind bars"
TimToady "your power base is lacking" 17:14
"all your base are belong to nobody" 17:15
or maybe we should just assume they meant $_²² :D 17:16
timotimo oh, we weren't talking about ^2^3 vs ^23 any more?
TimToady m: say ²² 17:17
camelia rakudo-moar d4ac15: OUTPUT«4␤»
TimToady we're talking about that corner case
timotimo ah
BrokenRobot dalek: help 17:18
dalek: source
mspo $_ or an error makes sense 17:28
hahainternet i still want to argue that $x_i (ie subscript) and $x_1 should be treated the same, but i think that's a lost cause now :) 17:30
timotimo you can make that a slang 17:31
hahainternet oh sure, i just think it's inconsistent and ugly at the moment ;) 17:32
and i am useless at helping with anything that actually matters
BrokenRobot m: my \xₘ = 42; say xₘ 17:34
camelia rakudo-moar d4ac15: OUTPUT«42␤»
hahainternet see that is really beautiful, but there's loads of times i've used X_i1 and X_i2 etc
which is fine without the subscripts 17:35
so either we should disallow variables ending in a numeral, or permit subscripts, IMHO
TimToady m: say i².Num
camelia rakudo-moar d4ac15: OUTPUT«-1␤»
hahainternet but this is enough of a distraction, i will now shut up :)
BrokenRobot m: my \x₁ = 42
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Term definition requires an initializer␤at <tmp>:1␤------> 3my \x7⏏5₁ = 42␤»
TimToady m: say i²².Num 17:36
camelia rakudo-moar d4ac15: OUTPUT«Can not convert -1+4.89982515786259e-15i to Num: imaginary part not zero␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
TimToady m: say i⁸.Num 17:37
camelia rakudo-moar d4ac15: OUTPUT«1␤»
TimToady m: say i¹⁶.Num 17:38
camelia rakudo-moar d4ac15: OUTPUT«1␤»
TimToady m: say i²⁰.Num
camelia rakudo-moar d4ac15: OUTPUT«Can not convert 1-1.22464679914735e-15i to Num: imaginary part not zero␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
BrokenRobot m: say "₁".uniprop, sub ₛᵤᵇₛᶜᵣᵢₚₜₛ_ᶠₒᵣ_ʸₒᵤ {}.name 17:39
camelia rakudo-moar d4ac15: OUTPUT«Noₛᵤᵇₛᶜᵣᵢₚₜₛ_ᶠₒᵣ_ʸₒᵤ␤»
hahainternet BrokenRobot: ;-D
psch ETOOMANYBOXES 17:40
BrokenRobot psch: i.imgur.com/fe5KD04.png 17:41
Oh, I guess that's not the best, since I'm missing some chars in the terminal too :D
timotimo no uberi for you?
psch looks like what's boxes for me is just straight up missing in the screenshot? :)
m: .uniname.say for "ₛₛₚₜₛ".comb
camelia rakudo-moar d4ac15: OUTPUT«LATIN SUBSCRIPT SMALL LETTER S␤LATIN SUBSCRIPT SMALL LETTER S␤LATIN SUBSCRIPT SMALL LETTER P␤LATIN SUBSCRIPT SMALL LETTER T␤LATIN SUBSCRIPT SMALL LETTER S␤» 17:42
timotimo SSPTS?
psch that's the boxes in order
[]ub[]cri[][][]
timotimo ah
BrokenRobot psch: i.imgur.com/P1RI5Gk.png
hahainternet also i.imgur.com/90a0ujb.png 17:43
psch would making it "subscripts_for_bcfy" have made an auto-pun?
hahainternet BrokenRobot: looks like you need to install https everywhere :)
psch or is that again just self-referential
i'm really bad at the difference
BrokenRobot hahainternet: why?
hahainternet BrokenRobot: that's a very large question 17:44
ultimately because it is better for your safety and security :)
BrokenRobot hahainternet: how?
I'm over SSH tunnel ATM
hahainternet BrokenRobot: it preferentially selects https as opposed to http versions of sites
SSH tunnel protects you only from your ISP, not anything upstream
proper SSL provides PFS 17:45
BrokenRobot Yeah, but I don't care about anything upstream
What.. they'll watch my IRC logs! :)
hahainternet https everywhere doesn't work with irc anyway :D
BrokenRobot Or my images... That i'm pretty sure I totally public anyway :)
hahainternet or your session cookies? 17:46
mitm is a genuine risk
but i take your point
BrokenRobot All for the low-low price of getting broken websites on occasion :)
hahainternet i find it amusing when i find a broken site thanks to https
BrokenRobot Do you got HTTPS Everywhere?
hahainternet the EFF one yes
it's so funny though seeing myfancytechcompany.biz whos site requires javascript and is thoroughly broken over https 17:47
BrokenRobot Like rakudo.org ? :P
hahainternet haha is it? i haven't checked
BrokenRobot I guess a giant red warning about untrusted things when I visit 17:48
s/guess/get/; ~_~
hahainternet heh yeah invalid CN 17:49
hahainternet This server could not prove that it is rakudo.org; its security certificate is from host.pmichaud.com 17:49
let's encrypt is free now, no excuses for this :)
vendethiel TimToady: we either never were, or still are :-). also, that sounds awesome
BrokenRobot let's encrypt is not free.
The cost is the time spent learning how to use it and how to set it up. 17:50
and setting it up
hahainternet somewhat, but it's SSL
it's not that different
the req script is a little odd, but it lets them automate things which is understandable
vendethiel the docs say:
> If you don't want to skip nonexistent elements, use the negated form:
(docs*) should it clarify that it's the default? 17:51
TimToady note the double negative there
vendethiel isn't :!v the default?
TimToady yes, I suppose that could be made more explicit 17:52
vendethiel ah, okay. I thought I was still very confused %).
m: my %h; %h<foo>.push:3; %h<foo>.push:4; %h<foo>.push:5; for %h<foo>:v { .say; } # no container, so no need to flatten 17:53
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Confused␤at <tmp>:1␤------> 3my %h; %h<foo>.push:7⏏053; %h<foo>.push:4; %h<foo>.push:5; for %␤ expecting any of:␤ colon pair␤»
TimToady those semantics are the default, but not implemented by actually using :!v, just by leaving out :v
vendethiel m: my %h; %h<foo>.push: 3; %h<foo>.push: 4; %h<foo>.push: 5; for %h<foo>:v { .say; } # no container, so no need to flatten 17:53
camelia rakudo-moar d4ac15: OUTPUT«3␤4␤5␤»
vendethiel TimToady++
timotimo it's important to be able to use :!v because you could be using something like :v($shouldskip) 17:54
and you don't want to use interpolation if you don't haev to
vendethiel TimToady: I gather they are, but.. oh timotimo++ clarified
timotimo for performance reasons mostly, but also because it's a little bit wordy
vendethiel he's too fast!
TimToady mostly, the default semantics of subscripting are driven by the idea of not throwing away positional information that might be important 17:55
TimToady same reason we distinguish Nil from Empty these days 17:55
vendethiel that seems fair :). 17:56
I just wonder where (else) I could document it, so that the next person in my situation doesn't go with for @(a // []) ... :P
perlpilot vendethiel++ 17:58
DrForr m: unit regex foo; 18:02
camelia rakudo-moar d4ac15: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Malformed regex␤at <tmp>:1␤------> 3unit regex foo7⏏5;␤»
DrForr Hrm, that must've been fixed recently.
DrForr Well, guess I get to test my futureproofing this time 'round. 18:04
buharin hi 18:33
I am looking for Perl friends
perlpilot buharin: you are in the right place :)
buharin perlpilot, ya but I want some friend to do things together 18:34
perlpilot buharin: you're looking to pair-program with someone? On what? 18:35
DrForr Well, what are you interested in?
timotimo he's said he does perl5, so ... maybe not the right place after all?
buharin :( 18:36
buharin I like this channel more 18:36
more good people here
DrForr buharin: Again, what are you interested in? 18:37
buharin Container Engine
DrForr There's already Docker and a few variants on that, is that what you mean? 18:39
buharin DrForr, no I want to write my own 18:40
DrForr I'm sure someone out there is interested in reinventing the wheel, but given how much traction Docker, Chef and Puppet have in the market it'd be an uphill battle. Not saying nobody is interested, just that it's hard going. 18:42
perlpilot DrForr++ well said. I was trying to think of a good way to say just that :) 18:43
buharin oh you said
DrForr Do you have an angle that nobody's considered? 18:44
buharin Chef and Puppet
I didn't know these
moritz that's a bit of a category error
Chef and Puppet are configuration management systems
buharin I don't like Docker
moritz not a container engine, like Docker, LXC or Rocket
buharin overtime when I do something with it 18:45
DrForr Yeah, those aren't container systems, I couldn't think of other systems.
moritz or BSD Jails
buharin it is overcomplicated
moritz or Solaris zones
perlpilot buharin: still ... you're in a saturated problem-space.
buharin: If you had a hook that appeals to someone, you might find some help.
buharin yeah 18:46
DrForr buharin: Well, here's a notion for you. Get your docker stuff down to the point where it's jus "ho-hum, up-arrow, rerun _that_ command, then up-arrow, rerun _that_ command... Oh, wait, this can be a shell script. Put into shell, rewrite in Perl 6, ???, Profit!" 18:48
That's what I've had to do to maintain sanity while my junior teammates break everything around me. 18:49
perlpilot DrForr: you've been rewriting everything in Perl 6?!? awesome! :) 18:50
buharin hey please add this tryperl.pl/index.html
on the main perl site
as help for newbies
DrForr Well, that's not going to help much for perl 6 users. Maybe ask over ---> there in #perl? 18:51
perlpilot buharin: 1) that's running a perl that's kinda old (5.010) and 2) what DrForr said.
buharin DrForr, I should definitely change my job ;P I had always a problems like "go do this" and when I stack more than hour then they said ok don't do that it takes too long 18:52
today I was trying to run builedbot slave in docker
docker ps docker image ..... and get bored while trying to constrain it for work 18:53
DrForr Damnit. again, I want a macro here. Must resist urge to yakshave... 18:54
timotimo perlpilot: "kinda old" LOL
DrForr Is there a decent way to say "foo() and return $something" where $something is the return value from foo()? I've got a list of conditions I want to try... I suppose I could just take advantage of shortcut. Trying that... 18:57
psch m: sub f($a) { return $_ with $a; return "something undef-y" }; say f "foo"; say f Nil 19:01
camelia rakudo-moar d4ac15: OUTPUT«foo␤something undef-y␤»
psch DrForr: ^^^ that's what i'd call the degenerate case you mentioned 19:02
s/call/use for/
DrForr: with specific conditions it probably is clearly just to if/elsif/else
DrForr Yah. Not quite what I'm shooting for but it's got the germ of an idea. 19:03
And yea, it's structured like an if-then-else, there's just too much code for the conditional for my taste is all.
psch s/clearly/clearer/ # damnit keyboard /o\
DrForr Oh. That's how to solve it. o/ Lightning strikes o/ 19:04
timotimo why "return $_ with $a" if you could just ".return with $a"?
except maybe performance, but now that return is a proper control exception, that should be just fine 19:05
psch yeah, that's a bit neater even
BrokenRobot buharin: RE perl friends. Have you tried a local Mongers group? www.pm.org/groups/poland.html 19:18
dalek c: f201414 | (Jan-Olof Hendig)++ | doc/Type/Cool.pod6:
Added docs for Cool.fmt
buharin there no perl group in my city 19:19
:/
DrForr Try to start one? 19:19
buharin sure I can try 19:20
have you any experience what can I talk about on the first meeting? 19:21
DrForr It's not *my* experience that matters, it's *yours*. If it's your first time, then just make sure to talk about something you know and love about perl. The rest will flow from there. 19:22
buharin Perl love 19:23
BrokenRobot Or try some "general programming" type of group. 19:28
dogbert17 This list from the docs.perl6.org/type/Cool can't be entirely correct can it? 19:37
The following built-in types inherit from Cool: Array Backtrace Bag Baggy Bool Complex Cool Duration Enumeration Map FatRat Hash Instant Int List Match Nil Num Numeric Range Real Seq Set Stash Str Stringy
timotimo that makes sense 19:38
psch looks correct from here
i mean, a few of those aren't exactly below Any
dogbert17 So Backtrace inherits from Cool
psch m: say Backtrace ~~ Cool
camelia rakudo-moar b8bc1b: OUTPUT«False␤»
psch m: say Backtrace.^mor
camelia rakudo-moar b8bc1b: OUTPUT«Method 'mor' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in block <unit> at <tmp> line 1␤␤»
psch m: say Backtrace.^mro
camelia rakudo-moar b8bc1b: OUTPUT«((Backtrace) (Any) (Mu))␤»
psch i overlooked that, apparently :< 19:39
dogbert17 If I want to fix the list is ^mro they way to check the types?
m: say Bag.^mro
camelia rakudo-moar b8bc1b: OUTPUT«((Bag) (Any) (Mu))␤»
timotimo that's one way at least
dogbert17 So at the very least, Bag and Backtrace should go -- 19:40
timotimo sounds good
dogbert17 I'm on it :)
psch dogbert17++ 19:42
dogbert17 m: say Baggy.^mro # can a role inherit from Cool?
camelia rakudo-moar b8bc1b: OUTPUT«Method 'mro' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤ in block <unit> at <tmp> line 1␤␤»
psch m: say Baggy.new.^mro
camelia rakudo-moar b8bc1b: OUTPUT«((Baggy) (Any) (Mu))␤»
dogbert17 psch++ 19:43
psch gotta pun first :)
dalek c: b633fa9 | (Jan-Olof Hendig)++ | doc/Type/Cool.pod6:
Fixed list of types inheriting from Cool. timotimo++ psch++
19:50
hankache good evening #perl6 20:02
dalek c: 5a63611 | (Jan-Olof Hendig)++ | doc/Type/List.pod6:
Added docs for List.fmt
20:12
timotimo hello hankache 20:17
hankache hi timotimo
ZoffixMobile TIL RT is actually MUCH better on mobile! 20:18
This may be the mobile URL that works on desktops: rt.perl.org/m/
well... almost... the only part that doesn't suck on normal version--viewing ticket content--is backwards.... literally: m.imgur.com/1XE5MvR And it's hard to tell but it seems some content is missing too. 20:21
bbkr hi. I've found very weird bug when loading LWP: file Zonk.pm has following content "use LWP::Simple; unit class Zonk;". while loading this module from command line "perl6 -I. -e 'use Zonk;'" I get "Expected MAST::Frame, but didn't get one" error. I have no idea if this shiuld be reported to rakudo, LWP::Simple or IO::Socket::SSL 20:27
geekosaur backwards actually makes sense in a mobile context where you often care more about the most recent entries 20:27
so they should be at the top
rather than forcing you to scroll 20:28
ZoffixMobile That assumes you already read the content recently and remember what it's about. 20:35
harmil Was going to use this as an example of complex list manipulation for a co-worker. Any thoughts on simplifying? my @pi = (2, 4...*).map: {($^i %% 4 ?? -1 !! 1) * 4/([*] (^3).map: *+$^i)}; say [+] @pi[^1000] 20:48
harmil rakudo: say [+] ((2, 4...*).map: {($^i %% 4 ?? -1 !! 1) * 4/([*] (^3).map: *+$^i)})[^1000] 20:49
camelia rakudo-moar 027dd3: OUTPUT«0.141592653340542␤»
harmil rakudo: say 3 + [+] ((2, 4...*).map: {($^i %% 4 ?? -1 !! 1) * 4/([*] (^3).map: *+$^i)})[^1000] 20:50
camelia rakudo-moar 027dd3: OUTPUT«3.14159265334054␤»
harmil That's better, I suppose. 20:50
nine bbkr: we've seen the same from JSON::RPC today. As that module also uses LWP::Simple, I guess it's the same bug. Definitely something wrong in rakudo. 20:59
harmil rakudo: say 3 + [+] ((2, 4...*).map: {($^i % 4 - 1) * 4/([*] (^3).map: *+$^i)})[^1000] 21:00
camelia rakudo-moar 027dd3: OUTPUT«3.14159265334054␤»
psch rakudo: say 3 + [+] ((2, 4...*).map: {($_ % 4 - 1) * 4/([*] (^3).map: * + $_)})[^1000] # all the simplification i can think of 21:01
camelia rakudo-moar 027dd3: OUTPUT«3.14159265334054␤»
psch just $_ instead of a placeholder
any further probably needs more math than i know 21:02
well, at least more math than i'm willing or able to do right now :P
but it does look like the formulaic part of that is pretty well established, so i don't think simplifying could actually help 21:03
harmil psch: I just hit Wikipedia :) 21:04
psch harmil: right, that's kinda my point :)
harmil Fair
harmil I'm dealing with folks who aren't thrilled with Perl-5isms, so perhaps: 21:05
rakudo: say 3 + [+] ((2, 4...*).map: -> $i {($i % 4 - 1) * 4/($i*($i+1)*($i+2))})[^1000]
camelia rakudo-moar 027dd3: OUTPUT«3.14159265334054␤»
bbkr nine: this issue is caused by "try require". in this case in LWP::Simple there is "try require IO::Socket::SSL; ". if I load it in my Zonk.pm file explicitly earlier - "use IO::Socket::SSL; use LWP::Simple" then everything works
bbkr nine: so that is not an issue inside JSON::RPC. And I'm not sure if I should hack it by adding "use IO::Socket::SSL" because that would add dependency from outside Star 21:07
sortiz \o #perl6 21:17
harmil sortiz: o/ 21:21
AlexDaniel bisect: say chr 9999999999999999999999 21:45
bisectable AlexDaniel: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel bisect: good=2015.10 say chr 9999999999999999999999
bisectable AlexDaniel: exit code is 1 on both starting points, bisecting by using the output
AlexDaniel: (2015-12-23) github.com/rakudo/rakudo/commit/7f30326
AlexDaniel bisect: try { say chr 9999999999999999999999; CATCH { default { exit 1 if $_ ~~ /Cannot\sunbox/; exit 0 } } } 21:48
bisectable AlexDaniel: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel bisect: good=2015.10 try { say chr 9999999999999999999999; CATCH { default { exit 1 if $_ ~~ /Cannot\sunbox/; exit 0 } } }
bisectable AlexDaniel: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel meh :P
bisect: good=2015.10 bad=7f30326^ try { say chr 9999999999999999999999; CATCH { default { exit 1 if $_ ~~ /Cannot\sunbox/; exit 0 } } } 21:49
bisectable AlexDaniel: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel bisect: good=2015.10 bad=7f30326^ say chr 9999999999999999999999
bisectable AlexDaniel: on both starting points the exit code is 1 and the output is identical as well
AlexDaniel ok whatever, enough spam :)
sammers hi all, is $?MODULE from inside a module (unit module...) supposed to return its name? I am getting "Variable '$?MODULE' is not declared" 22:27
$?PACKAGE is an empty string
MasterDuke m: module A { say $?PACKAGE; } 22:31
camelia rakudo-moar 41b685: OUTPUT«(A)␤»
geekosaur m: unit module A; say $?PACKAGE; 22:34
camelia rakudo-moar 41b685: OUTPUT«(A)␤»
geekosaur m: unit module A; say $?MODULE;
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$?MODULE' is not declared␤at <tmp>:1␤------> 3unit module A; say 7⏏5$?MODULE;␤»
sammers ok, thanks, when I do "unit module A; say $?PACKAGE;" I get an empty string. 22:37
and $?MODULE is not declared 22:38
2016.06
empty string for "module A { say $?PACKAGE; }" as well
dalek c: 571cd63 | (Daniel Perrett)++ | doc/Language/typesystem.pod6:
Index enumerations in typesystem.pod per gh #87
22:40
c: 5f95e71 | (Daniel Perrett)++ | doc/Language/testing.pod6:
Index flunk per gh #677
c: 6a91d1b | (Daniel Perrett)++ | doc/Type/Callable.pod6:
Index o operator on callable per gh #512
c: d1340a0 | (Daniel Perrett)++ | doc/Language/variables.pod6:
Index slangs and compile-time variables, fixing gh #556
ugexe perl6 -e 'say $*VM.version; module A { say $?PACKAGE; }' 22:45
v2016.06
(A)
sammers ok, so "unit module A; say $?PACKAGE;" works from the perl6 repl, or perl6 -e "unit module A; say $?PACKAGE;", but not from an actual module 22:59
same for $?MODULE, it throws Variable '$?MODULE' is not declared
when I try installing the module (panda --force install .) 23:00
ugexe hmm, seems some recent list/map changes have caused a regression causing Base64 to return the correct decoded result save for characters at index 1 and 2 only 23:16
psch m: package Foo { our sub f { say $?PACKAGE } }; Foo::f 23:20
camelia rakudo-moar 41b685: OUTPUT«(Foo)␤»
psch sammers: that *might* be somehow precomp related. nine++ recently pushed a fix, if it still happens on current HEAD, can you open an RT ticket?
psch sammers: alternatively, you could first check if it stops happening with 'no precompilation;'. if so, it definitely needs a ticket 23:21
sammers: well, not "first", that check should also happen on current nom HEAD
sammers psch, thanks. I am testing now from a fresh 2016.06 install. $?PACKAGE now works, but $?MODULE explodes.
psch m: module Foo { sub f is export { say $?PACKAGE } }; import Foo; say $?PACKAGE 23:22
camelia rakudo-moar 41b685: OUTPUT«(GLOBAL)␤»
psch m: module Foo { sub f is export { say $?PACKAGE } }; import Foo; f
camelia rakudo-moar 41b685: OUTPUT«(Foo)␤»
psch sammers: 2016.06 won't have the fix, nine pushed it less than 4 hours ago 23:22
sammers ah
pl
ok
gotcha, I will test now
psch m: module Foo { sub f is export { say $?MODULE } }; import Foo; f 23:23
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Variable '$?MODULE' is not declared␤at <tmp>:1␤------> 3module Foo { sub f is export { say 7⏏5$?MODULE } }; import Foo; f␤»
psch ah, that's already it
sortiz sammers, I can't found $?MODULE in rakudo src, so I suspect is NYI
psch the variable itself doesn't happen 23:23
sortiz++ # what i'd have said next
sammers yeah
psch considering we have it doc'd already that definitely needs a ticket
sammers ok, I can create a ticket
psch ++sammers
sammers psch, first time creating a ticket, do I include [Bug] in the subject? 23:38
Xliff m: my $a = new Blob<00 00 00 01>; say $a.Int
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax␤at <tmp>:1␤------> 3my $a = new Blob7⏏5<00 00 00 01>; say $a.Int␤»
Xliff m: my $a = Blob.new(<00 00 00 01>); say $a.Int
camelia rakudo-moar 41b685: OUTPUT«4␤»
Xliff m: my $a = Blob.new(<00 00 01 01>); say $a.Int 23:39
camelia rakudo-moar 41b685: OUTPUT«4␤»
Xliff m: my $a = Blob.new(<00 01 01 01>); say $a.Int
camelia rakudo-moar 41b685: OUTPUT«4␤»
Xliff m: use NativeCall; my $a = Blob.new(<00 00 00 01>); my int32 $b := $a; say $b
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot bind to natively typed variable '$b'; use assignment instead␤at <tmp>:1␤------> 3ob.new(<00 00 00 01>); my int32 $b := $a7⏏5; say $b␤»
Xliff m: use NativeCall; my $a = Blob.new(<00 00 00 01>); my int32 $b = $a; say $b
camelia rakudo-moar 41b685: OUTPUT«This representation (VMArray) cannot unbox to a native int (for type Blob)␤ in block <unit> at <tmp> line 1␤␤»
Xliff m: use NativeCall; my $a = CArray[int32]Blob.new(<00 00 00 01>); my int32 $b = $a; say $b 23:40
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3use NativeCall; my $a = CArray[int32]7⏏5Blob.new(<00 00 00 01>); my int32 $b = $␤ expecting any of:␤ infix␤ infix stopper␤ pos…»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<00 00 00 01>)); say $a; 23:41
camelia rakudo-moar 41b685: OUTPUT«16777216␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<00 00 00 00>)); say $a;
camelia rakudo-moar 41b685: OUTPUT«0␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<01 00 00 00>)); say $a;
camelia rakudo-moar 41b685: OUTPUT«1␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<01 01 00 00>)); say $a;
camelia rakudo-moar 41b685: OUTPUT«257␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<01 00 01 00>)); say $a;
camelia rakudo-moar 41b685: OUTPUT«65537␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<01 10 00 00>)); say $a; 23:42
camelia rakudo-moar 41b685: OUTPUT«2561␤»
Xliff m: use NativeCall; my $a = nativecast(int32, Blob.new(<11 00 00 00>)); say $a;
camelia rakudo-moar 41b685: OUTPUT«11␤»
wamba m: say sort 1 => 2, 2=> 3, 12=>1 23:44
camelia rakudo-moar 41b685: OUTPUT«(1 => 2 2 => 3 12 => 1)␤»
wamba say sort (1 => 2, 2=> 3, 12=>1).Hash
m: say sort (1 => 2, 2=> 3, 12=>1).Hash
camelia rakudo-moar 41b685: OUTPUT«(1 => 2 12 => 1 2 => 3)␤»
wamba say sort (1 => 2, 2=> 3, 12=>1).Bag
m: say sort (1 => 2, 2=> 3, 12=>1).Bag
camelia rakudo-moar 41b685: OUTPUT«(1 => 2 2 => 3 12 => 1)␤»
TimToady m: say sort :{1 => 2, 2=> 3, 12=>1} 23:45
camelia rakudo-moar 41b685: OUTPUT«(1 => 2 2 => 3 12 => 1)␤»
TimToady ^^^ object hash composer
though as you demonstrated, Bag works okay if your values are all integers :) 23:46
but that shows how coercers are different from composers
m: say bag(1 => 2, 2=> 3, 12=>1).perl 23:47
camelia rakudo-moar 41b685: OUTPUT«(1 => 2=>1,12 => 1=>1,2 => 3=>1).Bag␤»
ugexe jnthn: the multi-dispatch caching still causes regression on Base64. the initial commit made its failure random, but the latest fix causes it to always fail by losing the 2nd and 3rd character of a decoded string as well as segfault
TimToady m: say Bag(1 => 2, 2=> 3, 12=>1).perl
camelia rakudo-moar 41b685: OUTPUT«(12=>1,1=>2,2=>3).Bag␤»
wamba TimToady, thank you. 23:49
Xliff Why is it that method new() only takes named arguments? 23:51
I'm getting the following when I use "callwith" in method new(): Default constructor for 'Winamp::ML::Index' only takes named arguments 23:52
Xliff Trying to define method new as a multi. 23:52
ugexe because the default constructor doesnt have named positionals declared? 23:53
Xliff So method new must use named parameters? 23:53
ugexe well positionals
TimToady only named args work well with polymorphism
Xliff *sigh*
TimToady especially under MI
Xliff MI? 23:54
Multi Inheritance?
TimToady multiple inheritance, which we support, vaguely
ugexe if it doesnt have a method new($xxx), then its arguments are the names of its attributes
Xliff OK. No MI
TimToady but we can't guarantee that any base class will not participate in future MI
Xliff ugexe: "multi method new(Str $fn)" and "multi method new(IO::Handle $fh)"
Str new method calls IO::Handle new method once file handle is opened. 23:55
TimToady you can have special purpose positional constructors, but they must translate to named if you wish to fall back on the underlying apparatus
Xliff Str method new uses callwith() to move things along
ugexe m: class Foo { multi method new($x) { say 1 }; multi method new ($x, $y) { say 2 }; }; Foo.new(1); Foo.new(1,2)
camelia rakudo-moar 41b685: OUTPUT«1␤2␤»
Xliff Hrm.... 23:56
I'm using single parameters with different types.
ugexe i dont think thats your problem
Xliff So... named params it is.
Well, you aren't trying to use callwith() in your example. 23:57
m: class Foo { multi method new($x) { say 1 }; multi method new ($x, $y) { say 2 }; }; Foo.new(1); Foo.new(1,2)
camelia rakudo-moar 41b685: OUTPUT«1␤2␤»
Xliff ahh... but to assign attributes, I need a BUILD, don't I? 23:58
:S
ugexe m: class Foo { proto method new(|) {*}; multi method new($x) { nextwith($x,1) }; multi method new ($x, $y) { say 2 }; }; Foo.new(1); Foo.new(1,2)
camelia rakudo-moar 41b685: OUTPUT«2␤»
ugexe m: class Foo { proto method new(|) {*}; multi method new($x) { samewithwith($x,1) }; multi method new ($x, $y) { say 2 }; }; Foo.new(1); Foo.new(1,2) 23:59
camelia rakudo-moar 41b685: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ samewithwith used at line 1␤␤»
ugexe m: class Foo { proto method new(|) {*}; multi method new($x) { samewith($x,1) }; multi method new ($x, $y) { say 2 }; }; Foo.new(1); Foo.new(1,2)
camelia rakudo-moar 41b685: OUTPUT«2␤2␤»