»ö« 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.
drbaffico can anyone please tell me where to find a proper help file for referencing syntax for perl6? 01:20
preferrablyon the internet
something that is easy to print and format on double page duplexed print? 01:21
all i can find is the garbage file layout on docs.perl6.org, it is inappropriate for printing and reference 01:22
i need a file like the .chm file for python
thank you for any who respond. :-) ---> dr. mw baffico
drbaffico ralph, are you aware of more appropriate perl6 documentation for advanced syntax sutiable for printing on the web? 01:24
skids wonders if anyone has updated the "perl6 periodic table" poster? 01:32
www.ozonehouse.com/mark/periodic/ is probably too old to promulgate. 01:33
AlexDaniel skids: just redo it from scratch? If done in .svg, every operator can link to docs 01:34
skids Well, I meant for drbaffico's immediate need. 01:36
AlexDaniel “addenoid” :DD
raiph docs.perl6.org/perl6.xhtml shows an error 01:37
drbaffico: ignoring the error, is the big page I just linked ^^ of any use to you? 01:39
drbaffico ii'll check it out right now, thanks
drbaffico ahh,thanks guys, found just what i was looking for. i appreciate it very much!!! 01:41
lucs drbaffico: Is it that page that raiph showed, or something else?
mst [Coke]: basically, it isn't relocatable currently, and I worked around that 01:42
[Coke]: I owe the perl6 community a proper release of that stuff though, should try and do that soon
drbaffico it was the page that ralph showed, with a link i did not see before, my error, my apologies, it is just what i was looking for. thanks again, guys
lucs Cool 01:43
drbaffico the 'perodic' table is interesting,ifa bit quaint, but interesting, i'll look at that as well in further detail,, thanks for that
ok, thank you guys, i'm going to log off for a while and have some dinner. will be back later to chat, and look forward to contributing to the community. thanks for the -> help! ;-) and i hope you all have a nice evening/day/etc... 01:50
raiph Do others get "rendering of the page up to the first error" when viewing the single doc page (link above)? 02:17
AlexDaniel raiph: for me it does not render at all 02:21
MasterDuke XML Parsing Error: not well-formed Location: docs.perl6.org/perl6.xhtml Line Number 10323, Column 43: 02:22
i think it's pointing out the error as here `<p>Perl 6 makes considerable use of the &171; and &187; characters.</p>`, at the 1 of the 171 02:24
raiph I'm using Chrome (Version 47.0.2526.73); I've got "error on line 10323 at column 43: xmlParseEntityRef: no name" 02:25
MasterDuke FF 52.0 02:28
dwarring shouldn't that be: Perl 6 makes considerable use of the &#171; and &#187; characters 02:30
?
Perl 6 makes considerable use of the « and » characters. 02:31
source github.com/perl6/doc/blob/master/d....pod6#L398 02:40
raiph dwarring: github.com/perl6/doc/blob/master/d....pod6#L385 etc. as well? 02:42
Geth doc/dwarring-patch-1: 431d94df46 | (David Warring)++ | doc/Language/pod.pod6
Fix rendering problem

See irclog.perlgeek.de/perl6/2017-03-21#i_14298152
02:46
doc: dwarring++ created pull request #1255:
Fix rendering problem
dwarring should probably go
I've created PR github.com/perl6/doc/pull/1255
for what I think it should be (not a doco expert)
pytuger why is eval('say("hey");'); in perl5 just made all caps EVAL("say('hey');"); 02:51
in perl6
A subjective question since not technically related, just seems confusing. I've learned of some things that were in all caps such as " my $var = 10; $var.WHAT.say; " but haven't noticed a pattern, was wondering if there was one. 02:53
MasterDuke i think it was meant to stand out a bit more, to make it obvious something dangerous/hacky/etc is going on 02:55
a bunch of the other all cap functions, e.g., WHAT, HOW, WHICH are mostly meant for internal use, and probably shouldn't be seen in user code 02:57
BenGoldberg m: say test p5=> 42; 03:23
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
test used at line 1
travis-ci Doc build passed. David Warring 'Fix rendering problem 03:23
travis-ci.org/perl6/doc/builds/213254619 github.com/perl6/doc/commit/431d94df46be
BenGoldberg It's a comic operator because it doesn't exist :P 03:24
skids \o/ Finally, I have working (but still very ugly) code to fix diamond role composition. 03:34
kaare_ lizmat: How come the p6 weekly isn't in the blog section of perl6.org/ anymore? 06:37
moritz probably some RSS feed messup 07:45
they are also missing from pl6anet.org/ :( 07:46
wdna good morning 07:48
moritz good morning wdna 07:51
nine lizmat-- # stealing half an hour of my time with the weekly 08:07
lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ lizmat++ # giving me 30 minutes of fun with the weekly
jast oh noes, karma spam 08:08
lizmat clickbaits p6weekly.wordpress.com/2017/03/20/...e-a-hyper/ , to make things worse :-) 08:29
lizmat .tell stmuk_ is there a reason why the P6W is no longer syndicated to pl6anet.org ? 08:35
yoleaux lizmat: I'll pass your message to stmuk_.
dakkar TIL: the invocant can be rw gist.github.com/dakkar/fa26e2b816f...89e891fcd0 09:48
IOninja Yup. That's how Str.subst-mutate does it 10:00
IOninja pytuger: eval is Perl 5 is frequent. In Perl 6 is rare. We have `try` replacing most of Perl 5's eval usage and. Leaving just the dangerous stuff for EVAL, and so it's in caps, to stand out. 10:03
.ask gfldex why does Podtobig page generate perl6.xhtml? We use HTML, not XML. The bogus extension is causing parse errors: irclog.perlgeek.de/perl6/2017-03-21#i_14298152 10:06
yoleaux IOninja: I'll pass your message to gfldex.
IOninja .tell gfldex here's what it looks like in Firefox: i.imgur.com/0v67PIa.png The idiocy of using XHTML instead of HTML was common because people were too stupid to know how to kick IE6 out of quirksmode with a proper HTML doctype and it was never a right thing to use. 10:23
yoleaux IOninja: I'll pass your message to gfldex.
Geth doc: 5bd81fb834 | (Zoffix Znet)++ | doc/Language/pod.pod6
Work-around bug that incorrectly interprets E<> entities

  - Closes #1255
  - Fixes rendering issue in perl6.xhtml (though it's still needs to be changed away from xhtml)
10:24
IOninja s/Work-around//;
No point in using an E<> there.
hobbs or, people used xhtml because it was nice actually being able to process HTML without having to have an utterly insane massive parser, at least if you knew its provenance :) 10:28
IOninja Nope, daily someone would come to #css with XHTML doctype and when asked why it was 'cause IE6 10:30
hobbs So clearly I don't exist. Thanks. 10:31
masak I think I've heard the "being able to process" argument before. it's an interesting one. 10:34
but to me the "browser just choked" argument is fairly overriding -- YMMV
IOninja .ask gfldex does Pod::To::Big page do any processing? Pod::To::HTML outputs E<171> as &#171; but on perl6.xhtml it ended up as &171; (not the missing #). 10:36
yoleaux IOninja: I'll pass your message to gfldex.
timotimo nine: which part of the weekly was the one that gave you so much fun? 10:42
moritz fwiw the IRC logs use content negotiation, and emit strict xml/xhtml when the browser wants it 10:44
it has helped me find a few places where the (x)html escaping wasn't working 10:45
IOninja And HTML validator wouldn't helped? 10:46
masak does anyone know of a good *offline* HTML validator? all HTML validators I've found are some online service somewhere... 10:47
moritz masak: iirc you can download the one that w3.org uses 10:48
masak aye, I did find that one
it's written in Perl 5
nine masak: though if you need to validate HTML 5, you'll also need the one from validator.nu (written in Java). The w3c-validator will act as frontend then. 11:12
masak nine: ah, and it's on Github: github.com/validator/validator 11:44
Geth modules.perl6.org: 025f677ec7 | (Zoffix Znet)++ | lib/ModulesPerl6/DbBuilder/Dist/Source.pm
Log a warning when `tags` META key isn't an array
12:21
Geth modules.perl6.org: 9ecae4736c | (Zoffix Znet)++ | lib/ModulesPerl6/DbBuilder/Dist/Source.pm
Fix typo
12:27
Geth modules.perl6.org: 4469e6a1e4 | (Zoffix Znet)++ | 2 files
[REBUILD] uniq tags of a dist

Since the mangler may normalize multiple listed tags to the same tag.
Fixes the last 7 UNIQUE constraint db errors.
12:30
Geth modules.perl6.org: bc576c5364 | (Zoffix Znet)++ | lib/ModulesPerl6/Controller/Root.pm
Fix undef uc warning in controller
12:32
IOninja "Since Perl 6 is a bit new, this LWP::Simple does both get and post requests." wat 12:43
That's LWP::Simple's readme
timotimo wants an "only"?
IOninja $ zef install LWP:Simple 12:44
Enabled fetching backends [git path wget curl] don't understand LWP:Simple
You may need to configure one of the following backends, or install its underlying software - [pswebrequest] 12:45
hm wtf... I do have wget git and curl :/
lizmat LWP::Simple ?
IOninja Yeah
lizmat not LWP:Simple
: vs :: ?
IOninja lizmat++
And I kept hitting "up" key and reusing the same typo even after upgrading zef :) 12:46
timotimo it could point out that LWP was being interpreted as a protocol name rather than part of the module name
lizmat yeah,. been there, done that :-)
timotimo like "can't grab module Simple with protocol LWP. only can handle http, https, git, ssh, ..."?
IOninja .tell gfldex Never mind. Found and fixed the issue in github.com/perl6/perl6-pod-to-bigp...ca5ffcfee9 (P.S.: I didn't mean you were an idiot for using XHTML in my previous msg; but I'd still recommend using HTML5 doctype in Pod2BigPage) 12:56
yoleaux IOninja: I'll pass your message to gfldex.
[Coke] yawns. 13:06
hord is there an easy way to see if a module is loaded? like checking %INC in p5?
IOninja hord: you can use if ::('Module::Name') ~~ Failure { say "not loaded" } 90% of the time 13:07
hord: the place where it won't work is if someone did `require Module::Name` earlier. ^ that won't be a failure, even if the module failed to load
hord yeah, i'm doing require 13:08
IOninja hord: and I guess the proper-proper way would be to use the CompUnit API
hord: oh, you're just optionally loading something?
hord: here's info on how to optionally load stuff: rakudo.org/2017/03/18/lexical-requi...rade-info/ 13:09
hord yes. i need to optionally load a module and then check to see if it's loaded later when creating a closure.
IOninja try require ::('Foo'); … if ::('Foo') !~~ Failure { say "module is loaded" } 13:09
note that that's lexically scoped. 13:10
IOninja timotimo: jnthn the very last example in this doc looks like kinda iffy. Is it sane to use state/runtime require with subsets? docs.perl6.org/language/typesystem#subset 13:13
timotimo if it is, it's only in a non-multithreaded program 13:14
the state there is just to cache it so it won't have to do the lookup later i guess? 13:15
hord wow, i forgot i actually have booleans now
IOninja :)
hord this is working: my $mob = %wurm<mob> // ::('Wvrm::mob') !~~ Failure; 13:16
IOninja uuhh
IOninja Well, it looks really weird :) Are you sure it's working? 13:16
$mob is just an indicator that the stuff got loaded? 13:17
hord not really
it's an indicator from the caller that a particular semantics are to be used
hord it assumes the module was loaded earlier and would actually be used to turn off default behavior 13:17
IOninja Ah
hord but now my closure isn't working so onward! 13:18
ugexe CUR has a .loaded method that lists what it has loaded
ugexe but youll have to iterate a list two or so levels deep 13:19
$*REPOs.repo-chain.map(*.loaded) or some such
Geth doc: 86b4228999 | (Zoffix Znet)++ | doc/Language/modules.pod6
Update `require` section

  - require is now lexical, so toss the routine-loaded module examples
  - Make it clear require is lexical, including the symbol that's been required
  - Include examples of correct checking for whether a module got loaded
13:30
IOninja .ask jnthn would you check the very last example on this page? docs.perl6.org/language/typesystem#subset I vaguelly recall you saying subsets can be evaluated at compile time, so if relying on runtime stuff all bets are off: docs.perl6.org/language/typesystem#subset 13:35
yoleaux IOninja: I'll pass your message to jnthn.
SmokeMachine IOninja: do you think "Fix #131009\ntriangle reduce with listinfix wasn't working" is a good enough commit msg?
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=131009
IOninja SmokeMachine: it's terrible 13:36
SmokeMachine :( 13:36
Im not good at that...
IOninja SmokeMachine: here: perl6.fail/release/stats click on "Commits" tab. Imagine you're filling out the ChangeLog. You need to tell the users of Rakudo what changed. Then go through the list and write down the changes. You'll learn quick which commits suck :) 13:38
*commit messages
ugexe timotimo: zef doesn't know what protocols its fetching backends support - it just asks any backends you list in your config "do you understand this string?". Otherwise it was hard to support syntax like `zef -v install github:ugexe:zef:0.1.5` (the urn-like format, briefly mentioned in s22) and handle C:/
timotimo ah
ugexe re why it can't guess the error at protocol level
timotimo makes sense
each fetching backend needs to get levenshtein implemented for it :P 13:39
IOninja SmokeMachine: first, don't put the ticket in the title. Some stuff only shows the title (e.g. github.com/rakudo/rakudo/commits/nom ), so just the ticket number doesn't say what changed. As for the message itself, well, most of the stuff is fixing something that wasn't working. What does "wasn't working" mean? 13:40
SmokeMachine: I also like to write down what was broken and how I fixed it, so that 3 years from now people don't look at the commit wondering if some line change or changed behaviour was intentional or not. 13:41
SmokeMachine IOninja: "Fix triangle reduction with listinfix ops\nThe triangle reduction was appending the data inside of a array and applying the op on that. It was changed to push the data and apply the op on that array with each item deconted" better? 13:45
IOninja SmokeMachine: yeah, that's great. And mention the ticket number at the end
SmokeMachine IOninja: ok! thanks!
SmokeMachine IOninja: github.com/FCO/rakudo/commit/16f95...ef0ca5dfc9 13:48
IOninja Great. 13:49
IOninja &
hord How would I construct a class so that it acts like a class and a hash?
e.g. $foo<bar> ~ $foo.bar() 13:50
timotimo implement the Associative role i guess?
raschipi hord: It needs to implement the assossiative role 13:51
ugexe timotimo: searching meta data is centralized in another backend. but for levenshtein on the uri... doesnt perl6 have a built in exposed still? StrDistance or something...
timotimo that's something different 13:52
that's what we use to provide the integer return value to tr///
hord unit class Wvrm::mob does Associative; # do i need something more here? i keep getting "Associative indexing implementation missing from type Wvrm::mob" 13:55
ilmari hord: you need to implement the methods required by Associative 13:56
hord where is this documented? i come with nothing on google.
IOninja hord: docs.perl6.org/language/subscripts 13:57
timotimo: StrDistance was levenshtein distance last I looked :/
timotimo oh?
ilmari hord: specifically docs.perl6.org/language/subscripts...bscripting
IOninja timotimo: oh, looking at source now, maybe I just *assumed* it was
timotimo you're right 13:58
which one was the tr-related one :\
huh, it is both 13:59
[Coke] m: unit class Wvrm::mob does Associative; # works here
camelia ( no output )
IOninja timotimo: it does use StrDistance, looks like: github.com/rakudo/rakudo/blob/nom/....nqp#L7866
hord would it be easier to add methods to a Hash? 14:00
timotimo it's very easy to apply a role to a hash object if you mean that
hord this looks like a nightmare to delegate to attributes
timotimo do you know about "handles"?
hord i want a hash object that acts like objects just like in perl 5
so i can use it as a hash or call methods on it 14:01
timotimo but you can already call methods on a hash
hord so do i need to sub-class Hash to make another object?
IOninja hord: you can give it a go.
timotimo do you want a method ".foo()" to grab the "foo" key out of the hash?
hord i have an API that can use either objects or hashes (perl 5)
i'm converting it to perl 6 so i need to retain that behavior
IOninja Heh 14:02
timotimo i'm not sure what "can use" means in this context
do you need an object that does both, or can you just differentiate on whether it's a hash or an object?
hord in perl 5 i just get a variable (scalar)
IOninja It's a differnt beast in perl 5, since objects use hash (or other type) as underlying structure :)
hord i don't want to have to differentiate
in one context i want to ALWAYS assume it is a hash 14:03
IOninja hord: don't you have to implement like 3 methods for it to work just fine with Associative role?
hord yes, but i have to delegate to the attributes which doesn't seem nice
IOninja hord: well, sounds like subclassing Hash or mixing in a role into it makes the most sense.
hord at least as how i understand it
IOninja isn't sure what delegation there is to do 14:04
timotimo docs.perl6.org/language/typesystem...it-handles
did we implement "handles Role" yet?
IOninja m: dd Hash ~~ Iterable 14:05
camelia Bool::True
IOninja m: say class :: does Associative {} ~~ Iterable
camelia False
IOninja You'd need more than just Associative to emulate a hash, so subclassing/mixinging roles makes sense
hord: IIRC we didn't yet sort out the whole subclassing business for userspace, so you may need to implement your own `new` if you're adding attributes 14:07
hord i think i'm thinking inside out
what i'm doing is weird because it's a direct port of perl 5
IOninja m: class BetterHash is Hash { has $.food = 'Tuna'; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b"; dd $h<a>; dd $h; dd $h.food 14:08
camelia Str <element> = "b"
BetterHash $h = ${:a("b")}
Any
IOninja Yeah, didn't init it 14:09
IOninja m: class BetterHash is Hash { has $.food = 'Tuna'; method new { self.Mu::new: |%_ }; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b"; dd $h<a>; dd $h; dd $h.food 14:09
camelia Too many positionals passed; expected 1 argument but got 2
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
hord well now i get a different error. progress?
IOninja eh, right 14:10
skids yawns and tries to get some motivation up for $DAYJOB 14:11
skids gist.github.com/skids/18fa6fb1de77...6e82e9fcc2 # needs a lot of review. 14:11
IOninja m: class BetterHash is Hash { has $.food; submethod TWEAK (:$!food = 'Tuna'){}; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b"; dd $h<a>; dd $h; dd $h.food 14:12
camelia Str <element> = "b"
BetterHash $h = ${:a("b")}
Any
IOninja crap right
IOninja m: class { method x (|) { |%_ } }.x 14:17
camelia Type check failed in binding to 'x'; expected Any but got Mu (Mu)
in method x at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja lol?
IOninja m: class BetterHash is Hash { has $.food; method new (|c) { self.bless(|%_).STORE(|c); }; submethod TWEAK (:$!food = 'Tuna'){}; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b"; dd $h<a>; dd $h; dd $h.food 14:18
camelia Cannot call method 'FLATTENABLE_LIST' on a null object
in method new at <tmp> line 1
in block <unit> at <tmp> line 1
IOninja same cause, I believe
m: class { method x (*%_, |c) { |%_ } }.x
camelia ( no output )
IOninja m: class BetterHash is Hash { has $.food; method new (*%_, |c) { self.bless(|%_).STORE(|%_, |c); }; submethod TWEAK (:$!food = 'Tuna'){}; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b"; dd $h<a>; dd $h; dd $h.food 14:19
camelia Str <element> = "b"
BetterHash $h = ${:a("b")}
"Tuna"
IOninja Yey \o/
m: class BetterHash is Hash { has $.food; method new (*%_, |c) { self.bless(|%_).STORE(|%_, |c); }; submethod TWEAK (:$!food = 'Tuna'){}; method meows { "Ketteh {"♥" x self.keys} $!food" } }; my $h = BetterHash.new: "a" => "b", food => 'Whitefish'; dd $h<a>; dd $h; dd $h.food 14:20
camelia Str <element> = "b"
BetterHash $h = ${:a("b")}
"Whitefish"
IOninja hord: well, something like that perhaps will work. You don't need the `method new` stuff unless you need to set public attributes
hord let me try it. i think i may need the new() stuff. i can make objects but they are empty right now. 14:22
raschipi There's no lists of lists anymore 14:25
IOninja What are you talking about?
skids: man, I hate "face" even more than "interface". Reminds me of Sleeping Dogs game. 14:28
skids Yeah, well, bikeshedding welcome... it's more or less a s/// to change it.
IOninja m: role A { method x {say "B"} }; role B { method x {say "B"} }; class :: does A does B { }.x.say 14:29
camelia 5===SORRY!5=== Error while compiling <tmp>
Method 'x' must be resolved by class <anon|57747248> because it exists in multiple roles (B, A)
at <tmp>:1
IOninja skids: what's the ticket to Ovid's stuff? I only recall the one about multi candidates
skids Yeah I think he was laboring under some confusion about that part. Hold on. 14:29
skids justrakudoit.wordpress.com/2015/03...heritance/ is colomon's part and links back to IRC. 14:32
github.com/perl6/specs/issues/80 Ovid's issue. 14:33
IOninja "To my mind they are completely different things, and if someone re-orders role “inheritance” without considering the consequences, they deserve what they get." 14:34
IOninja nods in agreement to that statemnt
skids Well, in this solution, they only "deserve what they get" if they do it despite seeing an "is face". 14:35
The root of the problem is the method overrides, not really the ordering.
IOninja Well, I know nothing about this stuff, so ignore my comments :) 14:37
skids Heh. I'm grateful for any attention even from you :-)
jnthn fwiw, I think we'd speculated a "claim" scope declarator rather than a trait in the past 14:43
yoleaux 13:35Z <IOninja> jnthn: would you check the very last example on this page? docs.perl6.org/language/typesystem#subset I vaguelly recall you saying subsets can be evaluated at compile time, so if relying on runtime stuff all bets are off: docs.perl6.org/language/typesystem#subset
jnthn I think I even had a branch where I played with that a bit, but if it still exists it'll be ancient by now
jnthn Yes, it's still here, as claim-prototype 14:44
IOninja `claim method foo` does sound much nicer than `method foo is face` 14:46
jnthn I think TimToady++ came up with the name :)
skids That was to be applied in a different place and with a different sense. And it was pointed out that it only "kicked the can down the road" 14:47
This attribute is applied where someone might try to modify code and expect that modifcatio to promulgate, and is there when it won't necessarily promulgate, as a warning.
jnthn IOninja: I don't think we can just blindly go checking any subset at compile time; I suspect only those that we can infer as being pure would be candidates 14:48
skids (regardless of the name)
IOninja jnthn: thanks.
jnthn However, that use of state is dodgy there
If you try to use the subset type from multiple threads you could get surpious failures
jnthn So it's risky and clouds the example with a premature optimization 14:49
So I'd get rid of that
just where ::('...')
hord $self.STORE(env => $meal<env>); # too few positionals? expected 2 but got 1?
hord that doesn't even make any sense to me 14:49
Geth doc: 59f692564b | (Zoffix Znet)++ | doc/Language/typesystem.pod6
Toss risky `state`

  irclog.perlgeek.de/perl6/2017-03-21#i_14300672
jnthn hord: The invocant ($self) is the first parameter 14:50
IOninja hord: that probably expects a Pair? Try $self.STORE("env" => $meal<env>)
hord jnthn: then it should have received 3
IOninja hord: only in Perl 5. 14:51
hord: you're sending it a named argument `env`. So it complains it's missing a positional
hord so what does => do now?
IOninja Whereas if you quote the key, as "env" => $meal<env>, you're sending it 1 positional argument: a Pair
hord since it apparently doesn't auto-quote
IOninja hord: it does, if you use it with Hashes or Maps. But in arguments list, an unquoted ones are passed as named arguments 14:52
hord: docs.perl6.org/language/traps#Named_Parameters 14:53
hord there's way too much to learn to do simple ports
IOninja buggable: eco Inline::Perl5 14:54
buggable IOninja, Inline::Perl5 'Use Perl 5 code in a Perl 6 program': github.com/niner/Inline-Perl5
IOninja hord: ^ there's always that
hord: my personal opinion is making a naive "port" will produce garbage. Because languages are so different.
hord a naive port of easy software also exposes a lot of weaknesses 14:55
IOninja You're basically porting a Hash with a few hacks to make it work like a class to a proper OOP system
hord: not really, you're just trying to use a different language under the paradigms of Perl 5. Hardly something I'd call a weakness. 14:56
IOninja m: say so "0" 14:56
camelia True
IOninja ^ that statement is all I need to show just how different the languages are.
Thinking you can just tweak a few sigils and get working code is a bit delusional. 14:57
hord IOninja: that's not what i think
IOninja (and there are "converters" that try to do just that and they suck)
hord: OK :)
hord but perl 6 has become quite the stranger to perl 5 that it once was
IOninja hord: most definitely. It's closer to Ruby than to Perl 5
hord so i guess for this sub-class i have both attributes and keys... but i want them to be the same 15:00
that's what i don't get
skids jnthn: anyway, inverting the sense would not be hard and then "claim" would instead mean "I don't want this method overridden by my users" rather than "This is my eggo now." I don't know if "claim role A" works as well as the method variety, though. 15:01
IOninja hord: right, and in Perl 5 that class is just a blessed hash innit? And you can't have attributes that AREN'T keys (without some sort of clever hack), etc. In Perl 6 you can. 15:02
skids That would require less people to mod code, but more building awareness/expectations for role users that want purity, telling them they have to use "claim" to get purity warnings. 15:03
hord IOninja: perl 5 doesn't have "attributes" so you can do whatever you want
IOninja hord: so maybe it'd make sense for you to not have attributes, but to just use the keys as if they were attributes?
hord personally i'm tired of "attributes"
IOninja So don't use 'em :)
hord i just want data slots with some code around them
DrForr You can bless things that aren't hash references, at least in perl 5.
hord yeah, i think i just want methods 15:04
IOninja DrForr: I know that, but I'm talking specifically about hord's class
DrForr Ah.
hord wiring this stuff up just doesn't have the same feel to it
IOninja m: class BetterHash is Hash { method FALLBACK ($name, |) { self.{$name} }; method meows { "Ketteh {"♥" x self.keys} {self.food}" } }; my $h = BetterHash.new: "a" => "b", "food" => 'Whitefish'; dd $h<a>; dd $h; dd $h.food 15:05
camelia Str <element> = "b"
BetterHash $h = ${:a("b"), :food("Whitefish")}
"Whitefish"
El_Che Looking at atom at work for perl 6: I see 3 perl6 packages. language-perl6 (by samcv iirc), language-perl6fe (by madcapjake) and atom-perl6-editor-tools (by azawawi). Do we know if one of those is obsolete of incompatible with the rest?
(with docs for new users in mind) 15:06
IOninja El_Che: language-perl6fe is
language-perl6 is its replacement
huggable: atom ide
huggable IOninja, github.com/perl6/Atom-as-a-Perl6-IDE
El_Che that's what I though
jnthn skids: Yeah, I need to read what you wrote more carefully and think about it some more, but I'm tied up with $other-job stuff today
El_Che is the fe version abandoned? and if so, can we remove it from atom
most people will install it because it has more installs (chicken-egg) 15:07
hord what is ($name, |) ? the , | confuses.
skids jnthn: thanks, same here, really should be focusing on 'teh jawb'
IOninja El_Che: it is in my opinion. language-perl6 is a hostile fork of it, because author was unresponsive... language-perl6
lizmat it captures whatever extra parameters you sent
IOninja hord: a Capture 15:08
huggable: Capture
huggable IOninja, Argument list suitable for passing to a Signature: docs.perl6.org/type/Capture
IOninja hord: in this case, it's anonymous and makes the method ignore all the extra args.
lizmat what IOninja said :-)
El_Che and looking at the doc, is atom.io/packages/atom-perl6-editor-tools the only prviding sytnax check 15:10
I'll enable language-perl and editor tools to see if they work together
IOninja El_Che: more detailed expl: github.com/github/linguist/pull/33...-267050328 15:10
El_Che IOninja: thx 15:11
hord is FALLBACK special? it doesn't seem to be getting called.
wait... i'm dumb 15:12
IOninja hord: it's like Perl 5's AUTOLOAD (or whatever it was): docs.perl6.org/language/typesystem...8method%29
hord it helps if you remove the attributes with the same names. DUH.
IOninja heh
hord ok... this thing actually works now
but i'm still confused about bless() 15:13
hord method new(Hash $meal={}) { my $self = self.bless(); ... } 15:13
El_Che IOninja: you're a man of keeping details. Good summary of the events
IOninja hord: method new(Hash $meal={}) { my $self = self.bless(|$meal); ... }
hord how can i just pass $meal to bless() and have $self copy all the attributes or just bless the hash
|$meal explodes the hash container? 15:14
IOninja hord: I thought you didn't want any attributes?
hord: it slips the keys/values into bless; keys are names of attributes and values are their values
hord not attributes... keys 15:14
see... i don't think about attributes.. they are just data buckets to me
probably too much javascript 15:15
IOninja hord: well, then you don't really need method new() at all, eh? The default Hash's one does just fine doesn't it?
hord honestly, that's what i want... javascript with perl 5 syntax
IOninja heh
hord IOninja: i'm actually adding a couple of things so having new is required.
IOninja hord: adding things like what? 15:16
hord a few more keys to the hash
IOninja You don't need new for that
1 sec
m: class BH is Hash {}; dd BH.new: "a" => "b", :42c;
camelia {:a("b")}
IOninja Well, maybe you do, if you don't want ^ that to happen.
SmokeMachine whats the op ^^? 15:17
hord here's what i'm doing... this is a plack framework. i want requests to either be objects or hashes based on performance constraints. 15:17
IOninja m: class BH is Hash { method new (*@_, *%_) { nextwith |@_, |%_.pairs } }; dd BH.new: "a" => "b", :42c; 15:18
camelia {:a("b"), :c(42)}
hord so if you decide you want objects, more classes are loaded and each request is wrapped in an object with even more objects embedded inside.
so that's why i want this hash/obj thing
IOninja m: class BH is Hash { method new (*@_, *%_) { nextwith |@_, |%_.pairs }; submethod TWEAK { self.<MEOWS!> = "♥" } }; dd BH.new: "a" => "b", :42c;
camelia {:a("b"), :c(42)}
IOninja really?
Oh right the Hash.new messes with build bleh
IOninja m: class BH is Hash { method new (*@_, *%_) { my \self = callwith |@_, |%_.pairs; self.<MEOWS!> = "♥"; self } }; dd BH.new: "a" => "b", :42c; 15:19
camelia ===SORRY!===
Lexical 'self' already declared
IOninja m: class BH is Hash { method new (*@_, *%_) { my \SELF = callwith |@_, |%_.pairs; SELF.<MEOWS!> = "♥"; SELF } }; dd BH.new: "a" => "b", :42c;
camelia {"MEOWS!" => "♥", :a("b"), :c(42)}
IOninja hord: like that?
hord: normally you don't need your own method new to do some initializtion. There's submethod TWEAK you could use (like my first example above). But the reason it didn't work here is because Hash.new is a bit antisocial ATM and doesn't go through the full build sequence. 15:20
IOninja & 15:21
jnthn hord: I'm not sure which you're assuming is cheaper: hashes or objects?
hord jnthn: in perl 5, hashes.
i don't actually care about perl 6, yet 15:22
jnthn OK. In Perl 6, objects.
hord this is a direct port to learn
then i will optimize to learn the perl 6 way
i know i am making this harder on myself. that's the point.
if i wanted easy, i'd already be done :)
jnthn :-)
Yeah, Perl 6 just considers hashes and objects as very different things 15:23
hord yeah. very, very different.
jnthn Both at a language level and an implementation level
hord i guess i should have expected that
SmokeMachine m: my &op = &infix:<X>; say [\&op](<1 2 3>, <10 11 12>) 15:38
camelia Potential difficulties:
To pass an array, hash or sub to a function in Perl 6, just pass it as is.
For other uses of Perl 5's ref operator consider binding with ::= instead.
Parenthesize as \(...) if you intended a capture of a single v…
SmokeMachine m: my &op = &infix:<X>; say [\ &op](<1 2 3>, <10 11 12>)
camelia Invocant requires a type object of type List, but an object instance was passed. Did you forget a 'multi'?
in block <unit> at <tmp> line 1
SmokeMachine ??? 15:39
m: my &op = &infix:<X>; say [\\&op](<1 2 3>, <10 11 12>)
camelia Potential difficulties:
To pass an array, hash or sub to a function in Perl 6, just pass it as is.
For other uses of Perl 5's ref operator consider binding with ::= instead.
Parenthesize as \(...) if you intended a capture of a single v…
jnthn I think it needs to be [\[&op]]
To be recognized as a reduce meta-op
SmokeMachine m: my &op = &infix:<X>; say [\[&op]](<1 2 3>, <10 11 12>) 15:40
camelia ((1 2 3) ((1 10) (1 11) (1 12) (2 10) (2 11) (2 12) (3 10) (3 11) (3 12)))
SmokeMachine jnthn: thanks!
IOninja eyes IO::CatPath/::CatHandle with skepticism 15:54
lizmat IOninja: conceptually, or implementationally ? 15:55
IOninja If it weren't for IO::ArgFiles, I'd definitely say module space... but then, if we're doing IO::ArgFiles thing, may as well generalize it?
lizmat: conceptually.
lizmat that was my idea, yes
because you don't really want people to be messing with @*ARGS just to get the functionality 15:56
IOninja OK. Makes sense.
TheovdH Hi, when debugging I get "Unhandled exception: ctxlexpad needs an MVMContext". Rak 2017.1 on Ubuntu. Suggestions? 15:57
IOninja I guess what turns me off is all these "not-here" methods and basically all write methods that we can't really do anything sane for: github.com/rakudo/rakudo/commit/a2...4aa83dL154
So it's not really `is IO::Handle` but different enough to not be. 15:58
lizmat unless we abstract stuff from IO::Handle into a role as well
IOninja Alright.
lizmat fwiw, IO::Handle.open is a major performance bottleneck for scripts handling many files 15:59
IOninja TheovdH: under normal circumstances you should never see an error like that, so you're hitting a bug or have some really weird code. Do you have some sample of code you could pastebin for us to test?
SmokeMachine m: say [\X]((1, 2, 3), (4, 5, 6), (7, 8, 9)) 16:00
camelia (((1 2 3)) ((1 2 3 4 5 6)) ((1 2 3 4 5 6 7 8 9)))
SmokeMachine m: say [\[&infix:<X>]]((1, 2, 3), (4, 5, 6), (7, 8, 9)) 16:01
camelia This Seq has already been iterated, and its values consumed
(you might solve this by adding .cache on usages of the Seq, or
by assigning the Seq into an array)
in block <unit> at <tmp> line 1
SmokeMachine whats the difference?
m: say [\X]((1, 2, 3), (4, 5, 6), (7, 8, 9)).map(*.cache).tail
camelia ((1 2 3 4 5 6 7 8 9))
SmokeMachine m: say [\X]((1, 2, 3), (4, 5, 6), (7, 8, 9)).map(*.cache).tail.perl
camelia ((1, 2, 3, 4, 5, 6, 7, 8, 9),)
SmokeMachine m: say [\X]((1, 2, 3), (4, 5, 6), (7, 8, 9)).tail.perl 16:02
camelia Seq.new-consumed()
TheovdH IOninja. Its a lot of code. I do not see a simple way of slicing it up. I will look at pastebin. 16:03
SmokeMachine IOninja: i think Ill PR now and finish the tests later... is that ok?
IOninja SmokeMachine: I guess... but how do you know your thing is working if you ain't got tests? O:)
TheovdH: FWIW, you can run perl6 --ll-exception switch and it should output more info about where the error happens. 16:04
SmokeMachine IOninja: I have some tests, but the tests Id like...
IOninja (unless it *does* include the file/line number)
m44st4 Hi ! 16:10
IOninja Ahoy, mst!
mst's uncle :)
m44st4 Quick question, to xor two buffers, should i use ~^ ?
IOninja Probably +^, since ~ is string xor, innit? 16:11
~^
by "buffers" you mean Buf's ?
m44st4 yep
hord are sub{}s Callable?
IOninja hord: yes 16:12
m: say sub {} ~~ Callable
camelia True
TheovdH IOninja: Thanks, now I get new info: Strange text after block (missing semicolon or comma?)
at SETTING::src/core/Exception.pm:63 (/home/theo/rakudo-star-2017.01/install/share/perl6/runtime/CORE.setting.moarvm:throw)
IOninja TheovdH: what's the full output? The lines after the last one you pasted
hord sub protos save so much typing
IOninja hord: so don't type them...
hord: oh, never mind; misrtead 16:13
hord no, i really like them. perl 5 protos were garbage.
TheovdH IOninja: it goes on and on, but here are the following lines.
from src/Perl6/World.nqp:4065 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/World.moarvm:throw)
from src/Perl6/Grammar.nqp:247 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:typed_panic)
from src/Perl6/Grammar.nqp:1279 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:eat_terminator)
from src/Perl6/Grammar.nqp:1180 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:statementlist)
from gen/moar/perl6-debug.nqp:392 (/home/theo/rakudo-star-2017.01/install/share/perl6/runtime/perl6-debug.moarvm:)
from gen/moar/perl6-debug.nqp:390 (/home/theo/rakudo-star-2017.01/install/share/perl6/runtime/perl6-debug.moarvm:statementlist)
from src/Perl6/Grammar.nqp:1353 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:blockoid)
from gen/moar/perl6-debug.nqp:413 (/home/theo/rakudo-star-2017.01/install/share/perl6/runtime/perl6-debug.moarvm:blockoid)
from src/Perl6/Grammar.nqp:1316 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:pblock)
from src/Perl6/Grammar.nqp:1282 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:xblock)
from <unknown>:1 (/home/theo/rakudo-star-2017.01/install/share/nqp/lib/Perl6/Grammar.moarvm:statement_control:sym<given>)
IOninja Shiet
lizmat TheovdH: you probably want to put that in a gist :-)
hord multi methods mean i don't have to re-wrap scalars into hashes or arrays 16:14
IOninja TheovdH: in the future, please pastebin large amounts of stuff into a pastebin: gist.github.com/
TheovdH IOninja: lizmat: sorry about that.
IOninja TheovdH: so the `ctxlexpad needs an` error is gone? Or does it disappear only if you use --ll-exception? 16:15
m44st4 Ok so ~^ xoring is working
IOninja OK
m44st4 but +^ isn't 16:16
good to know
IOninja m44st4: yeah, I was wrong.
Bufs are Stringy and have ~ bitwise ops: github.com/rakudo/rakudo/blob/nom/...#L704-L787
TheovdH IOninja: I'm not sure what you mean. It is not my code that gives this message. It is only if I use perl6-debug-m. 16:17
IOninja TheovdH: how can I reproduce this on my computer?
TheovdH IOninja: I will try and pastebin my stuff. It is a lot and I have to embed some modules. Need some time for that. 16:18
IOninja OK, maybe someone else can help you out; as I'm leaving in a sec. FWIW, these are the only ctxlexpads in Rakudo's source, so your issue is something about module loading: gist.github.com/zoffixznet/7dfd75f...8d19f3b6a4 16:21
And perl6-debug-m is busted on HEAD: ./perl6-debug-m -e 'say "hi"'
Illegal option --nqp-lib
IOninja &
mst IOninja: awaylog spammer! 16:22
tokomer 16:24
IOninja mst: Twitter-relay spammer: i.imgur.com/j98Ad6a.png 16:27
It's not my fault your uncle visited our channel :P
^_^ 16:28
TheovdH IOninja: gist.github.com/anonymous/71b09284...a3842957b7 16:29
IOninja TheovdH: well, it dies, but with "No such method 'name' for invocant of type 'Str'" for me 16:34
TheovdH IOninja: yes. I know. My problem is not with this code, but with debugging it. I want to see what happened before it got there. 16:37
IOninja Ah
hm, my perl6-debug-m is busted: "Cannot find method 'setlang' on object of type Perl6::HookGrammar" 16:38
IOninja builds a 2017.01
Never used it, though. No idea what it does :) 16:39
TheovdH IOninja: I had that before. I was recommended to not install from rakudobrew :0)
IOninja heh
cale2 u: wave 16:44
unicodable6 cale2, U+219D RIGHTWARDS WAVE ARROW [So] (↝)
cale2, U+219C LEFTWARDS WAVE ARROW [So] (↜)
cale2, 36 characters in total: gist.github.com/ced13f8aa9980c79b1...7912ee2725
hord wow... i think most of my port is now done and it seems to actually work.
IOninja Hm. 16:47
IOninja TheovdH: well, I've built 2017.01 rakudo and its perl6-debug-m is still busted with "Illegal option --nqp-lib" :/ wonder what Rakudo Star does to it that it actually works. 16:48
Oh fixed that, but now need Could not find Debugger::UI::CommandLine 16:49
So what does the debug do?
guess I can find out if I install that module eh :P 16:50
hord: what module are you porting?
lizmat grrr I hate it when stuff breaks when trying to move things to a role :-(
hord IOninja: it's my own Plack web framework that i wrote the other day
lizmat Type check failed in binding; expected NQPMu but got IterationBuffer # WTF ?
IOninja hord: ah 16:51
TheovdH: success. I managed to reproduce your issue on 2017.01 :) 16:53
IOninja tries HEAD
TheovdH IOninja: great. this "Unhandled exception: ctxlexpad needs an MVMContext" has reared its ugly head before.
hord has $.foo; # this gives me $obj.foo, but $.foo is immutable? 16:54
IOninja And HEAD gives me "Cannot find method 'setlang' on object of type Perl6::HookGrammar" ehehe
hord: from outside, yeah, immutable. You can still mutate it inside with $!foo = "meows" 16:55
[Coke] m: class hord {has $.foo}; my $a = hord.new; $a.foo = 3; say $a.foo
camelia Cannot modify an immutable Any
in block <unit> at <tmp> line 1
[Coke] That did not do what I meant. oops. 16:56
IOninja Note that it's just an immmutable container; it doesn't magically make the stuff it contains immutable
IOninja m: class hord {has $.foo = [<a b c>]}; my $a = hord.new; $a.foo[1] = 3; say $a.foo 16:57
camelia [a 3 c]
IOninja Wow perl6-debug-m is cool!
I had no idea we had this 16:58
jnthn o.O :)
jnthn The setlang thingy sounds like a regression during the slang work 16:58
IOninja Yeah, and the fix should be fairly simple. 16:58
hord hrm... that means i would have to mutate someone else's class... 16:59
jnthn hord: I don't think anybody pointed it out yet: `has $.foo is rw` creates an l-value accessor
hord Crust::Response isn't like Plack::Response in that respect, i guess
jnthn IOninja: ah, nice :)
hord jnthn: yeah, those aren't on the attributes and this is someone else's class 17:00
i will have to find another solution
IOninja Well, I only think it is :) I don't know what it is. I guess I can grep the logs and find out....
[Coke] hord: you shouldn't be mucking in the other classes internals. 17:01
jnthn Ah, OK
:)
hord [Coke]: it's probably something that I should send a patch for. Crust::Response doesn't seem to be useful unless you can mutate it. 17:02
and for now it seems you can only set attributes at .new() time
IOninja TheovdH: FWIW, your issue points to this line: github.com/jnthn/rakudo-debugger/b...ne.pm#L736
IOninja debugs it some more
[Coke] hord: sounds good!
IOninja m: class Foo { has $.a = 42; has $.b = 72 }; dd Foo.new: |.Capture, :90b with Foo.new 17:04
camelia Foo.new(a => 42, b => 90)
IOninja hord: FWIW something like ^ that can be done to create a new class while modifying its attributes; doesn't keep the state of private stuff tho
I mean... create a new object and fill it up with values of another object's public attreibutes 17:05
hord IOninja: i'll be honest, that's too confusing
i don't have a clue what |., Capture or :90b are supposed to mean
even if i can see what they do
IOninja m: class Foo { has $.a = 42; has $.b = 72 }; my $old = Foo.new; my $new = Foo.new: |$old.Capture, b => 90; dd $new 17:06
camelia Foo $new = Foo.new(a => 42, b => 90)
IOninja How about now?
The | is just a Slip
huggable: Slip
huggable IOninja, A kind of List that automatically flattens into an outer container: docs.perl6.org/type/Slip
hord it's too much syntax to take in
IOninja OK :)
And :90b is just another way to write b => 90
huggable: colonpairs
huggable IOninja, All the shortcuts of colonpairs: twitter.com/zoffix/status/839807414211854337
hord what i need is a perl 6 => perl 5 idiom sheet 17:07
when i can see equivalent p5 code, i just know what it does
IOninja Not aware of that...
perigrin the truely fun stuff doesn't have an equivalent in p5
afaict
IOninja hord: There's 4 5-to-6 tutorials, but they're not really about whole idioms: docs.perl6.org/language.html
hord the guides i've seen are either confusing or too light (this was a while ago) 17:08
that's why i felt like just writing a bunch of code was the way to go
IOninja It probably is :)
hord but i can only take so much syntax in a day... and perl 6 adds an absolute TON
TheovdH IOninja: thanks. Looking at the debugger code I still cannot guess how to move forward. 17:09
IOninja hord: FWIW, there's a lot of consistency in syntax, so there's not SO much to take in. The biggest thing to grasp I think is the lack of automatic list flattening in Perl 6. 17:10
TheovdH: well, are you trying to find the problem in your code or to fix the debugger? :)
hord IOninja: it's more that I have 20+ years of perl 5 along with C, JavaScript and many other things
IOninja: the syntax is easy, but i have to put it into context with every other thing i've learned 17:11
i'm poly-paradigm, poly-glot
IOninja TheovdH: the reason I ask is... trying to debug the debugger on 2017.01 may be wasted effort. My plan for that would be to de-bitrot it on HEAD and keep the snippet you gave me to see if it's still has that issue and then debug that. 17:13
TheovdH IOninja: OK. I am fine with that. 17:14
dwarring hord: there's an old advent post that covers some Perl 5 -> 6 idoms 17:15
perl6advent.wordpress.com/2011/12/...ic-perl-6/
that's all I can think of
IOninja 2011... I wonder how much of that Perl 6 is no longer valid.
hord dwarring: i was thinking something more along the lines of new concepts/syntax in Perl 6 being re-vamped in other languages 17:16
dwarring yeah probably too old
hord from the top-down rather than the bottom up
show why things are different and how
IOninja TheovdH: next best thing: use trace; 17:20
TheovdH: prints out the lines as they're executed. 17:21
TheovdH: and I added the debugger's bug to my TODO list; unless I forget, should be fixed in 2017.04 Rakudo Star.
IOninja &
jnthn bbl 17:22
TheovdH IOninja: great and great. I was not aware of trace. It is going to help. Looking forward to 2017.04! 17:23
TheovdH IOninja: btw I will let you know if I find a simpler stretch of code that has the same effect on the debugger 17:30
El_Che IOninja: you sneaky b*tard, releasing a new rakudo. Building pkgs now. 17:30
hord can i create a class that is private to another class? e.g. Foo::bar objects can only be created by Foo?
[Coke] define the second class inside the first. 17:32
hord unit class Foo; ... class Foo::bar; #? that's what i'm trying.
[Coke] m: class A { class B {} ; method frob { return B.new } } ; A.frob.WHAT.say; 17:33
camelia (B)
[Coke] m: class A { class B {} ; method frob { return B.new } } ; A.frob.WHAT.say; B.new.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
B used at line 1
hord namespacing is going to kill me in p6, too 17:34
[Coke] (you could go so far as to define B inside the frob method there, if that's how restricted you needed it 17:35
El_Che I need a new laptop. Travis finished faster than my local build
hord [Coke]: yes... yes that might actually be what i need. 17:36
i mean it's kind of disgusting to have a type that is only defined in the scope of a single sub
but i like it. i like it a lot.
[Coke] hord: we do it in core, even: github.com/rakudo/rakudo/blob/3fb0...ine.pm#L63 17:37
hord yep, that's basically what i need
this means you can now create actionable message types 17:38
i can pass you a data structure and you give me an empire built from it
disgusting
lizmat :-) 17:58
lizmat wonders what hord would think of class :: does Iterator { ... }.new(...) :-)
TimToady or anon class Sekrit does Iterator { ... }.new(...) :-) 18:04
lizmat m: class A { method a(--> self) {} }; dd A.a # sometimes I wish this would work 18:08
camelia 5===SORRY!5=== Error while compiling <tmp>
Type 'self' is not declared
at <tmp>:1
------> 3class A { method a(--> self7⏏5) {} }; dd A.a # sometimes I wish this w
IOninja m: class A { method a(\z: --> z) {} }; 18:09
camelia ===SORRY!===
No compile-time value for z
IOninja booo 18:10
m: class A { method a(\z: --> ::?CLASS) {z} }.new.a.say 18:11
camelia A.new
TimToady --> is in the category of --> $result
which is NYI
er, --> self is in...
IOninja El_Che: not sneaky. It's third Saturday of the month, every month. 18:12
El_Che: also:
NeuralAnomaly: status
NeuralAnomaly IOninja, [✘] Next release will be in 3 weeks and 3 days. Since last release, there are 5 new still-open tickets (5 unreviewed and 0 blockers) and 17 unreviewed commits. See perl6.fail/release/stats for details
TimToady is anyone else not seeing the latest P6W in their pl6anet feed? 18:16
IOninja TimToady: everyone. Something's broken with pl6anet
m: class { method x { anon class Sekrit { constant x = anon role AlsoSekrit { method z { Sekrit.new but AlsoSekrit } }; also does x } } {} } }.new.x.z
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared names:
AlsoSekrit used at line 1
Sekrit used at line 1
IOninja booo
IOninja m: class { method x { class Sekrit { constant x = role AlsoSekrit { method z { Sekrit.new but AlsoSekrit } }; also does x } } }.new.x.z.say 18:17
camelia <anon|50635344>::Sekrit+{<anon|50635344>::Sekrit::AlsoSekrit}.new
IOninja \o/ 18:18
TimToady 'also' is one of those things you almost never want, but when you want it, you want it very, very much :) 18:19
IOninja El_Che: also, release happens in full view of the public #perl6-dev :) irclog.perlgeek.de/perl6-dev/2017-...i_14286273
SmokeMachine I am sorry, but I have to comment: had anyone noticed the charles chaplin made by lobster's and sorear's avatars on the rakudo's organization's page? github.com/rakudo 18:19
ilmari SmokeMachine: neat 18:20
IOninja doesn't see it 18:21
I don't even see no sorear
hobbs haha 18:22
IOninja: third column of light green geometric things
in the People box
TimToady my People box apparently has different geometry
timotimo it has 16 entries on my end, in a 5x3 + 1 lone picture arrangement 18:23
hobbs i.imgur.com/htNHxfk.png
IOninja i.imgur.com/dqyybwg.png
timotimo hey that's me in there \o/
IOninja Ah. I have special powers and see more people that's why
TimToady wonders what Rorshasch would make of your identification... 18:24
hobbs oh, I wonder if it's different if you're in the organization
IOninja SmokeMachine++ indeed it does look like it :)
TimToady ohh, pl6anet fixed, stmuk_++ 18:25
SmokeMachine :)
SmokeMachine lizmat: why do you think that should be 2 different Pos? 18:27
*PRs
Geth ecosystem: 6137040c18 | (Zoffix Znet)++ | META.list
s/META.info/META6.json/ for P6-Data-Dump-Tree
18:37
modules.perl6.org: e06d6ab8a5 | (Zoffix Znet)++ | lib/ModulesPerl6/DbBuilder/Dist/Source.pm
Fix incorrect warnings for tags

Detects missing tags as "have but not an array" tags.
18:43
El_Che IOninja: I am #perl6 lurker, not a #perl6-dev l33t haxor 18:52
IOninja heh 18:53
raschipi m: say +$*THREAD 18:55
camelia 1
lizmat m: start { say $*THREAD } 18:56
camelia Thread #3
Geth modules.perl6.org: b6e5c60be4 | (Zoffix Znet)++ | templates/root/index.html.ep
Remove superfluous text
hord what keeps perl 6 from including '?' in identifiers? 18:56
lizmat hord: there's actually a slang for that 18:57
hobbs just use "p" ;)
hord i've always liked ruby's .nil? and things like that.
lizmat hord: github.com/FROGGS/p6-Slang-Piersing
hord lizmat: nice! 18:58
raschipi If that gets popular, does it make into core?
SmokeMachine IOninja: the problem is: got: $(Seq.new-consumed(), Seq.new-consumed(), Seq.new-consumed())
lizmat raschipi: don't think so
it lives fine in module space :-) 18:59
IOninja Wonder if that module's been busted by the braid upgrade
SmokeMachine: kinda yeah, it's the problem with the output though; it can still test if they differ. 19:00
m: use Test; is-deeply [(1,).Seq], [(1,).Seq]
camelia ok 1 -
IOninja m: use Test; is-deeply [(1,).Seq], [(2,).Seq]
camelia not ok 1 -

# Failed test at <tmp> line 1
# expected: $[2]
# got: $[1]
IOninja m: use Test; is-deeply [(1,).Seq,], [(1,).Seq,]
camelia ok 1 -
IOninja m: use Test; is-deeply [(1,).Seq,], [(2,).Seq,] 19:01
camelia not ok 1 -

# Failed test at <tmp> line 1
# expected: $[Seq.new-consumed(),]
# got: $[Seq.new-consumed(),]
IOninja Right
SmokeMachine IOninja: ok, thanks!
IOninja SmokeMachine: ^ so if it's failing, that means the outputs don't match.
It just can't output them, because they've been consumed during comparison. 19:02
hord oh my. oh my my my.
SmokeMachine IOninja: ok, thanks!
(is there any way to tell travis: if is there a new version of rakudo, run my modules tests again?)
IOninja SmokeMachine: yes: docs.travis-ci.com/user/triggering-builds/ 19:03
hord so... you can modify the parser's grammar at run-time?
IOninja hord: yes
SmokeMachine IOninja: great! ill do that to my modules!!!
IOninja: thanks! 19:04
IOninja m: sub infix:<♥> { $^a + $^b }; say 2 ♥ 2 19:04
camelia 4
IOninja hord: that's ^ one way. And slangs is another. Slangs currently don't have an "official" API 19:04
huggable: slang
huggable IOninja, mouq.github.io/slangs.html
IOninja hord: ^ docs for them; though that might be outdated a bit due to recent braids upgrade (it would be just a couple of lines though, see the recent changes in Slang::Tuxic for a fix) 19:05
IOninja buggable: eco Slang::Tuxic 19:06
buggable IOninja, Slang::Tuxic 'allows to call subs as: foo (args)': github.com/FROGGS/p6-Slang-Tuxic
hord that's just wild
i'm trying to imagine how you accomplish that... i'm guess a mutable grammar tree.
IOninja hord: even without any changes, parsing is done with a braid of three languages: Main, Quote, and Regex
hord i don't think i've ever built a parser that stored the semantics as a tree 19:07
or whatever
yeah, i seem to recall reading about the multi-language ability with regards to regex
IOninja m: say "Oh {"my"}"
camelia Oh my
IOninja Note how the quotes don't interfere :) 19:08
(well, I guess you don't need braids for that, but still)
El_Che New rakudo 2017.03 Linux pkgs: github.com/nxadm/rakudo-pkg/releas...ag/2017.03 19:12
IOninja \o/ 19:13
El_Che++
El_Che: do Centos .rpms work on all the other Linuxes that use .rpms?
hord i'm behind (2017.01)
SmokeMachine m: say [\X~](<a b c>) eqv ((("a",).Seq, ("ab",).Seq, ("abc",).Seq)).Seq # <- IOninja, is that good enough?
camelia True
El_Che I will try to squeeze a Debian release soon, because I saw some users here on the channel asking about it
El_Che IOninja: they are built on CentOS7. It should (because everything is self-contained), but ymmv 19:14
IOninja m: use Test; is-deeply [\X~](<a b c>), ((("a",).Seq, ("ab",).Seq, ("abc",).Seq)).Seq
camelia This Seq has already been iterated, and its values consumed
(you might solve this by adding .cache on usages of the Seq, or
by assigning the Seq into an array)
in sub _is_deeply at /home/camelia/rakudo-m-inst-2/share/perl6/sources/C712FE6969F786C…
El_Che thing will break e.g. if the OSes have incompalitble libc or something
IOninja m: use Test; is-deeply ([\X~](<a b c>)), ((("a",).Seq, ("ab",).Seq, ("abc",).Seq)).Seq 19:15
camelia This Seq has already been iterated, and its values consumed
(you might solve this by adding .cache on usages of the Seq, or
by assigning the Seq into an array)
in sub _is_deeply at /home/camelia/rakudo-m-inst-2/share/perl6/sources/C712FE6969F786C…
IOninja wonders wtf
El_Che I could add a Fedora build to cover most bases
IOninja SmokeMachine: yeah
SmokeMachine: though I don't get why is-deeply isn't happy with them :/
El_Che The whole idea of the docker build is that it's trivial to add a 64-bit linux OS
raschipi Speaking of debian, 2017-02 is just available from the repos, I'm upgrading now.
IOninja 2017.02? ancient! 19:16
El_Che (and possible to add a 32 if there is a base 32 bit systemn like the one Ubuntu has for the cloud)
IOninja :)
SmokeMachine is-deeply really didn't like that... :( 19:16
IOninja m: use Test; cmp-ok [\X~](<a b c>), 'eqv', ((("a",).Seq, ("ab",).Seq, ("abc",).Seq)).Seq 19:17
camelia ok 1 -
IOninja SmokeMachine: you can use that
is-deeply is bustified with Seqs I guess.
SmokeMachine IOninja: great! thanks!
IOninja SmokeMachine: and commit directly (or merge your PR) when you're done. You have the commit bit. 19:22
SmokeMachine IOninja: ok... but if I did that the last time you wouldn't correct me... 19:23
IOninja SmokeMachine: and if you ever decide to try to get a commit bit for rakudo, it's required that you sign a Contributor License Agreement and send it to The Perl Foundation first. It's here: www.perlfoundation.org/contributor_..._agreement you can email it to them instead of shipping it by normal mail 19:23
SmokeMachine IOninja: should I send that to what email? 19:26
IOninja SmokeMachine: not really sure, maybe Jim Brandt? www.perlfoundation.org/contact_us You can ask [Coke], he's a member 19:27
SmokeMachine .tell [Coke] Hi there! Id like to sign the Contributor License Agreement, do you know what email should I send that? Should those blanks be hand written? Thank you very much. 19:32
yoleaux SmokeMachine: I'll pass your message to [Coke].
[Coke] print it out, sign it, scan it in.
yoleaux 19:32Z <SmokeMachine> [Coke]: Hi there! Id like to sign the Contributor License Agreement, do you know what email should I send that? Should those blanks be hand written? Thank you very much.
SmokeMachine [Coke]: and send it to what email? 19:33
[Coke] mail to trademark -at- perlfoundation.org
SmokeMachine [Coke]: thank you very much!
hankache hello #perl6 19:47
raschipi hey hankache! 19:54
timotimo has never had an aching hank 20:03
SmokeMachine signed 20:11
www.irccloud.com/pastebin/ls7lxwRV/ 20:12
SmokeMachine [Coke]: the email bounced... :( 20:13
[Coke] wonders if DBIish supports oracle CLOBs 20:14
[Coke] SmokeMachine: ok. send it to me at [email@hidden.address] I'll add it to my pile of TPF stuff to do. 20:15
SmokeMachine [Coke]: thanks!
sent! 20:16
[Coke] SmokeMachine: recebido 20:18
SmokeMachine [Coke]: are you brazilian?
[Coke] no, although I think there are some Coledas down that way. 20:19
SmokeMachine tColedas? 20:20
Coledas?
hord i don't see anything in the DBDish that lets you mess with CLOBs like the p5 driver does... good luck :)
Oracle is... fun. 20:21
SmokeMachine google translate told me that Coledas should means "cops"... (In brazil we call cops: policiais)
*mean 20:22
timotimo what are CLOBs? 20:25
do i even want to know ... 20:26
hobbs like a BLOB but without the first B 20:27
(character large object)
hord timotimo: all the horror of BLOBs with Unicode 20:27
timotimo so ... instead of bytes it has ascii characters? :P 20:28
oh yikes
that's somehow even worse
hord actually, Oracle's unicode handling is fine once you learn how to pick The One True Encoding
hobbs I wrote an oracle stored-procedure wrapper for $WORK some years back, the LOB-fetcher was one of the more interesting parts of it 20:29
almost as hard to get right as the actual function introspector
hord yeah i had to deal with lobs for some web apps
[Coke] Whatever my name means, I'm pretty sure "police" ain't it. :)
hord i'm digging on MonoDB lately. is there a p6 driver? i haven't looked. 20:30
oh, there is.. 20:31
timotimo is that mongodb but without the g?
hord i meant MongoDB
timotimo OK
timotimo just make sure you either don't expose your mongodb to the public internet, or have a password set on it 20:31
hord what if i want to run a wiki-style database? 20:33
RabidGravy I ought to release Sofa soon 21:12
timotimo hord: why would you expose the database to the public internet in that case? 21:16
hord timotimo: for fun and profit 21:18
timotimo well, let's hope you have usernames and their passwords in a separate database in that case 21:20
and you don't mind someone dropping all your tables constantly 21:21
hord what if you made a database where the first record you create is your public key and only messages from you can mutate the database? 21:26
timotimo that would be fun 21:28
hord i have a single-user version using symmetric keys. the idea of using pki + multi-user hit me yesterday. 21:30
El_Che creating debian stable packages 21:44
so, far it hasn't exploded in my face :)
El_Che github.com/nxadm/rakudo-pkg/releas...ag/2017.03 <-- includes debian8 amd64 rakudo pkg 21:53
IOninja El_Che++ 21:54
m44st4 Hi ! Do we have a good Crypto library with AES,Twofish,Serpent and Usual block-cipher modes, 22:09
?
samcv hi! 22:12
m44st4, modules.perl6.org/#q=crypt 22:13
IOninja buggable: eco crypt
buggable IOninja, Found 8 results: Game::Crypt, Crypt::Bcrypt, Crypt::Libcrypt, Crypt::RC4, Crypt::TweetNacl. See modules.perl6.org/#q=crypt
m44st4 Thanks ! 22:16
El_Che hi samcv 22:19
samcv hey
IOninja wonders how Slang::Piersing got its name.... 22:25
timotimo somethign to do with a lisp?
lol 22:26
hobbs I was wondering that too, my guess to myself is that it's something that Piers Cawley was excited about at some point 22:27
timotimo duckduckgo.com/?q=Piers+Cawley+lib...;ia=videos 22:27
SmokeMachine accordingly to this (rt.perl.org/SelfService/Display.ht...t-history) should I remove lcm and gcd from Numeric.pm? 23:07
IOninja I wouldn't call that a bug TBH. 23:10
The docs clearly state the behaviour too: "Coerces both arguments to Int and returns the least common multiple, that is the smallest integer that is evenly divisible by both arguments."
IOninja & 23:11
SmokeMachine ok, Ill leave that alone... 23:14
hord that's a balance between being strict math and fuzzy perl 23:15
if you are a math person, i think it'd be technically wrong to allow anything but integers for gcd/lcm 23:16
timotimo i thought so, too, hord
hord but most programmers aren't strictly math people
timotimo m: say 2.5.narrow
camelia 2.5
IOninja hord: that's not my reasoning for it. My reasoning is non-Int numbers don't make sense with these ops, so forcing the user to constantly add .Int with them is antisocial. 23:35
'cause 99.9% of the time people aren't writing "2.5 gcd 5" but "*some computation* … $stuff gcd $other-stuff" 23:36
SmokeMachine is the code inside {} inside a regex evaluated at runtime, right? 23:43
so this dies at compile time:
m: say "ooo" ~~ / "o" ** 1..0 /
camelia 5===SORRY!5=== Error while compiling <tmp>
Empty range
at <tmp>:1
------> 3say "ooo" ~~ / "o" ** 1..07⏏5 /
SmokeMachine and this doesn't:
m: say "ooo" ~~ / "o" ** {1..0} /
camelia 「ooo」
El_Che This is Rakudo version 2017.03 built on MoarVM version 2017.03 23:43
implementing Perl 6.c.
f7d2a26e55ee9acbe34168c37761baf7100152a8 perl6-rakudo-moarvm-Fedora25-20170300-01.x86_64.rpm
\o/
SmokeMachine but the second one shouldn't match, right? 23:44
El_Che For whoever writes p6weekly this week: addition of Fedora and Debian packages to github.com/nxadm/rakudo-pkg/releas...ag/2017.03 23:48