»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
Kaiepi when i first started using perl6 i thought supplies were just the equivalent of javascript event emitters and would end up something i probably wouldn't need to use 00:52
i was completely wrong and now i use them all the time lol
they definitely help with writing more modular code 00:56
vrurg If anybody alive here who nows why overriding ACCEPTS for a class doesn't impress the smartmatch operator? It simply ignores the method... 01:02
tobs vrurg: did you override it on what you put on the RHS of the smartmatch? 01:04
vrurg tobs: say, on a Str in $obj ~~ "something"? 01:05
tobs yes, that would call "something".ACCEPTS($obj)
vrurg Augmentation? It doesn't look good... :( 01:06
In your interpretation it even reads oddly: as if a string accepts my object. If it's works this way – I will avoid using this feature. 01:08
mornfall how else would it work? 01:09
tobs m: "operand" ~~ class { method ACCEPTS ($acceptee) { say "do I accept $acceptee ?" } }
camelia do I accept operand ?
vrurg is too used to commong left-to-right evaluation order. 01:12
tobs vrurg: then you can use R~~ instead of ~~ 01:13
vrurg It now makes sense, but is still confusing. I have a context object which keeps track of contexts defined by unique strings. So, $context ~~ "ctx1" | "ctx2" would look great, but I'm not gonna augment junction for this. 01:14
tobs in that case, you might want to use === and the WHICH method 01:16
vrurg tobs: R isn't good too.
tobs: That sounds like the solution! Thanks! 01:17
tobs and write $context === "ctx1" | "ctx2", where === uses the result of $context.WHICH to compare, cf. docs.perl6.org/routine/=== and docs.perl6.org/routine/WHICH
mornfall that sounds super confusing :\ 01:18
=== is supposed to be the finest equality there is 01:19
vrurg And more than that, the context object is a collection of strings (contextes). It can't be uniquely identified with WHICH for that purpose. 01:21
mornfall i'd consider =~=
vrurg mornfall: thanks, I was just about to see if another operator would be helpful. :) 01:22
Kaiepi i also have a programming question if this one has already been answered 01:24
mornfall i think irc can handle some concurrency :p 01:25
Kaiepi alright
i'm writing a chat bot for a website and at the moment it's split into two modules
one for managing the websocket connection, one for handling state 01:26
the one handling state is also handling parsing and commands at the moment, but i want to abstract that out
the issue is i want to abstract it out in such a way that i can paramaterize a role of some sort with any kind of parser to allow for more customization 01:27
since other bots on the site have had the deficit of having very difficult to customize parsing
mornfall parsing isn't super composable by nature 01:28
Kaiepi parsing here can be split into two parts 01:29
one for stuff like battle and chat event messages, and one for chat messages 01:30
mornfall well, the problem is that parsing in the traditional sense is a very top-down matter
maybe you just want to allow competing parses for the same message and sort them out somehow (maybe spit out a score from each sub-parser)? 01:31
Kaiepi the only messages the parsers would be competing each other for are chat messages 01:32
mornfall sure, but parsing commands is easy, even extensibly 01:33
if there is a clear top-down structure, like the first word being a command, then you just dispatch on that 01:34
but if it is supposed to be free-form text, just running all the parsers and letting them tell you how good they think their match is might be the only reasonable option?
anyway, it's bedtime ... gl&hf o/ 01:36
Kaiepi night
thanks for the help
vrurg Kaiepi: the last mornfall suggestion is what I was thinking about: just a parser class used as a kind of filter. 01:37
vrurg Then you could chain them, use parser classes as role parameters – whatever. 01:38
Kaiepi i was thinking a role that manages state that could be parameterized by a command parser and a regular chat message parser 01:40
state obtained from messages received that is 01:42
vrurg Kaiepi: class Parser1 { grammar CommandSet1 { ... }; method parse( Str:D ) { ... } }; role StateMgr[ParserClass] { ... }; class Consumer does StateMgr[Parser1] { ... } 01:45
roughly.
Kaiepi looks about right 01:48
i can't use grammars though apart from parsing chat commands because the site's protocol is awful and inconsistent 01:49
vrurg If I understand you correctly, then it doesn't matter. Would it be a grammar or other way of handling the message – the idea is to let a parser class to handle it. I would only define a base role for parsers on top of all this which would demand a minimal set of methods – just to define a standard interface. And then just make things like $parser.accepts( $message ), etc. 01:52
Kaiepi yeah, i understood what you meant 01:53
so you understand what i mean by the protocol being awful it mixes a reasonably well thought out message format with messages that are just text and messages that are raw html 01:58
vrurg I hope so. :) The point is to define it your self (or have it defined for you by the client) how that mess is to be dealt with. Without clear definition there will be no good in-code solution. But generally it looks like a work for a filter. 02:00
You pour all the data into it, it lets go useless data bu keeps and gives you back what could be handled. 02:02
I also call it a 'driver architecture' to myself – from the times when drivers were probing available hardware and claiming the devices they could recognize. :) 02:03
Kaiepi m: for 0..3 { Promise.in(3).then({ .say }) } 02:22
camelia ( no output )
Kaiepi m: my @p = gather for 0..3 { Promise.in(3).then({ .say }) }; await Promise.allof: @p 02:23
camelia ( no output )
Kaiepi m: my @p = gather for 0..3 { take Promise.in(3).then({ .say }) }; await Promise.allof: @p
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaugh…
Kaiepi m: my @p = gather for 0..3 { take await Promise.in(3).then({ .say }) }; await Promise.allof: @p
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
Can only use allof to combine defined Promise objects
in block <unit> at <tmp> line 1

Pr…
02:24
Kaiepi oh right $_ gets overridden
vrurg .allof is not needed for await.
Kaiepi it's not?
vrurg await @p works perfectly ok.
Kaiepi since when?
vrurg Dunno. :) 02:25
Kaiepi m: my @a = lazy gather for 0..3 { take Promise.in($_).then({ say $_ }) }; await @a
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaugh…
Kaiepi m: my @a = lazy gather for 0..3 { take Promise.in($_).then({ say $_ }) }; await Promise.allof(@a) 02:26
camelia Earlier failure:
(HANDLED) Cannot .elems a lazy list
in block <unit> at <tmp> line 1

Final error:
Type check failed in binding to parameter '$N'; expected Int but got Failure (&CORE::infix:<orelse>...)
in block <unit> at <tmp> line …
Kaiepi m: my @a = lazy gather for 0..3 { take await Promise.in($_).then({ say $_ }) }; await @a
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
vrurg m: my @p = (1..3).map: { start { sleep rand; say "done" } }; note @p; await @p; 02:27
camelia [Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Planned) Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncau…
vrurg m: my @p = (1..3).map: { start { sleep rand; say "done" } }; await @p;
camelia done
done
done
vrurg remove 'await' from 'take await' 02:28
m: my @a = lazy gather for 0..3 { take Promise.in($_).then({ say $_ }) }; await @a
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaugh…
Kaiepi m: my @a = lazy gather for 0..3 { take Promise.in($_).then({ say $_ }) }; await await @a 02:29
camelia Promise.new(scheduler => ThreadPoolScheduler.new(initial_threads => 0, max_threads => 64, uncaught_handler => Callable), status => PromiseStatus::Kept)
An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
Kaiepi huh
vrurg my @a = lazy gather for 0..3 { take await Promise.in($_).then({ say "ok" }) }; await @a
oops. 02:30
m: my @a = lazy gather for 0..3 -> $sec { take Promise.in($sec).then({ say $sec }) }; await @a
camelia 0
1
2
3
vrurg Now it's more understandable output. ;) 02:31
Kaiepi m: my Str @foo; say @foo.WHAT 02:37
camelia (Array[Str])
Kaiepi huh i thought it'd be a List 02:39
timotimo @ for @rray :) 02:44
timotimo more precisely, though: @ stands for Positional 02:54
the default is Array, though
SmokeMachine m: my await do for 0..3 -> $sec { Promise.in($sec).then({ say $sec }) } 03:44
camelia 5===SORRY!5===
Type 'await' is not declared
at <tmp>:1
------> 3my await7⏏5 do for 0..3 -> $sec { Promise.in($sec).
Malformed
my
at <tmp>:1
------> 3my7⏏5 await do for 0..3 -> $sec { Promise.in(

»
SmokeMachine Promise.in
m: await do for 0..3 -> $sec { Promise.in($sec).then({ say $sec }) } 03:45
camelia 0
1
2
3
SmokeMachine m: await do for 0..3 -> $sec { Promise.in($sec).then({ say $sec }) }; say now - BEGIN now
camelia 0
1
2
3
3.01649523
holyghost I will extend my Markov Chain methods in Game::Markov next week 05:16
also sample methods 05:17
It's difficult stuff for me
but you can do many excellent things with it
such as calculating/approximating integrals 05:19
holyghost surfaces, ... 05:19
holyghost You might use it in games for prediction or approximations 05:26
even 3D models I believe 05:27
Elronnd is it possible to use given to do pattern-matching? E.G. if I have a class A { has Int $.a; has Str $.b; } can I match on As that have 5<=a? 07:22
ufobat_ good morning
m: class Foo { }; Foo.new( :yada ); 07:23
camelia ( no output )
ufobat_ m: class Foo { }; Foo.new( :yada; );
camelia Unexpected named argument 'yada' passed
in block <unit> at <tmp> line 1
ufobat_ this error is confusing :-(
holyghost Elronnd give $foo { when /string/ ...) 07:27
s/give/given 07:28
ufobat_ m: class Foo { has $.a; has $.b; }; given Foo.new(:a(5), :b(12)) { when *.a > 4 and *.b < 10 { say "greater 4"} }
camelia ( no output )
Elronnd ufobat_: thanks 07:30
ufobat_ but i think that doesnt "destructure" your object, it calls the getter-methods on it 07:31
nige_ o/ 07:32
Elronnd well, it solves my problem so ¯\_(ツ)_/¯
ufobat_ my %h = (a => 5, b => 8); ; given %h { when *<a> > 4 and *<b> < 9 { say "greater 4"} } 07:33
evalable6 greater 4
nige_ i'm having trouble removing colour codes from Perl 6 error output with .subst 07:37
when i try and match this: ===SORRY!=== Error while compiling 07:39
with $colour-free-error = $error.subst(/\X1B <[0..9;]>* 'm'/, '', :g); 07:41
the ESC characters remain in the output
rosetta code to the rescue: rosettacode.org/wiki/Strip_control...ing#Perl_6 07:49
removing the control character first helped
advent-driven-development++ 07:50
ufobat_ isnt there a way to tell perl6 not to use color for its output at all? 07:53
does anyone know a perl6 module that does provide `resources`?
nige_ there is an environment variable to ask rakudo to produce JSON
it might be useful for logging systems - otherwise the log file will contain colour codes 07:54
jmerelo .seen daotoad 08:55
yoleaux I saw daotoad 14 Oct 2018 22:38Z in #perl6: * daotoad smiles and waves
jmerelo .seen nige123 09:02
yoleaux I haven't seen nige123 around.
jmerelo .seen nigehamilton
yoleaux I haven't seen nigehamilton around.
jmerelo Introducing the 1000? project www.facebook.com/groups/perl6/perm...182860695/ 1000 questions about #perl6 asked in SO by... soonish. We need your help! 09:31
Geth doc: 0b63543c58 | (JJ Merelo)++ | 2 files
Revising stuff related to Raku

It's been properly addressed in the FAQ and glossary, probably nothing else is needed for the time being. Closes #2443
09:41
mornfall b2gills: btw., what do you mean concurrent access to hashes needs explicit locks? :\ 09:55
ufobat_ lizmat, have you created the issue regarding my stackoverflow question about exporting %*SUB-MAIN-OPTS, if not I would do it 10:31
lizmat ufobat_: I don't think I did, so please :-)
ufobat_ lizmat, i just read your comment so i am a bit late :-)
okies will do now 10:32
xlat Hi, does nativecall support Str encoded('utf16')?
I'm asking 'cause I was mapping Win32::GetFullPathName and have to hack the str before the call with ~"\0"
otherwhise I got randomly corrupted results 10:33
jmerelo lizmat, ufobat_ while you're at it, would it make sense to have also an exportable $*POD? stackoverflow.com/questions/536342...porting-it
lizmat jmerelo: I think it would...
jmerelo xlat: I have no idea. Could you maybe ask this also in StackOverflow if you don't get an answer here? Or even if you do? 10:36
xlat Yeah, I'll do 10:37
jmerelo ufobat_: please post your issue around here so that I can piggyback on it to ask for that above
lizmat hmmm... did we lose Geth ? 10:44
ufobat_ jmerelo, i was distracted by alexander gerst on the "sendung mit der maus" ;-) sorry 10:45
mornfall lizmat: Geth timed out 10:47
lizmat paging timotimo moritz Zoffix : seems we lost Geth 10:49
ufobat_ jmerelo, github.com/rakudo/rakudo/issues/2532 10:50
jmerelo lizmat: is that on the same machine as the other bots? I mean, squashable6 and the others?
let me check
releasable6: status
lizmat I have no idea
releasable6 jmerelo, Next release in ≈6 days and ≈8 hours. 4 blockers. 0 out of 19 commits logged
jmerelo, Details: gist.github.com/5ffa0158f43a3ed850...51472e38e0
jmerelo No, it's not. I don't have access to that machine, then...
ufobat_: thanks 10:51
ufobat_ regarding my other StackOverflow question stackoverflow.com/questions/536380...l6-modules I wrote this github.com/ufobat/p6-ResourceExtra...ractor.pm6
i am looking for feedback, please. I've no clue what i've done, and I dont want to put rubbish into the ecosystem. 10:52
PR are welcome :)
jmerelo ufobat_: that's interesting.
lizmat ugexe nine ^^^
ufobat_ ugexe already explained to me that this it not going to work on all boxes becasue you might have resources in the META6 that can not be installed on *your* fs becaus it might lack unicode support and stuff 10:53
ufobat_ i would document that in the module of course 10:54
lizmat hmmm... but that's the whole point of %RESOURCES, is that it would hide such issue for you :-( 10:55
ufobat_ absolutly
but because %*RESOURCES hides this issues you can't have access to directories. You should code in a way that you dont need to have that. But if you do want have it, and you know that your FS is able of doing it.. why not 10:58
ufobat_ and i think %*RESOURCES dont work if you have'nt installed the module yet, right? 10:58
jmerelo xlat: thanks! stackoverflow.com/questions/536915...ted-result Please everyone take a look at this 10:59
lizmat hmmm...
ufobat_ but i think this could be addressed in rakudo itself, in a similar way i did here github.com/ufobat/p6-ResourceExtra...m6#L40-L44
Kaiepi what are you doing with %*RESOURCES?
ufobat_ but this is a bad hackery
ufobat_ Kaiepi, BAialdor for example has a feature that you can set a template or views *directory* 11:00
Kaiepi i don't get what you mean
ufobat_ Kaiepi, and i am currently writing a cro app that might ship a few files in adirectory, and i just want all to be served
Kaiepi ohhh 11:01
ufobat_ i've got resources/folder/<list of random stuff>
i need to mention each file in a) the source code, b) the META6.json, c) provide access to it either of the fs or the %?RESOURCES, depending if the module is installed or not 11:02
my module would fix those 3 issues
excpet b)
buggable New CPAN upload: Algorithm-LDA-0.0.6.tar.gz by TITSUKI modules.perl6.org/dist/Algorithm::L...an:TITSUKI 11:13
lizmat m: class A:ver<0.4.2> { }; dd A.^ver # inspired by last p6Advent post 11:17
camelia v0.4.2
lizmat m: class A:auth<minime> { }; dd A.^auth
camelia "minime"
mscha my @foo; @foo[2] = 4; dd @foo.maxpairs; # What string context? 11:56
m: my @foo; @foo[2] = 4; dd @foo.maxpairs; # What string context?
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
(2 => 4,).Seq
jmerelo mscha: strange 11:59
m: my @foo; @foo[2] = 'd'; dd @foo.maxpairs;
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
(2 => "d",).Seq
jmerelo m: my @foo; @foo[2] = 'd'; @foo.maxpairs.perl.put; 12:00
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
(2 => "d",).Seq
in block <unit> at <tmp> line 1
jmerelo m: my @foo; @foo[2] = 'd'; say @foo.pairs 12:01
camelia (0 => (Any) 1 => (Any) 2 => d)
jmerelo mscha: ^^^ the problem is when converting that array to pairs. docs.perl6.org/routine/maxpairs It's rather unexpected .pairs behavior than a bug... 12:03
tyil can I configure IRC::Client to use a certificate for certfp authentication? and if yes, how would I go about it? 12:40
jmerelo tyil: there does not seem to be anyone available to answer this... Maybe you can try Stackoverflow? :-) 12:48
tyil I can post it there, hang on ^^ 12:49
mscha jmerelo: thanks, but is that really not a bug? I don't see why converting to pairs would stringify anything. 12:51
m: my @foo; @foo[2] = 4; my @bar = @foo.pairs; say @bar[2]; # No error here
camelia 2 => 4
tyil jmerelo: stackoverflow.com/questions/536925...-ircclient posted :) 12:54
jmerelo thanks! Good luck.
mscha jmerelo: it seems more likely that it's doing a string comparison involving (Any). But .max() doesn't give an error...
tyil thanks :>
mscha m: my @foo; @foo[2] = 4; say @foo.max; 12:55
camelia 4
jmerelo mscha: yep, but maxpairs is rather .pairs.max 12:56
m: my @foo; @foo[2] = 4; say @foo.pairs.max;
camelia 2 => 4
jmerelo mscha: hey, that works.
m: my @foo; @foo[2] = 4; say @foo.maxpairs;
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
(2 => 4)
in block <unit> at <tmp> line 1
mscha m: my @foo; @foo[2] = 'bar'; say @foo.pairs.max(*.value);
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
2 => bar
in block <unit> at <tmp> line 1
mscha Ah.
jmerelo mscha: maybe ask in StackOverflow? Could be a bug, anyway... 12:57
mscha jmerelo: will do
jmerelo mscha: thanks!
jmerelo clickbaits www.facebook.com/groups/perl6/perm...182860695/ to encourage everyone to _really_ use Stackoverflow to the max, in order to help & expand the Perl 6 community 12:58
lucasb mscha: hi. well there's a hole in the array, an undefined element, no? 12:59
comparing with an undefined element will certain warn. what is curious, I agree is the "string" context 13:00
mornfall jmerelo: some of us are too old for SO :p 13:01
(i also wish writing PODs would garner as much enthusiasm as posting to SO :p) 13:02
lucasb yeah, I think there may be a bug in maxpairs.
lucasb max/min ignores undefined elements. so, why shouldn't maxpairs? 13:02
m: say (2,Any,3,Int,4).max 13:03
camelia 4
lucasb m: say (2,Any,3,Int,4).maxpairs
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
(4 => 4)
in block <unit> at <tmp> line 1
Use of uninitialized value of type Int in string co…
jmerelo mornfall: one thing does not exclude the other. Even if you have excellent PODs, there might be still some unanswered questions
mornfall: it's more about reaching out, or complementing pods
mornfall: and I'm pretty sure I'm older than you
mornfall jmerelo: you are young in spirit, surely :) 13:05
mscha lucasb: what's strange is that .max() doesn't warn, but .maxpairs() (and .pairs.max(*.value)) does. 13:08
stackoverflow.com/questions/536926...ned-values
andrzejek lookatme_q: :) 13:16
pmurias ufobat_: re extracting the files from resources into a directory I agree with Brad Gilbert that teaching Cro to use RECOURCES seems like a better idea 13:25
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> $a, $l { $a => $l }; say @c 13:37
camelia Too few positionals passed; expected 2 arguments but got 1
in code at <tmp> line 1
in block <unit> at <tmp> line 1
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c
camelia [1 => a 2 => b 3 => c]
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; @c.elems
camelia [1 => a 2 => b 3 => c]
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; @c.elems.say 13:38
camelia [1 => a 2 => b 3 => c]
3
Xliff \i 13:52
\o even
sena_kun o/ 13:52
Xliff Does META6.json handle native dependencies? 13:53
sena_kun "handles" as?
as to be able to specify "I want such and such system libs, go for it", not yet, as far as I know. but you can ship those yourself using `resources`. 13:54
Xliff At the very least something that says "Hey, this requires this native lib" 13:57
I thought "depends": "name:from<native>" worked, but zef chokes on it.
sena_kun this doesn't work yet, afaik. 13:58
once again, you can ship if by hands. otherwise I don't know. :/
Xliff OK, thanks!
b2gills mornfall: Changing hashes concurrently can lead to data races. I.E. the hash could change between when you read it and when you write back to it. If you are just reading it, then it will work fine. 13:59
SmokeMachine m: say Int cmp Str 14:14
camelia Use of uninitialized value of type Int in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
Same
in block <unit> at <tmp> line 1
Use of uninitialized value of type Str in string contex…
SmokeMachine max uses cmp that’s why is trying to stringify... ^^ 14:15
SmokeMachine m: my @a; @a[2] = 4; @a.pairs.max: *.value <=> *.value 14:19
camelia Use of uninitialized value of type Any in numeric context
in whatevercode at <tmp> line 1
Use of uninitialized value of type Any in numeric context
in whatevercode at <tmp> line 1
Use of uninitialized value of type Any in numeric context…
El_Che For those of us discussing native apps a few days ago: daringfireball.net/2018/12/electro...ative_apps 14:23
mscha m: my int @foo = 1,2,3; say @foo > 2; # huh? 14:32
camelia Cannot resolve caller Real(array[int]:D: ); none of these signatures match:
(Mu:U \v: *%_)
in block <unit> at <tmp> line 1
mscha m: my Int @foo = 1,2,3; say @foo > 2; # works fine 14:33
camelia True
pmurias El_Che: that seems like a self-congratulatory Mac users post
I need to make a design choice for rakudo.js, when running with gather/take enabled I need to decide if make function call and decontainerization etc. always return a Promise, *or* make it sometimes return a promise and then deal with with the fact that Perl 6 objects can't expose a 'then' js method
the second option will likely mean that perl 6 methods will likely be prefixed
El_Che pmurias: is there an other type of mac users? :) 14:34
lizmat congratulates herself # doesn't want to feel left out 14:35
El_Che lizmat: and I congratulate you!
:)
lizmat mscha: could you please file an issue for that ? 14:36
El_Che his rant makes sense, though
(as an ocasional mac user)
pmurias El_Che: I met a few who treat it like something unixy that you don't have to fool around to set things up with like it's (happened a lot with a least me with) linux
mscha lizmat: will do. 14:37
El_Che pmurias: yeah, it took me a long time to configure a mac to be a good enough work environment like Linux. My Linux setup is scripted.
the upside is that during the process I made azerty support acceptable for me: github.com/pqrs-org/KE-complex_mod...s/pull/460 :) 14:43
typing alt + shift + 1 + letter to type a letter with an accent is not very workable (what were they thinking in Cupertino?) 14:44
pmurias El_Che: things like getting the wifi to work is something that you have struggle on the modern linux desktop, not some fancy customisation ;) 14:50
pmurias is waiting till chromebooks take over ;) 15:10
ufobat_ pmurias, I dont; teaching it to x (==cro) means that you still need to teach x-1 others. I agree that my module is a workaround/hack. But i am not yet willing to give up my search for a simpler interface 15:11
maybe a subclass of IO::Path would do the job better? 15:13
pmurias ufobat_: you mean as a better interface for RESOUCES? 15:14
?
ufobat_ yeah, because there are mainly 2 things i dislike about %*RESOURCES, a) it must be installed otherewise %*RESOURCES is empty, if ia m not mistaken, b) %*RESOURCES does not provide any usefull way to retrive information from it. you need to know exactly what you looking for 15:17
ufobat_ there is no for %*RESOURCE.kv -> $name, $io { ... } 15:18
there is no way to get all files that where in one directory
ufobat_ if %*RESOURCES would support .kv and wouljd work like written in the design.perl6.org/S22.html#%25%3FRESOURCES I would be happy with it 15:19
because a %*RESOURCE<first-dir>.kv would also be possible, then 15:20
pmurias is design.perl6.org/S22.html#%25%3FRESOURCES an up to date spec? 15:23
ufobat_ i think no, but i dont know it
pmurias it has the header all synopsis have but I think we keep linking to it 15:24
ufobat_: the problem with plugging a fake resource path to modules not expecting it is that it will then end up being passed to slurp etc. 15:35
El_Che pmurias: wifi? That 2000 or something. It's been a while since it doesn't work out of the box for me 15:36
pmurias: last time I had a wifi problem (dropped connections), it wasn't linux as the problem was worse on Windows (couldn't pass kernel parameters). It was a known problematic but widely installed intel wifi card 15:37
pmurias El_Che: had it on my current laptop like ~3 years before (it got fixed after like a year or something by a random ubuntu update) 15:39
ufobat_ pmurias, i didn't get it, sorry 15:42
do you mean if i would create a IO::Resource (a IO::Path like) interface for it? 15:43
pmurias do you want it pluggable transparently or just with minimal effort?
pmurias ufobat_: after a moderate about of thought it seems a IO::Path like interface could work 15:47
ufobat_: it even seems like it might be possible for builtins to accept it
ufobat_ there is no "interface", so fully transparently isn't possible, without adding another role to rakudo?
but I could just implement the common methods in a IO::Resource class? 15:49
ufobat_ then I don't need to export it into a tempdir() and i dont have the contrains of non-utf or case-insensetive filesystems 15:50
pmurias ufobat_: seems like a good start 15:53
ufobat_ pmurias, thanks for your help :) 15:54
pmurias El_Che: I think the "desktop is dying" idea is actually manifesting on at least some of the linux desktop 15:55
pmurias * some of the distros 15:59
Woodi imo, desktops will be in good condition (not niche just for pro work) until network speed will allow to carry very un-performant devices and do all computations somewhere remote. so we still have some time :) 16:38
jmerelo Geth is back. Great! 17:06
lizmat whee! .oO( instant gratification on commits :-) 17:11
[Coke] docs site still failing to build, btw. 17:11
yoleaux 8 Dec 2018 04:46Z <finanalyst> [Coke]: new version of Pod::To::BigPage processes Pod::Defn on a local version of docs. zef now installing new version.
[Coke] can someone help me get access to the doc site again? Assuming I was using ssh keys on a different box and lost the password. 17:15
jmerelo [Coke]: I don't think I can, but let me check... 17:16
jmerelo [Coke]: What's the problem now? 17:16
[Coke] the site running the doc build needs to have the new version of the module. 17:17
(now that it has the new version of rakudo)
moritz is the new version released? 17:18
jmerelo [Coke]: I'm doing it now
moritz: yes
moritz runs zef upgrade Pod::To::BigPage
jmerelo moritz:
moritz: it's actuall Pod::To::HTML
[Coke] ? 17:19
no it isn't.
moritz The following distributions will be upgraded: Pod::To::HTML:ver<0.4.0>:auth<Perl 6>
[Coke] Pod::To::BigPage is the one that got bumped in the meta6.json
moritz Pod::to::BigPage is at the latest version
in zef
jmerelo [Coke]: and then Pod::To::HTML
[Coke] as long as it gets fixed I won't argue. 17:20
jmerelo [Coke]: I see what you mean. docs.perl6.org/build-log/build-201...+00:00.log
[Coke]: But it didn't fail last time I checked yesterday morning. 17:21
[Coke] once the modules are updated you can trigger a rebuild by github.com/perl6/infrastructure-do...rg-rebuild
jmerelo: it's been failing all along.
every time I've checked the build logs since the site updated rakudo
how were you checkin that it didn't fail? 17:22
jmerelo [Coke]: I checked the update.log at the root of docs.perl6.org. Also, it's generating the perl6.html page correctly: docs.perl6.org/perl6.html#t36.2.5.2
[Coke] docs.perl6.org/build-log/build-201...+00:00.log docs.perl6.org/build-log/build-201...+00:00.log docs.perl6.org/build-log/build-201...+00:00.log , e.g., all failures.
jmerelo: what URL is the update.log at? 17:23
jmerelo [Coke]: right, but there's been a few builds since yesterday and it didn't fail.
[Coke] if there have been builds, where are the logs?
jmerelo [Coke]: it's not copied unless it fails. I checked it while it was being built yesterday morning... That last failing log is from ~ 6 hours before I checked 17:24
[Coke] if they're working, and not getting pushed to the build log dir, that's a different failure mode.
jmerelo [Coke]: logs are only published if they fail.
[Coke] how were they working if they didn't have the updated module, I wonder.
jmerelo: ah. that's a bad design. 17:25
jmerelo [Coke]: well, they're right there for the admin to see, in the logs/build-log directory. 17:26
[Coke]: not my design...
[Coke] never said it was.
jmerelo [Coke]: point is
[Coke] point is, the build system was broken by an untested update (or, worse, an update with a known failure) 17:27
jmerelo [Coke]: Pod::To::BigPage was upgraded yesterday, and that stopped failing.
[Coke]: as always, things were a bit more complicated. 17:28
[Coke]: but everything is pretty much in the issue: github.com/perl6/doc/issues/2424 17:29
[Coke] yes, but from over here, looks like that issue was not part of the discussion about whether or not to roll out the updated rakudo on the build box. 17:30
[Coke] sort of thing that would have been caught by (at one extreme) a more automated deployment process, or, (at the other extreme) a change management discussion before pushing out a potentially breaking change. 17:31
jmerelo [Coke]: we'll, it's also kind of a catch-22 situation. We needed to upgrade _because_ new Pod features had been rolled out and _were_ in the documentation.
[Coke] but why push a breaking change when another change was needed as a followup? 17:32
from a deployment standpoint, it's more correct to combine those changes and do them simultaneously.
jmerelo [Coke]: which kinda what was done. 17:32
[Coke] BTW, I'm not trying to blame anyone, just trying to point out how we can do this better going forward.
jmerelo [Coke]: I know, and I appreciate that. 17:33
[Coke] jmerelo: the module's changes weren't even *published* when the rakudo update was done.
jmerelo [Coke]: well, they were... kinda.
[Coke]: as I say, it's complicated.
[Coke]: let's start with a fact that has not been mentioned before: I was away from my desktop, in a sofa, due to back pain and on sedatives. 17:34
[Coke] "it broke". that's not complicated; esp. when it didn't have to.
hope you feel better.
jmerelo Right before that, I had bumped up Pod::To::BigPage so that it was updated, and was about to do it. 17:35
lizmat hugs jmerelo
jmerelo [Coke]: not perfect, still with heat on the zone and painkillers, but at the desktop, now.
lizmat: thanks
[Coke]: anyway, you are right, things shouldn't be done that way, but it was due to unexpected circumstances. 17:36
We were about to upgrade Rakudo and push the new version of Pod::To::BigPage, but then things went loose.
The site was broken for a day, and I kinda tried to fix it yesterday morning (European time), which I think I did. 17:37
[Coke] moritz: if you can get me access to the build box again, I'd appreciate it. Probably just need a password reset for coke 17:38
jmerelo [Coke]: I don't think I have the privs for that. But let me give it a try 17:39
moritz [Coke]: can do
[Coke]: you can "sudo su - perlbrew" to manipulate the rakudo that the doc build uses 17:41
jmerelo huggable: moritz 17:44
huggable jmerelo, nothing found
jmerelo anyway
[Coke] hey, i was trying to ssh into the wrong host this whole time, so that's why I thought I didn't have the right password. moritz++
jmerelo hugs moritz [Coke] lizmat
[Coke] is there a zef command to verify that you've got versions of dependencies installed that satisfy meta6.json? 17:58
we probably want to have a t/ test that verifies deps (whether it's a callout to zef or a handrolled one with use/require)
jmerelo [Coke]: zef install --deps-only will install new versions if they are more up-to-date 17:59
[Coke]: but that's right, we should have that.
[Coke]: it probably involves some CompUnit dark magic I don't really know how to do, but yes, we should have it.
[Coke] there was a point when docs upped the req to 0.5.0+ but 0.4.0 was still installed where my zef didn't fail. 18:00
(I think because 0.5.0 was not an available option) 18:01
(yet)
jmerelo [Coke]: yep. finanalyst bumped it to 0.4.1 but, since there's a big change (processing defn) here, I finally decided to go full 0.5.0. During that time I think that the reqs in perl6/doc were not changed, so it didn't fail. 18:03
jmerelo let me recap: old version of rakudo, reqs not changed → didn't fail. It started to fail when rakudo was changed, p2bp was changed, reqs were not. 18:04
tbrowder um, docs sandbox time? 18:48
jmerelo tbrowder: UK, I think. 18:49
It's one hour less than here.
tbrowder sorry, i’m being too short here. i mean: wouldn’t it be useful to a docs testbed viewable by anyone? 18:52
jmerelo ah, right. Yep, it would be great to have a production server that is different from the test server. 18:54
buggable New CPAN upload: Object-Trampoline-0.0.6.tar.gz by ELIZABETH modules.perl6.org/dist/Object::Tram...:ELIZABETH 19:03
tbrowder if i’m successful with my next rakudo pr, it will also probably disrupt the docs as did defn, so a real testbed would be handy! 19:20
jmerelo timotimo's Advent article has made it to Conway's life forum: conwaylife.com/forums/viewtopic.php...amp;t=3612 19:25
timotimo *gasp*
lizmat weekly: conwaylife.com/forums/viewtopic.php...amp;t=3612 19:30
notable6 lizmat, Noted!
jmerelo we're getting lots of visits to the site, most of them from USA ,UK, Germany. The Slashdot post was the one that sent the most visits 19:35
weekly: m.slashdot.org/story/349126
notable6 jmerelo, Noted!
Elronnd I have a c library with a function that has this signature void terminal_print_ext8(int, int, int, int, int, const char*, int*, int*). So I tried to wrap it like this: our sub print_ext(int32, int32, int32, int32, int32, int32, Str, Pointer[int32], Pointer[int32]) is native("BearLibTerminal") is symbol("terminal_print_ext8") { * }. But when I say my $destw = Pointer[int32].new(); my $desth = 19:57
Pointer[int32].new(); print_ext(0, 0, 0, 0, 0, "Bla", $destw, $desth), I get an error of Calling print_ext(Int, Int, Int, Int, Int, Str, NativeCall::Types::Pointer[int32], NativeCall::Types::Pointer[int32]) will never work with declared signature (int32, int32, int32, int32, int32, int32, Str, NativeCall::Types::Pointer[int32] $, NativeCall::Types::Pointer[int32] $). I'm guessing that this is down to a
mismatch between NativeCall::Types::Pointer[int32] $ and NativeCall::Types::Pointer[int32], but what really is the difference there?
And how do I resolve that? 19:58
timotimo i would recommend "int32 $destw is rw, int32 $desth is rw" instead
Elronnd how do I declare the variables of $destw and $desth then? 20:00
(Sorry, I'm new to perl)
I tried my int32 $destw is rw, but got an error. If I just do my int32 $destw, I get the same signature mismatch 20:02
timotimo that should actually work, though 20:08
but the signature mismatch could be about something else
i mean having "my int32 $destw = 5" and then the "int32 $destw is rw" in the signature 20:09
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say @c.rotor(2) 20:20
camelia [1 => a 2 => b 3 => c]
((1 => a 2 => b))
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say @c.map({$_.key, $_.value}).flat.rotor(2) 20:21
camelia [1 => a 2 => b 3 => c]
((1 a) (2 b) (3 c))
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say @c.map({$_.key, $_.value}).flat.roundrobin(2) 20:23
camelia [1 => a 2 => b 3 => c]
No such method 'roundrobin' for invocant of type 'Seq'
in block <unit> at <tmp> line 1
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say @c.map({$_.key, $_.value}).flat.Array.roundrobin(2)
camelia [1 => a 2 => b 3 => c]
No such method 'roundrobin' for invocant of type 'Array'
in block <unit> at <tmp> line 1
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say roundrobin( @c.map({$_.key, $_.value}).flat )
camelia [1 => a 2 => b 3 => c]
((1 a 2 b 3 c))
Xliff m: my @a = <1 2 3>; my @b = <a b c>; my @c = do for @a Z @b -> ($a, $l) { $a => $l }; say @c; say roundrobin( @c.map({$_.key, $_.value}) ) 20:24
camelia [1 => a 2 => b 3 => c]
((1 2 3) (a b c))
Xliff Elronnd: Your problem isn't the pointers, it's the naked 0s 20:35
So: our sub print_ext(int32, int32, int32, int32, int32, int32, Str, Pointer[int32], Pointer[int32]) is native("BearLibTerminal") is symbol("terminal_print_ext8") { * }; my int32 ($a, $b, $c, $d, $e, $f) = (0 xx 6); print_ext($a, $b, $c, $d, $e, $f, "Bla", $destw, $desth) 20:37
Leaving $destw and $desth as you had them. 20:38
Xliff Note that » my int32 ($a, $b, $c, $d, $e, $f) = (0 xx 6); « is the equivalent of » my int32 ($a, $b, $c, $d, $e, $f) = (0, 0, 0, 0, 0, 0); « 20:39
timotimo the default for int32 is also 0, so you can leave out the initialization if you want 20:39
Elronnd Xliff: nah, I found the issue, it was that I had the wrong number of args 20:45
I figured it out, works now
Xliff OK
[Coke] yawns. 21:22
OT: any MTG Arena players here? 21:24
lizmat www.facebook.com/groups/perl6/perm...839492696/ # perl at 35C3 21:28
[Coke] re: curly braces vs. square brackets (or parens or angle brackets) - suggestion for a word that covers the variety but isn't confusable with one of the individual kind? 22:39
[Coke] leanings towards "balanced delimiters" 22:42
reach_satori Is there something similar to beautifulsoup for perl6? 22:43
i'm trying (arduously) to learn it and a little web-scraper seems like a good first project
Geth doc: 0573fb5e69 | Coke++ | doc/Language/modules.pod6
whitespace
doc: 133c83753c | Coke++ | doc/Language/glossary.pod6
cover something that is not just a bracket
[Coke] what is beautifulsoup? 22:44
pypi.org/project/beautifulsoup4/ ?
reach_satori yes
sena_kun phew 23:08
second article is done. \o/
Xliff sena_kun++ 23:21
sena_kun Xliff, o/
by the way, I am already leaving, but if someone can grammar-wise check my Advent posts(14th and 15th), that will be very helpful. :) 23:22
o/ 23:35