»ö« 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.
AlexDaniel leont: yeah, feel free to rewrite it 00:01
leont: bisectable was also initially written in perl5
before IRC::Client module became great :)
leont Honestly, have you seen my github? I don't exactly lack projects. 00:05
Besides, I avoid web whenever I can
AlexDaniel leont: feel free to open a ticket, then 00:07
Juerd leont: It's much less surprising than the weekly being published on Wordpress :) 00:43
leont: Personally, I think it's a great example of timtowdti and being open to different solutions if they happen to fit the problem at hand.
leont: As much as Perl 6 needs dog-fooding, having actually working infrastructure is more important and these seem like good ways to achieve that 00:44
AlexDaniel no, it's not a great example of timtowdti 00:49
it's an example of perl 6 and its compiler being inferior at the time of creation of the website 00:50
if the other “way” was possible or reasonable, I'm sure that way would've been chosen
leont I didn't say it was wrong, I'm just surprised. 00:51
Unlike writing a new wordpress, this seems quite doable, if only because it has been done before in p5.
leont I also have the impression such a transition could be done in steps 01:05
Juerd Even if it's technically possible, it's unclear whether it's worth the effort 01:07
AlexDaniel: Timtowtdi doesn't mean that one way couldn't be better than another 01:08
cpan-p6_ New module released to CPAN! AttrX-Mooish (v0.5.0) by 03VRURG 03:48
SmokeMachine Am I devoiced? 04:14
MasterDuke SmokeMachine: doesn't look like it 04:16
SmokeMachine MasterDuke: ok, thanks! 04:17
m: use NativeCall; class C is repr<CStruct> { has int8 $.a }; say nativecast(C, Buf.new: 42).a 04:18
camelia 42
SmokeMachine m: use NativeCall; class C is repr<CStruct> { has Str $.a }; say nativecast(C, Buf.new: “a”.ord, 0).a 04:19
camelia (signal SEGV)
SmokeMachine How could I do that ^^?
Kaiepi i got the moar malloc panics to start happening again after reinstalling perl 6 04:20
i ran ktrace this time and found it tried to allocate 5203538026 bytes of memory in seconds 04:21
which is almost 5GB
MasterDuke Kaiepi: any idea where in moarvm it's happening? 04:32
Kaiepi no clue 04:33
i found a simpler golf to run into the issue so i'm writing up an issue for it rn
MasterDuke cool 04:34
Kaiepi disabling spesh and jit don't fix it
Kaiepi m: say [+] [1..100000000].hyper 05:16
camelia (timeout)
Kaiepi damn, guess i'll have to install 2018.12 again to see if that's a good golf or not 05:17
nope 05:23
ufobat_ tyil, would it be nice if someone adds a module to cpan that you display its repository on the chat as well? 06:44
jmerelo releasable6: status 06:55
releasable6 jmerelo, Next release will happen when it's ready. 4 blockers. 115 out of 246 commits logged (⚠ 41 warnings)
jmerelo, Details: gist.github.com/4c238eefa6584ee2bb...25e63552c9
jmerelo Really
tyil ufobat_: already requested: git.tyil.nl/perl6/app-cpan-uploadn...t/issues/1 07:04
Geth doc: 1f7e23baaf | cfa++ | doc/Language/operators.pod6
Fix broken link.
07:38
synopsebot Link: doc.perl6.org/language/operators
Geth doc/master: 5 commits pushed by (JJ Merelo)++ 08:04
holyghost .seen jmerelo 08:21
yoleaux I saw jmerelo 06:55Z in #perl6: <jmerelo> Really
holyghost I've seen that I am working on some widgets kits of SDL2, game oriented etc 08:25
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 08:50
tyil timotimo: your suggestion to peek at modules.perl6.org's code/log seems to be paying off, thanks for the tip :) 10:16
tyil progress thus far: a.uguu.se/7nIgPno2z3us_cpan.log 10:59
leont If I use a trait on a sub, I can assume that happens at compile-time/precompilation, right? 12:15
sena_kun yes, traits are compile-time, except the case when you are applying it manually, like... 12:16
`trait_mod:<is>($attr, :default($default-value));` <- call like this when run outside of "compile time zones" will be run at runtime. 12:17
cpan-p6_ 03cpan-p6_ reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 12:52
tyil I wonder why cpan-p6 keeps growing in memory use until it dies :( 12:55
lizmat weekly: www.linkedin.com/feed/update/urn:l...539159552/ 12:57
notable6 lizmat, Noted!
lizmat Google summer of code call to action ^^
tyil I got a 404 opening that link :(
sena_kun too 12:58
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot
pmurias leont: what I really think we needs with regards to modules.perl6.org is to have it display proper landing pages for modules like metacpan does
timotimo tyil: maybe you have the same thing as kaiepi? 12:59
lizmat looks like you need to be known to LinkedIn :-(
tyil I don't know what thing he had :(
pmurias leont: I'm not sure if actually adding support to metacpan for Perl 6 stuff or evolving docs perl6 or some crazy hybrid of both is a way to achieve that
lizmat weekly: www.facebook.com/groups/perl6/perm...569953756/ 13:00
notable6 lizmat, Noted!
lizmat alternate link ^^^
tyil pmurias: what info would you like to see on a proper landing page for perl 6 modules?
pmurias tyil: all the docs and info people display on the github readme 13:01
tyil doesnt modules.perl6 already show the readme on the page of a module? 13:02
pmurias tyil: plus dependencies and dependence
tyil ah
yeah, that's not on modules.perl6 yet
fwiw, once App::CPAN correctly imports the entire cpan database, I can start working on an API to expose module info 13:03
and that can then be used by a frontend web application
pmurias for some modules modules.perl6.org just links to github
Kaiepi tyil github.com/rakudo/rakudo/issues/2635
tyil Kaiepi, timotimo: that might be related, actually 13:04
from timestamps in this chat, I can deduce it took about 4 hours to claim a gigabyte of ram (which is this server's max), and in the console I see it being killed by the OOMKiller 13:05
however, I am running with latest rakudo-star
which is on moarvm 2018.10 iirc 13:06
El_Che lizmat: the linked-in page is not accessible, the facebook one is full of nagware 13:11
the internet 2019
lizmat :-( 13:12
timotimo ah, damn 13:21
tyil: are you running it on linux? in that case, heaptrack could work, though i'm not entirely sure if the actual cause of allocations will be discernable 13:22
tyil it's running on a GNU+Linux host, yes
however, it's also running in a Docker container managed by Kubernetes
timotimo oh, hmm
tyil not sure if that complicates it 13:23
timotimo i think you can build a new docker image that just runs it with heaptrack and somehow™ makes the resulting file available after the program crashes
and then use k12s's "update" mechanism
tyil musashi (other bot) has been running for 18 days without interuption 13:24
so I would assume it's me doing something in cpan-p6 I shouldn't be doing that's leaking
lizmat tyil: are your 13:25
tyil I have persistent volumes available to write logs to if needed
lizmat are you using DBIish >
tyil yes
but not in this bot :p
lizmat ah...
ok
tyil it's doing an HTTP request to nntp.perl.org to get info on latest modules, parses that, ignores modules already shouted about 13:26
git.tyil.nl/perl6/app-cpan-uploadn...Notify.pm6 that's where it's doing its magic
lizmat this looks funny to me: my %item = @heralding-queue.shift; 13:30
but I guess that works as intended 13:31
tyil its a list of hashes, so that should work, right?
I'm queueing messages so the bot doesnt get killed for spam when there's a lot of updates
lizmat yeah, looks ok... I guess I was confused by pre-GLR behaviour 13:32
tyil GLR?
lizmat Great List Refactor, before your time :-) 13:33
tyil ah
lizmat what are you trying to achieve with: whenever Supply.interval(.8).skip((10 / .8).ceiling) {
tyil wait a bit before spamming the first messages 13:34
that IRC event is triggered on connect, the bot may or may not have been joined into the channels yet
lizmat you can also specify an :in parameter with interval, afak 13:34
tyil if it start spamming to channels it has not joined yet, messages might get lost, the server might kill the bot 13:35
lizmat interval(.8, 12) would start doing .8 intervals after 12 seconds
tyil ah, it seems theres a $delay for .interval
lizmat I wouldn't be surprised if somehow that skip on the .interval would somehow be the leak 13:36
tyil I'll rebuild the image using Supply.interval(.8, 10) 13:38
(which can take a while, zef has been very slow for me lately)
lizmat yeah, it's still dependent on a slow JSON parser, among other things :-( 13:39
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 13:42
tyil updated bot
tyil and running on minion1, which is the "problematic" node with only 1gb ram 13:43
too bad k8s didn't pull the newer image, and is still using code with .skip 13:44
lizmat: I'm still at work, so I'll continue on this when I get home
lizmat tyil++
tyil thanks for looking through the code and giving feedback :)
lizmat thanks for making all of this happen (which gets us closer to a recommendation manager :-) 13:46
pmurias what would the recommendation manager do? 13:52
lizmat S22:115 13:53
synopsebot Link: design.perl6.org/S22.html#line_115
leont "You like X, you may also like Y and Z"
timotimo i think more like "you want JSON::Fast? use the one with :auth<github:timo>"
lizmat timotimo: indeed, with an option for "I trust you, give me the one that you recommend" 13:54
pmurias so the plan is that JSON::Fast might be provided by a distribution with more things insides or do we want to allow multiple people to provide JSON::Fast modules 13:58
lizmat allow multiple people to provide JSON::Fast modules 13:59
pmurias and how will the recommendation manager choose the correct one?
lizmat that's up to the recommendation manager :-) 14:00
if you implement one, you are completely free in how you recommend
tyil TIL that that's called a recommendation manager
lizmat well, it's a concept that I outlined a few years ago :-)
tyil I just wanted something to more quickly get answers to module queries :p
lizmat basically, make the Perl 5 package list pluggable 14:01
for the Perl 6 situation
lizmat so that conflicts can be solved in ways without needing to upset the whole ecosystem 14:01
so that conflicts such as JSON::XS vs Cpanel::JSON can be worked around without needing to change any code 14:03
tyil neat 14:04
I'm going to focus on having a clean DB that contains at least 90% of all perl 6 moduels from cpan
currently about 2/3rds are imported with no issue
pmurias I can imagine that can be useful at company level (so they can have their own set of patched and custom levels) but there will still be conflict who controls the main module name 14:05
lizmat pmurias: why ?
pmurias if a new user types say 'cpanm JSON::XS' cpanm needs to make a selection 14:06
lizmat but that cpanm is trusting a recommendation manager 14:07
and that recommendation manager makes the choice for you
zef currently will ask you which one you want if there is a conflict
pmurias the conflict will be in which option the "default" recommendation manager shows 14:08
tyil I don't think "casual" users will often have issues with the default recommendation they get
they oftentimes don't really care how things work, so long as it works for them (I still have that mentality most of the time)
lizmat and if you don't agree with the decision of the default recommendation manager, you find / create / augment another one
tyil for those that do care, they shoudl theoretically be able to set a different recommendatino manager 14:09
or build their own
lizmat indeed
that's the point
and if the whole Perl 6 community is using a different recommendation manager than the default one
then that's also ok :-) 14:10
cpan-p6 New module released to CPAN! EventSource-Server (0.0.4) by 03JSTOWE 14:21
leont Great. The backwards compatibility layer of the new main helpers isn't really backwards compatible. 14:23
lizmat leont: please elaborate 14:25
leont Previously I needed to analyse callframe(1), now it appears to be callframe(4) 14:27
And I'm not sure that will be stable
Guess I'll have to add a third implementation of the wiring, for the new API. 14:29
Though without a callframe, I can't really implement %*SUB-MAIN-OPTS :-/
It's just not there… 14:30
lizmat leont: can you gist what you're trying to achieve ? 14:33
leont Getopt::Long still :-) 14:34
lizmat ah....
leont github.com/Leont/getopt-long6/blob...ng.pm#L408
lizmat but how does that interfere with %*SUB-MAIN-OPTS ? 14:35
leont Oh right, that's a dynamic variable
lizmat and that's one that influences how the *standard* arg parsing works 14:36
which you're superseding with GetOpt::Long >
?
why doesn't GetOpt::Long not call MAIN itself ?
wouldn't that work ? 14:37
El_Che zmat> ah.... 14:39
lizmat ah?
El_Che :) 14:39
copy paste error 14:40
leont solved it with the new API.
lizmat *phew* :-) 14:41
leont Is there an easy way to copy all methods from one package to the other 14:59
lizmat copy? or perhaps inherit ? 15:00
leont I'm doing exports conditional on rakudo version, so «is export» won't dwim. 15:01
Need an easy way to put my helper functions in both EXPORT::DEFAULT and EXPORT::FOO
timotimo methods are not really part of a package, unless you use "is export" on actual methods 15:04
leont s/methods/functions/ 15:05
fg
(if two of them didn't have the same name, I'd just export them all and let rakudo figure it out)
timotimo you can have a sub EXPORT that does all the work, and you can iterate over packages to get all the things you need 15:06
leont It seems i was possible to mostly let rakudo figure it out itself :-) 15:17
Kaiepi i'm starting to make progress on my crypto module that takes care of the logic of block cipher modes for other cipher libraries
finished implementing ecb mode, which is probably my favourite because it has no logic hastebin.com/jahuqamocu.cpp 15:19
leont Though I'm not sure how GENERATE-USAGE is ought to be triggered from ARGS-TO_CAPTURE 15:33
Adding a «CATCH { note $*USAGE; exit(2) };» appears to do the trick, but it's a rather surprising interface. 15:38
b2gills m: use NativeCall; say nativecast(Str, Buf.new: “a”.ord, 0); # SmokeMachine, a `has Str` in a struct is a pointer to a string 15:53
camelia a
leont Though IMO that exception should be handled by rakudo 16:00
Geth doc: cfc847002a | cfa++ | doc/Language/concurrency.pod6
Markup.
16:06
synopsebot Link: doc.perl6.org/language/concurrency
ufobat_ m: <a b c>.join 16:13
camelia ( no output )
ufobat_ m: <a b c>.join.say 16:14
camelia abc
ufobat_ is the documentation wrong? because I would expect method join($seperator = '' --> Str:D) because you can leave out the seperator
?
lizmat m: dd (<a b c>.any,"c"d").join 16:16
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3dd (<a b c>.any,"c"7⏏5d").join
expecting any of:
infix
infix stopper
statement end
statement modifier
lizmat m: dd (<a b c>.any,"c","d").join
camelia any("acd", "bcd", "ccd")
lizmat join can also return a Junction
or was that not the question? 16:17
ufobat_ well i wasnt aware of that 16:17
but that makes the singature that's documented double false? 16:18
lizmat ah... :-) 16:19
well it can act as a Str :-)
ufobat_ cant you stringify almost anything?
my point was, given from the doc you can not ommit the $seperator
lizmat ah, ok, yes, you can omit and I'm fixing the doc now :) 16:20
ufobat_ ufobat_> m: <a b c>.join 16:21
( no output )
<ufobat_> m: <a b c>.join.say
abc
<ufobat_> is the documentation wrong? because I would expect method join($seperator = '' --> Str:D) because you can leave out the seperator
<ufobat_> ?
<lizmat> m: dd (<a b c>.any,"c"d").join
===SORRY!=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> dd (<a b c>.any,"c"⏏d").join
expecting any of:
infix
infix stopper
statement end
statement modifier
<lizmat> m: dd (<a b c>.any,"c","d").join
any("acd", "bcd", "ccd")
<lizmat> join can also return a Junction
<lizmat> or was that not the question?
* jast has quit (Ping timeout: 240 seconds)
<ufobat_> well i wasnt aware of that
<ufobat_> but that makes the singature that's documented double false?
<lizmat> ah... :-)
<lizmat> well it can act as a Str :-)
<ufobat_> cant you stringify almost anything?
<ufobat_> my point was, given from the doc you can not ommit the $seperator
oh fuck :( sorry
github.com/perl6/doc/issues/2586 <- that i wanted to paste
lizmat hehe...
leont Apparently returning a capture that will not match the sub will also do the trick. 16:22
So now's I'm at CATCH { note .message; return \(:this-will-not-match-anything-pinky-promise) } 16:26
Geth doc: 991c43c963 | (Elizabeth Mattijsen)++ | doc/Type/List.pod6
Document some peculiarities of join

As spotted by ufobat++ in D#2586
16:37
synopsebot Link: doc.perl6.org/type/List
synopsebot D#2586 [open]: github.com/perl6/doc/issues/2586 documented signature of join is wrong
ufobat_ lizmat, spotted a little typo 16:40
in the code, i never see mistakes in normal text :-(
Geth doc: e511bd2d00 | (Elizabeth Mattijsen)++ | doc/Type/List.pod6
Fix type, ufobat++
16:42
synopsebot Link: doc.perl6.org/type/List
cono hi all 16:54
AlexDaniel hello!
cono have question about NativeCall
is this a bug? gist.github.com/cono/180795a34179c...d71b803eac
sena_kun cono, what if you run second version with `is native(LIB())` instead of `is native(LIB)`? 16:56
cono Cannot invoke this object (REPR: Null; VMNull) 16:57
scimon `is native(LIB.())` ? 16:58
cono yeah, works
scimon m: constant CON = sub{ "Hmnmm"}; say CON;
camelia sub { }
scimon m: constant CON = sub{ "Hmnmm"}; say CON.(); 16:59
camelia Hmnmm
cono I acutally trying to run this: github.com/perl6/DBIish/blob/maste...ive.pm6#L8 in perl6 alpine container, and digged to this boilerplate
probably some regression
don't think it didn't work previosuly in this module
scimon I think assigning a sub to a constant feels weird personally. 17:00
cono so better to make merge request to DBIish with something similar to: sub LIB { NativeLibs::Searcher.at-runtime(Rakudo::Internals.IS-WIN ?? 'mysql' !! 'mysqlclient', 'mysql_init', 16..20).() } ? 17:03
sena_kun likely yes. And then it can be used like `is native(&LIB)`, at least it is what OpenSSL does. 17:04
github.com/sergot/openssl/blob/mas...Lib.pm6#L3 and then github.com/sergot/openssl/blob/mas...tx.pm6#L11 17:05
cono w/o & works for me too: perl6 -MNativeCall -e 'sub LIB { "mysqlclient" }; sub mysql_get_client_version(--> int32) is native(LIB) { * }; say mysql_get_client_version'
Geth DBIish/constant-lib-nativecall: 3311231d21 | cono++ | lib/DBDish/mysql/Native.pm6
Change constant LIB to sub LIB for NativeCall.native trait
17:14
Geth DBIish: cono++ created pull request #139:
Change constant LIB to sub LIB for NativeCall.native trait
17:18
jmerelo Hi! 17:36
cono jmerelo: o/ 17:42
jmerelo hi! 17:54
You probably know we got a submission for the Google Summer of Code going, right? 17:55
I want you all as mentors, and for proposing projects github.com/perl-gsoc-2019/ideas
moony Perl 6 being overengineered is an understatement. 18:14
literally just comments alone are difficult to handle for parsing
timotimo do you include Pod in that? 18:16
is the main problem the parenthesis pairings? 18:18
jnthn I think the comment parenthesis parsing just re-uses the normal strings with any delimiters parsing. So at least it's consistently engineered ;) 18:27
timotimo aye 18:28
ufobat_ AlexDaniel, sorry, i forgot to add documentation, did another PR :-( 18:33
but i think you dont need to update the version :)
AlexDaniel ufobat_: I asked Zoffix to transfer their modules ( github.com/zoffixznet/perl6-buggab...-456918787 ) 18:47
ufobat_: once/if that is done, let me know if you want to maintain Temp::Path, we can transfer that to you 18:48
ufobat_ i can, if you like :-)
but if someone else wants i am absolutly okay with it
AlexDaniel timotimo: plz owner level privileges so that I'd be able to move stuff around github.com/orgs/perl6-community-modules/people 18:50
moritz: ↑ actually not sure if timotimo can add me :)
moritz AlexDaniel: you are a member 19:05
AlexDaniel moritz: thanks! Uh, just to clarify, was I a member already or did you change something? Yes, I do indeed have access to the Settings page of repos, so was I just uh… being momentarily blind? 19:19
moritz AlexDaniel: I didn't change anything, so either somebody else added you in the 15 minutes between our interactions, or you missed it 19:20
though I think you get an email when you're added to a team, or something
AlexDaniel ok I definitely missed it then… sorry! 19:21
also that's probably not the first time I do that xD 19:22
moritz no problem 19:26
ufobat_ assuming I have my Str $foo; and $foo does MyRole[$whatever]. Is it possible to add the very same mixin from $foo to a new my Str $another-one? 20:05
ufobat_ the very same, because when i do so i woud not know the value$whatever 20:05
+of 20:06
timotimo it should be interned, or at least attempted :) 20:09
but you can pull the MyRole[$whatever] out into a variable
ufobat_ what do you mean with the first sentence? 20:12
timotimo if the $whatever is the same both times, rakudo is supposed to give the same result
moritz m: my Str $a; my Str $b; role A { }; say ($a does A).WHAT === ($b does A).WHAT
camelia Cannot use 'does' operator on a type object Str.
in block <unit> at <tmp> line 1
moritz m: my Str $a = 'a'; my Str $b = 'b'; role A { }; say ($a does A).WHAT === ($b does A).WHAT
camelia True
moritz ufobat_: ^^ if you mix in the same role into two Strs, it produces the exact same type again 20:13
ufobat_ ahm, yeah but i wanted to retrive the mixin of $a in order to apply it to $b, without storing it?
but i could write a method for that, as part of the mixin 20:14
so i can $a.apply-my-mixin-to($b);
ufobat_ would a potential submethod BUILD() {...} be invoked when i apply a mixin? 20:14
timotimo not exactly sure how BUILD-LEAST-DERIVED works 20:15
but that's what is used when mixing into objects
moritz m: role A { }; my Str $a = 'a' but A; my Str $b = 'b'; $b does $_ for $a.^roles; say $a.WHAT == $b.WHAT 20:16
camelia Use of uninitialized value of type Str+{A} in numeric context
True
in block <unit> at <tmp> line 1
Use of uninitialized value of type Str+{A}+{Stringy} in numeric context
in block <unit> at <tmp> line 1
moritz m: role A { }; my Str $a = 'a' but A; my Str $b = 'b'; $b does $_ for $a.^roles; say $a.WHAT === $b.WHAT 20:16
camelia False
moritz hrmpf
ufobat_ m: role MixIn[$x] { submethod BUILD {say "mixin build: $x"}; method apply($other){ $other does MixIn[$x]} }; my Str $a = <a>; $a does MixIn; my Str $b = <b>; $a.apply($b) 20:17
camelia No appropriate parametric role variant available for 'MixIn'
in block <unit> at <tmp> line 1
ufobat_ no :(
leont Apparently POD's datamodel is linear instead of hierarchical. That does make my life a bit more difficult. 20:17
ufobat_ in perl5 there was a __PACKAGE__ that i could use instead of the class/role name, thats not available in perl6, so i can fix me apply method? 20:19
timotimo there's ::?CLASS or something like that
ufobat_ there is $?ROLE 20:22
m: role MixIn[$x] { submethod BUILD {say "mixin build: $x"}; method apply($other){ say "apply to $other"; $other does ::?ROLE} }; my Str $a = <a>; $a does MixIn["yada"]; my Str $b = <b>; $a.apply($b); say $b.WHICH 20:25
camelia mixin build: yada
Could not instantiate role 'MixIn':

in any protect at gen/moar/stage2/NQPCORE.setting line 1099
in method apply at <tmp> line 1
in block <unit> at <tmp> line 1

apply to b
ufobat_ :-( nope
is this a bug? 20:28
m: role MixIn[$x] { submethod BUILD {say "mixin build: $x"}; method apply($other){ say "apply to $other"; $other does MixIn[$x]} }; my Str $a = <a>; $a does MixIn["yada"]; my Str $b = <b>; $a.apply($b); say $a.WHICH; say $b.WHICH # works 20:30
camelia mixin build: yada
apply to b
mixin build: yada
Str+{MixIn[Str]}|a
Str+{MixIn[Str]}|b
ufobat_ nice :)
and good night :)
tobs m: my $x = class { has @.nodes }.new(:nodes[5..10]); sub f ((:nodes([$, $, $_, *@]))) { .say }; f($x) 20:35
camelia 7
Kirisame Hey! I'm attempting to do some number comparisons (checking if a value is between two other values and I'm coming across an error suggestion I need an 'infix stopper'(?) I'm still pretty new to this but I was told I could do this kind of comparison like `min < $value < max`? 21:07
Gist with code sample; gist.github.com/kawaii/c422e246173...6e8126af23
gfldex lolibloggedalittle: gfldex.wordpress.com/2019/01/23/a-picky-caller/
tyil Kirisame: it looks like your control structures are incorrect 21:08
tyil you seem to be trying to do else if statements, which in perl 6 are `elsif` 21:08
I'm not allowed to post a comment with a suggestio on that gist 21:10
'You can't comment at this time — your comment contains unicode characters above 0xffff.'
Kirisame oh probably because of emoji?
strip those out
tyil yeah, did just that
can you see if that works for you? 21:11
lizmat weekly: gfldex.wordpress.com/2019/01/23/a-picky-caller/ 21:12
notable6 lizmat, Noted!
Kirisame tyil: same error, I put a comment on the gist 21:13
tyil can you tell me the output of `perl6 --version`?
Kirisame tyil: This is Rakudo Star version 2018.10 built on MoarVM version 2018.10 21:14
lizmat gfldex: s/seams/seems/
Kirisame it's 6.c
tyil hmm, that's the same version I'm running
but the code sample works on my machine
can you provide me the entire file?
Kirisame sure, I'll add a comment to the gist
tyil it might be a syntax error coming from code before it
Kirisame tyil: file added 21:15
Kirisame ah 21:15
I see
tyil you forgot a ;
Kirisame missing ;
thanks for your help :) 21:16
tyil no worries :)
gfldex lizmat: thanks 21:21
petdance Howdy Perl 6 folks. 21:37
lizmat wonders what scared petdance away 21:38
Kirisame tyil: I have one other question, my values are floating point numbers but sometimes a result can be like 0.707473183 and therefore not get 'caught' in the comparison because I was only checking for 0.71 - 0.8 (and then not get caught by the preceding check for 0.70) 21:44
Kirisame is there an easy way for me to catch all the awkward numbers like that? :) 21:45
tyil Kirisame: its because you have small gaps 21:46
you check .5 to .7, then until .71 doesn't match, but .71 to .8 match again
you first elsif should be .7 < $thing < .8 if you want to catch that value 21:47
and similar changes for the other elsifs
reading your question again, you might consider rounding the numbers up to two decimals 21:48
Kirisame: docs.perl6.org/routine/round 21:49
Kirisame I think your first suggestion has worked, needs more testing :)
tyil in your case that would be $thing .= round(.01) if you want to store the rounded value back into $thinng 21:50
I would suggest the former out of the two possibilities
tyil I can't leave a comment on the gist :( 21:53
tyil Kirisame: you can write it as such as well: p.tyil.nl/4c9x 21:54
Kirisame oh I deleted the gist, sorry :P 21:55
thanks again for your help!
tyil no worries, just had a suggestion that might be cleaner :)
Kirisame I'm going to try it out now!
Kirisame Yep, works as expected! Amazing! :D 21:59
tyil :D 22:00
glad you like it
if you're looking to get more familiar with Perl 6, someone made a very nice video tutorial recently: www.youtube.com/watch?v=l0zPwhgWTgM 22:01
Kirisame much appreciated! goodnight! :) 22:10
Kaiepi m: use NativeCall; role Foo is repr('CStruct') { sub free(::?CLASS) is native {*}; has Str $.name } 22:54
camelia 5===SORRY!5=== Error while compiling <tmp>
Too many positionals passed; expected 2 arguments but got 3
at <tmp>:1
Kaiepi 3 arguments where? 22:55
timotimo i don't think a role can be a repr 22:56
m: role Foo is repr<CStruct> { } 22:57
camelia ( no output )
timotimo hm.
Kaiepi it's the ::?CLASS specifically 22:58
m: role Foo is repr('CStruct') { has Str $.bar }
camelia ( no output )
Kaiepi m: role Foo is repr('CStruct') { has Str $.bar; sub free() is native {*} } 22:59
camelia 5===SORRY!5=== Error while compiling <tmp>
Can't use unknown trait 'is' -> 'native' in a sub declaration.
at <tmp>:1
expecting any of:
rw raw hidden-from-backtrace hidden-from-USAGE pure default
DEPRECATED inlinable n…
Kaiepi m: use NativeCall; role Foo is repr('CStruct') { has Str $.bar; sub free() is native {*} }
camelia ( no output )
Kaiepi m: use NativeCall; role Foo is repr('CStruct') { has Str $.bar; sub free(::?CLASS) is native {*} }
camelia 5===SORRY!5=== Error while compiling <tmp>
Too many positionals passed; expected 2 arguments but got 3
at <tmp>:1
timotimo aha 23:00
it comes from NativeCall in check_routine_sanity
Kaiepi ohhh 23:04
#FIXME, it's to handle case of class A { sub foo(A) is native) }, the type is not complete
shit i was relying on being able to do that
timotimo can just change NativeCall to not check the correctness of those 23:06
and rely on things exploding in subtler ways down the line if the programmer made a mistake
Kaiepi ...things did since what i was doing was already pretty questionable 23:16
Kaiepi i really need to rethink the design of this module if i can pull off making moar try to allocate 32TB of memory at once 23:30
Kaiepi ohhhh 23:34
it's a bug in the c portion of my code
dant p6: say @(@(1)) 23:34
camelia (1)
dant p6: say @(@(1), @(2)) 23:35
camelia ((1) (2))
SmokeMachine b2gills: that makes totally sense! Thank you! 23:39
dant I'm trying to resolve an apparent inconsitency: Expression [[1],[2]] is correctly a list that contains two other lists. But [[1]] is unexpectedly a list that contains the number 1. Why does the second expression not resulted in a nested list? 23:40
timotimo it's the "single argument rule"
when there's only a single thing, it'll get iterated over
because there's no , in the outer [] for the second one, there's only a single thing, and the outer [] iterates its argument to get the values from it
this makes things like [<foo bar baz>] work 23:41
dant timotimo: Thanks. I'll RTFM with this additional insight. 23:42
timotimo all you'll need is [[1],] 23:43
b2gills dant: [] is a subroutine. Specifically a subroutine by the name of &circumfix:< [ ] >. In [[1]] the outer [] sees that its only argument is already an Array, so it just returns it. Adding a comma after the inner [] makes a List where the first and only value is the inner [1]. So use [[1],] 23:51
timotimo actually i believe it does copy the inner array 23:54
m: my @outer = 1; my @inner = [@outer]; say @outer.WHICH; say @inner.WHICH
camelia Array|86129728
Array|86138744
zachk so [[1,],] would make it a list of lists? 23:55
b2gills ((1),) is a List of Lists, [[1],] is an Array of Arrays
Lists are immutable, Arrays can change
zachk i dont need double , , nested? 23:56
b2gills The comma operator makes lists